Tapjacking se vratio u Android Marshmallow, a nitko to nije primijetio

Određeni Marshmallow uređaji podložni su tapjackingu, pri čemu aplikacija prekriva tekst na vrhu dijaloškog okvira dopuštenja kako bi prevarila korisnika.

Dok mnogi od nas sline nad nedavno objavljenim Android Nougatom za Nexus uređaje, velika većina korisnika još uvijek koristi Android Marshmallow. Iskorištavanje čije je postojanje od tada dokumentirano barem sredinom 2015 još uvijek utječe na mnoge moderne Android uređaje.

Zlonamjerne aplikacije mogu slavina svoje radnje u dajući im dozvolu koju nikada niste izričito dali. Evo kako eksploatacija funkcionira.


Povratak krađe tapkanja

Zamislite da otvorite Instagram i pokušate podijeliti sliku koju ste nedavno snimili dok ste bili na odmoru. Kada odaberete pregledavanje svoje galerije u potrazi za slikom, Instagram od vas traži dopuštenje za pristup vašoj pohrani. Ali kada dodirnete "da", pojavit će vam se poruka o pogrešci.

Ne možete dati dopuštenje za pohranu za Instagram jer vam je omogućeno aktivno preklapanje zaslona ovaj slučaj, jedna od mnogih aplikacija koje zatamnjuju vaš zaslon tako da možete koristiti svoj telefon noću bez zasljepljivanja sami. Ovo je slučaj Android sustava dopuštenja

radi kako je predviđeno: kako biste aplikaciji dodijelili osjetljivu dozvolu, morate onemogućiti sva preklapanja zaslona koja imate na svom uređaju.

Prisluškivanje dopuštenja Marshmallow. Dodirom na "Dopusti" prikazat će se svi moji kontakti.

Aplikacije koje imaju mogućnost crtanja preko vašeg zaslona mogle bi vas potencijalno prevariti da mu date osjetljive podatke. Na primjer, preklapanje zaslona može postaviti unos lažne lozinke na vrh stvarnog zaslona za prijavu kako bi se prikupile vaše lozinke. Ovakav exploit se zove 'tapkanje' i pojavio se i zakrpao na raznim verzijama Androida tijekom godina, s jedan od najgorih primjera koji traje do Androida 4.0.3. Ali nedavno se eksploatacija vratila s Model dopuštenja za vrijeme izvođenja za Android Marshmallow.

Programer pod imenom Iwo Banaś stvorio je primjena demonstrirajući iskorištavanje. Način na koji to radi prilično je jednostavan - kada aplikacija prikaže dijaloški okvir dopuštenja, zlonamjerna aplikacija koji ste instalirali prikazat će sistemski sloj kako bi prekrio tekstualni blok dijaloškog okvira dopuštenja bilo kojim tekstom želi. Nesvjesni korisnik koji klikne "dopusti" u dijaloškom okviru dopuštenja bit će prevaren da odobri dopuštenje koje je od njega traženo - ali za koje je zahtjev skriven od pogleda korisnika. Takvo iskorištavanje u potpunosti poražava svrhu sustava dopuštenja Androida Marshmallowa od uvođenja novi je model trebao osigurati da korisnici imaju samo dopuštenja na koja su izričito pristali.

Sad, znam na što misliš. Kad bi Android otkrio preklapanje sustava i spriječio me da dam dopuštenja za pohranu Instagramu, ne bi li spriječio ovaj exploit? Odgovor je ne, u mom testiranju čini se da na određenim uređajima prikazivanje tekstualnog sloja na vrhu dijaloškog okvira dopuštenja ne pokreće sigurnosni mehanizam. Programer proof-of-concept tapjacking aplikacije navodi da je exploit učinkovit jer oslanja se na to da korisnik instalira sekundarnu zlonamjernu aplikaciju koja cilja API razinu 22 i nižu (pre-Marshmallow). To je zbog činjenice da su prije Androida Marshmallow sve aplikacije dobivale dopuštenja tijekom instalacije.

U redu, dakle, ako ste na Marshmallowu, sve što biste trebali učiniti je izbjegavati instaliranje aplikacija kojima ne vjerujete, a koje traže dopuštenje za crtanje preklapanja, zar ne? Da Androidov model dopuštenja radi kako je izvorno postavljeno, bili biste u pravu. Ali od otkrića ovog podviga, čak i aplikacije koje ciljaju API razinu 23 (Marshmallow) koji zahtijevaju dopuštenje za preklapanje potencijalni su rizik.


Praznina u modelu dopuštenja?

