Nekatere naprave Marshmallow so dovzetne za prisluškovanje, kjer aplikacija prekriva besedilo na vrhu pogovornega okna za dovoljenja, da bi pretentala uporabnika.
Medtem ko se mnogi od nas slinijo nad novo izdanim Androidom Nougat za naprave Nexus, velika večina uporabnikov še vedno uporablja Android Marshmallow. Izkoriščanje, katerega obstoj je bil od takrat dokumentiran vsaj sredi leta 2015 še vedno vpliva na številne sodobne naprave Android.
Zlonamerne aplikacije lahko tapjack vaša dejanja v da jim podelite dovoljenje, ki ga niste nikoli izrecno podelili. Evo, kako deluje izkoriščanje.
Vrnitev kramljanja pipe
Predstavljajte si, da odprete Instagram in poskusite deliti sliko, ki ste jo pred kratkim posneli med dopustom. Ko izberete brskanje po galeriji za sliko, vas Instagram prosi, da mu dovolite dostop do vašega prostora za shranjevanje. Toda ko tapnete »da«, se prikaže sporočilo o napaki.
Ne morete odobriti dovoljenja za shranjevanje za Instagram, ker imate omogočeno aktivno prekrivanje zaslona – v ta etui je ena od mnogih aplikacij, ki obarvajo vaš zaslon, tako da lahko ponoči uporabljate svoj telefon, ne da bi ga zaslepili sebe. To je primer sistema dovoljenj Android
deluje, kot je predvideno: če želite aplikaciji dodeliti občutljivo dovoljenje, morate onemogočiti vse prekrivne zaslone, ki jih imate v napravi.Aplikacije, ki imajo možnost risanja po vašem zaslonu, bi vas lahko zavedle, da bi jim posredovali občutljive podatke. Na primer, prekrivanje zaslona bi lahko postavilo vnos lažnega gesla na vrh pravega prijavnega zaslona, da bi zbral vaša gesla. Izkoriščanje, kot je ta, se imenuje 'tapjacking' in se je skozi leta pojavljal in popravljal na različnih različicah Androida, z eden najslabših primerov, ki traja do Androida 4.0.3. Toda pred kratkim se je podvig vrnil z Model dovoljenj za čas izvajanja za Android Marshmallow.
Razvijalec z imenom Iwo Banaś ustvaril aplikacija demonstracija podviga. Način delovanja je dokaj preprost – ko aplikacija prikaže pogovorno okno za dovoljenja, zlonamerna aplikacija ki ste ga namestili, bo prikazano sistemsko prekrivanje, ki bo prekrilo besedilni blok pogovornega okna za dovoljenja s kakršnim koli besedilom želi. Nevede uporabnik, ki klikne "dovoli" v pogovornem oknu za dovoljenja, bo zaveden v odobritev dovoljenja, za katero so ga prosili - vendar je bila zahteva skrita pred uporabnikovim pogledom. Takšno izkoriščanje popolnoma premaga namen sistema dovoljenj Androida Marshmallow od uvedbe novi model naj bi zagotovil, da bodo uporabniki imeli samo dovoljenja, s katerimi so izrecno privolili.
Zdaj vem, kaj misliš. Če bi Android zaznal prekrivanje sistema in mi preprečil dodelitev dovoljenj za shranjevanje v Instagramu, ali ne bi preprečil tega izkoriščanja? Odgovor je ne, se pri mojem testiranju zdi, da na nekaterih napravah prikaz prekrivnega besedila na vrhu pogovornega okna za dovoljenja ne sproži varnostnega mehanizma. Razvijalec proof-of-concept tapjacking aplikacije navaja, da je izkoriščanje učinkovito, ker se zanaša na to, da uporabnik namesti sekundarno zlonamerno aplikacijo, ki cilja na raven API 22 in nižje (pred Marshmallow). To je posledica dejstva, da so pred Androidom Marshmallow vse aplikacije med namestitvijo dobile dovoljenja.
V redu, torej če uporabljate Marshmallow, se morate izogibati nameščanju aplikacij, ki jim ne zaupate in zahtevajo dovoljenje za risanje prekrivanja, kajne? Če bi Androidov model dovoljenj deloval, kot je bilo prvotno zastavljeno, bi imeli prav. Toda od odkritja tega podviga, celo aplikacije, ki ciljajo na API raven 23 (Marshmallow), ki zahtevajo dovoljenje za prekrivanje, predstavljajo potencialno tveganje.
Vrzel v modelu dovoljenj?
Če ste eden izmed mnogih milijonov ljudi, ki uporabljajo Facebook Messenger za klepetanje s prijatelji, potem ste naleteli na eno najboljših funkcij Androida – možnost, da aplikacije rišejo poleg drugih zasloni. Kako kul je, da imate lahko oblaček s svojim najljubšim skupinskim klepetom na Facebooku, ki sledi uporabniku na vrhu katere koli aplikacije, ki jo odpre? Čeprav je Facebookov Messenger idejo o "lebdečih aplikacijah" prinesel v mainstream, koncept že nekaj časa obstaja v Androidu. Aplikacije že nekaj časa lahko ustvarjajo prekrivke na vrhu vaših aplikacij, zahvaljujoč obstoju TYPE_SYSTEM_OVERLAY v Androidovem upravitelju oken.
Pred Androidom Marshmallow bi morale aplikacije zahtevati dovoljenje, imenovano SYSTEM_ALERT_WINDOW med namestitvijo, preden bi lahko prikazal prekrivke na vrhu zaslona. Toda to se je spremenilo z uvedbo granularnega modela dovoljenj za čas izvajanja 6.0. Uporabniki bi morali zdaj odobriti dovoljenja aplikacijam, ko dejansko izvajajo aplikacijo, kar bi upajmo spodbudilo povprečje uporabnika v varovanje lastnih zasebnih podatkov pred aplikacijami, ki sumljivo zahtevajo na videz funkcionalno nepovezane dovoljenja.
Vendar SYSTEM_ALERT_WINDOW ni kot druga dovoljenja. Razvijalci ne morejo prikazati pogovornega okna, s katerim bi programsko zahtevali, da končni uporabnik podeli dovoljenje, tako kot večina drugih dovoljenj za katero koli aplikacijo, ki cilja na Marshmallow. Namesto tega se morate ročno pomakniti do zaslona z nastavitvami in sami omogočiti dovoljenje. Seveda vam bodo pri tem pomagale nekatere aplikacije, kot je Facebook Messenger.
Google to zahteva od razvijalcev, ker menijo, da je dovoljenje "posebej občutljiva."
Posebna dovoljenja
Obstaja nekaj dovoljenj, ki se ne obnašajo kot običajna in nevarna dovoljenja. SYSTEM_ALERT_WINDOW in WRITE_SETTINGS sta še posebej občutljiva, zato ju večina aplikacij ne bi smela uporabljati. Če aplikacija potrebuje eno od teh dovoljenj, mora dovoljenje prijaviti v manifestu in poslati namen, ki zahteva avtorizacijo uporabnika. Sistem se na namero odzove tako, da uporabniku prikaže podroben zaslon za upravljanje.
Glede na to, kar vemo zgoraj o kraji pipe, je to smiselno. Ampak tukaj je stvar. Google ne sledi niti lastnim pravilom. Posnetki zaslona Facebook Messengerja, ki vas vodijo skozi postopek odobritve dovoljenja SYSTEM_ALERT_WINDOW, ki sem vam ga pokazal zgoraj? To se zgodi le, če APK namestite zunaj trgovine Google Play. Če namestite aplikacijo iz trgovine Google Play, se Dovoljenje SYSTEM_ALERT_WINDOW je samodejno podeljeno.
Google je zaradi udobja žrtvoval varnost
Dolgo časa pred Androidom Marshmallow je SYSTEM_ALERT_WINDOW veljal za "nevarno"dovoljenje. Z Androidom Marshmallow 6.0 je bilo dovoljenje spremenjeno v podpis|sistem|aplikacija kar je prvotno od razvijalcev zahtevalo, da uporabnika vodijo do zaslona z nastavitvami, da podelijo dovoljenje. Toda z različico Android 6.0.1, SYSTEM_ALERT_WINDOW je bilo spremenjeno tako da trgovina Google Play lahko samodejno dodeli dovoljenjebrez obvestila uporabnika. Zakaj je Google naredil to spremembo, nam ni jasno. Google se ni oglasil in navedel, zakaj je naredil to spremembo, kar je še posebej čudno glede na jezik o SYSTEM_ALERT_WINDOW, ki še vedno obstaja na njihovih spletnih straneh.
Možno je, da dovolj razvijalcev je bilo jeznih z začetnimi spremembami SYSTEM_ALERT_WINDOW, ki so od uporabnikov zahtevale, da ročno podelijo dovoljenje, ki ga je Google tiho prepustil in ga dodelil vsaki aplikaciji, ki je to zahtevala. Toda pri tem ima Google žrtvovali varnost zaradi udobja. Obstaja razlog, zakaj je Google sam menil, da je dovoljenje najdlje nevarno, saj je. In obstoj izkoriščanja dovoljenj Marshmallow je dovolj dokazov o inherentnih nevarnostih pri samodejnem podeljevanju tega dovoljenja kateri koli aplikaciji.
Na to kramljanje prisluškovanj smo bili pozorni šele pred kratkim, čeprav obstaja že več mesecev. V našem internem testiranju naprav med ekipo portala XDA smo to potrdili izkoriščanje deluje na številnih sodobnih napravah s sistemom Android Marshmallow. Tukaj je kratek pregled naprav, ki smo jih preizkusili na najnovejših razpoložljivih različicah programske opreme za vsako zadevno napravo, in o tem, ali izkoriščanje tapnjakov deluje ali ne. Naprave z oznako »Ranljive« so dovzetne za zlorabo prisluškovanja, medtem ko so naprave z oznako »Ni Vulnerable« lahko zaznajo aplikacijo, ki prikazuje prekrivanje, in zahtevajo, da jo pred tem onemogočite nadaljevanje.
- Nextbit Robin - Android 6.0.1 z junijskimi varnostnimi popravki - Ranljiv
- Moto X Pure - Android 6.0 z majskimi varnostnimi popravki - Ranljiv
- Honor 8 - Android 6.0.1 z julijskimi varnostnimi popravki - Ranljiv
- Motorola G4 - Android 6.0.1 z majskimi varnostnimi popravki - Ranljiv
- OnePlus 2 - Android 6.0.1 z junijskimi varnostnimi popravki - Ni ranljiv
- Samsung Galaxy Note 7 - Android 6.0.1 z julijskimi varnostnimi popravki - Ni ranljiv
- Google Nexus 6 - Android 6.0.1 z avgustovskimi varnostnimi popravki - Ni ranljiv
- Google Nexus 6P - Android 7.0 z avgustovskimi varnostnimi popravki - Ni ranljiv
Zaenkrat so to vse naprave, ki sem jih ekipi uspelo preizkusiti. Nisem mogel najti nobene povezave med različico varnostnega popravka in izkoriščanjem. Kot lahko razberete iz našega zadnja razprava o varnostnih posodobitvah za Android, veliko ljudi tako ali tako ne uporablja najnovejših varnostnih popravkov in so zato morda ranljivi za to izkoriščanje in druge, ki so opisani na Varnostni bilten za Android.
Premikanje naprej
Pozivamo vas, da sami preizkusite to izkoriščanje na svoji napravi in ugotovite, ali ste ranljivi. APK-je smo sestavili iz izvorna koda, povezana zgoraj (to lahko storite tudi sami) in jih naložili v AndroidFileHost. Če želite preizkusiti izkoriščanje, morate namestiti oba glavna aplikacija za prisluškovanje kot tudi njegovo pomočniški servis. Nato preprosto zaženite glavno aplikacijo in kliknite na gumb "test". Če besedilno polje lebdi na vrhu pogovornega okna za dovoljenja in ko kliknete »dovoli«, se prikaže seznam stikov vaše naprave, je vaša naprava ranljiva za vgrajevanje. Naj vas ne skrbi, da lebdeče polje z besedilom ne pokriva v celoti pogovornega okna za dovoljenja, ta aplikacija za dokaz koncepta ni namenjen popolnemu prikazu, kako lepo ugrabiti pogovorno okno z dovoljenji, temveč dokazati, da je res mogoče.
Upamo, da bo uveden popravek, ki popravi to izkoriščanje na vseh napravah Marshmallow, in da proizvajalci originalne opreme posodobijo vse svoje naprave na najnovejši varnostni popravek. Ker v resnici bo trajalo več mesecev, da bo večina obljubljenih naprav dobila Nougat, kar je edini način za večino da se uporabniki izogibajo nevarnosti, je, da bodisi namestijo najnovejše varnostne popravke ali vzamejo dovoljenja za nadzorno aplikacijo sebe. Toda z Googlovo odločitvijo, da samodejno dodeli potencialno nevarno dovoljenje SYSTEM_ALERT_WINDOW, mnogi uporabniki nevede poganjajo aplikacije, ki bi lahko potencialno ugrabile njihove telefone in tako zagotovile večjo in bolj nevarno dovoljenja.