Tipične aplikacije koje koriste slojeve. Preko: Srednji

Ako ste jedan od mnogih milijuna ljudi koji koriste Facebook Messenger za razgovor sa svojim prijateljima, onda ste naišli na jednu od najboljih značajki Androida - mogućnost da aplikacije crtaju iznad drugih ekrani. Kako je cool što možete imati oblačić sa svojim omiljenim Facebook grupnim chatom koji prati korisnika na vrhu svake aplikacije koju otvori? Iako je Facebook Messenger uveo ideju "plutajućih aplikacija" u mainstream, koncept postoji već neko vrijeme u Androidu. Aplikacije već neko vrijeme mogu stvarati preklapanja na vašim aplikacijama zahvaljujući postojanju TYPE_SYSTEM_OVERLAY u Androidovom WindowManageru.

Izbornik dopuštenja "Crtanje preko drugih aplikacija".

Prije Androida Marshmallow, aplikacije bi trebale zatražiti dopuštenje tzv SYSTEM_ALERT_WINDOW tijekom instalacije prije nego što je mogao prikazati slojeve na vrhu vašeg zaslona. Ali to se promijenilo uvođenjem granularnog modela dopuštenja za vrijeme izvođenja verzije 6.0. Korisnici bi sada morali davati dopuštenja aplikacijama kada stvarno pokreću aplikaciju, što bi, nadamo se, potaknulo prosjek korisnika u zaštitu vlastitih privatnih podataka od aplikacija koje sumnjivo zahtijevaju naizgled funkcionalno nepovezane dozvole.

Međutim, SYSTEM_ALERT_WINDOW nije poput ostalih dozvola. Razvojni programeri ne mogu prikazati dijaloški okvir za programski zahtjev da krajnji korisnik odobri dopuštenje, kao većina drugih dopuštenja za bilo koju aplikaciju koja cilja Marshmallow. Umjesto toga, morate ručno otići do zaslona s postavkama i sami omogućiti dopuštenje. Naravno, neke aplikacije poput Facebook Messengera pomoći će vam u tom procesu.

Google ovo zahtijeva od programera jer su dopuštenje smatrali "posebno osjetljiva."

Posebna dopuštenja

Postoji nekoliko dopuštenja koja se ne ponašaju kao normalna i opasna dopuštenja. SYSTEM_ALERT_WINDOW i WRITE_SETTINGS posebno su osjetljivi, pa ih većina aplikacija ne bi trebala koristiti. Ako aplikacija treba jedno od ovih dopuštenja, mora deklarirati dopuštenje u manifestu i poslati namjeru tražeći autorizaciju korisnika. Sustav odgovara na namjeru prikazivanjem detaljnog upravljačkog zaslona korisniku.

S obzirom na ono što gore znamo o krađi, ovo ima smisla. Ali evo u čemu je stvar. Google čak ne slijedi vlastita pravila. Snimke zaslona Facebook Messengera koje vas vode kroz postupak davanja dopuštenja SYSTEM_ALERT_WINDOW koje sam vam pokazao gore? To se događa samo ako instalirate APK izvan trgovine Google Play. Ako instalirate aplikaciju iz trgovine Google Play, SYSTEM_ALERT_WINDOW dozvola se automatski dodjeljuje.

Datoteka manifesta Facebook Messengera. Aplikaciji se automatski dodijeli dopuštenje za preklapanje unatoč ciljanju API razine 23.

Google je žrtvovao sigurnost radi praktičnosti

Dugo vremena prije Android Marshmallowa, SYSTEM_ALERT_WINDOW se smatrao "opasno" dopuštenje. S Androidom Marshmallow 6.0 dopuštenje je promijenjeno u potpis|sustav|apl što je u početku zahtijevalo od programera da dovedu korisnika do zaslona s postavkama kako bi dali dopuštenje. Ali s verzijom Androida 6.0.1, SYSTEM_ALERT_WINDOW je izmijenjen tako da Google Play Store mogao automatski dati dopuštenjebez obavijesti korisnika. Nije nam jasno zašto je Google napravio ovu promjenu. Sam Google nije se oglasio i naveo zašto je napravio ovu promjenu, što je posebno čudno s obzirom na jezik o SYSTEM_ALERT_WINDOW koji još uvijek postoji na njihovim web stranicama.

Moguće je da dovoljno se programera naljutilo početnim promjenama u SYSTEM_ALERT_WINDOW koje su zahtijevale od korisnika da ručno daju dopuštenje koje je Google tiho odstupio i jednostavno ga dodijelio svakoj aplikaciji koja ga je zatražila. Ali pritom Google ima žrtvovana sigurnost radi praktičnosti. Postoji razlog zašto su Google sami smatrali dopuštenje opasnim najduže vrijeme, jer ono i jest. A postojanje Marshmallow permission tapjacking exploita dovoljan je dokaz inherentnih opasnosti u automatskom dodjeljivanju ovog dopuštenja bilo kojoj aplikaciji.

Na ovaj pothvat krađe tek smo nedavno skrenuli pozornost iako postoji već mnogo mjeseci. U našem internom testiranju uređaja među timom XDA Portala to smo i potvrdili iskorištavanje radi na mnogim modernim uređajima koji koriste Android Marshmallow. Ovdje je kratak pregled uređaja koje smo testirali na najnovijim dostupnim verzijama softvera za svaki pojedini uređaj i radi li ili ne iskorištavanje krađe. Uređaji označeni kao "Ranjivi" podložni su napadu prisluškivanja, dok su uređaji označeni kao "Nije Vulnerable" mogu otkriti aplikaciju koja prikazuje preklapanje i zatražiti da je prije onemogućite nastavljajući.

  • Nextbit Robin - Android 6.0.1 sa lipanjskim sigurnosnim zakrpama - Ranjiv
  • Moto X Pure - Android 6.0 sa svibanjskim sigurnosnim zakrpama - Ranjiv
  • Honor 8 - Android 6.0.1 sa srpanjskim sigurnosnim zakrpama - Ranjiv
  • Motorola G4 - Android 6.0.1 sa svibanjskim sigurnosnim zakrpama - Ranjiv
  • OnePlus 2 - Android 6.0.1 sa lipanjskim sigurnosnim zakrpama - Nije ranjiv
  • Samsung Galaxy Note 7 - Android 6.0.1 sa srpanjskim sigurnosnim zakrpama - Nije ranjiv
  • Google Nexus 6 - Android 6.0.1 sa sigurnosnim zakrpama za kolovoz - Nije ranjiv
  • Google Nexus 6P - Android 7.0 sa sigurnosnim zakrpama za kolovoz - Nije ranjiv

Do sada su to svi uređaji koje sam uspio natjerati na testiranje tima. Nisam mogao pronaći nikakvu korelaciju između verzije sigurnosne zakrpe i iskorištavanja. Kao što možete zaključiti iz našeg najnovija rasprava o sigurnosnim ažuriranjima Androida, mnogi ljudi ionako ne rade na najnovijim sigurnosnim zakrpama, pa su stoga možda ranjivi na ovaj exploit i druge koji su navedeni na Androidov sigurnosni bilten.


Ići naprijed

Tapjacking usluga dobila dopuštenje za preklapanje

Potičemo vas da sami testirate ovu eksploataciju na svom uređaju kako biste vidjeli jeste li ranjivi. Sastavili smo APK-ove iz izvorni kod povezan gore (možete to učiniti i sami) i učitali ih na AndroidFileHost. Kako biste testirali exploit, trebate instalirati oba glavna aplikacija za tapjacking kao i njegova pomoćna služba. Zatim jednostavno pokrenite glavnu aplikaciju i kliknite na gumb "test". Ako tekstni okvir lebdi na vrhu dijaloškog okvira dopuštenja i kada kliknete "dopusti" pojavi se popis kontakata vašeg uređaja, tada je vaš uređaj osjetljiv na krađu. Ne brinite o tome da plutajući tekstni okvir ne pokriva u potpunosti dijaloški okvir dopuštenja, ova aplikacija za dokaz koncepta nije namijenjen savršenoj demonstraciji kako uredno preoteti dijaloški okvir dopuštenja, već radije dokazivanju da je to doista moguće.

Nadamo se da je uveden popravak koji će zakrpati ovaj exploit na svim Marshmallow uređajima i da će OEM-ovi ažurirati sve svoje uređaje na najnoviju sigurnosnu zakrpu. Jer realnost je da će većini obećanih uređaja trebati mnogo mjeseci da dobiju Nougat, što je jedini način za većinu da se korisnici izbjegnu od opasnosti jest ili instalirati najnovije sigurnosne zakrpe ili uzeti dopuštenja aplikacije za nadzor se. Ali s Googleovom odlukom da automatski odobri dopuštenje potencijalno opasnom SYSTEM_ALERT_WINDOW, mnogi korisnici nesvjesno pokreću aplikacije koje bi potencijalno mogle preoteti njihove telefone i učiniti sve opasnijim dozvole.