Anumite dispozitive Marshmallow sunt susceptibile la tapjacking, în cazul în care o aplicație suprapune text deasupra unui dialog de permisiune pentru a păcăli utilizatorul.
În timp ce mulți dintre noi saliveză cu noul Android Nougat pentru dispozitivele Nexus, marea majoritate a utilizatorilor sunt încă pe Android Marshmallow. O exploatare a cărei existență a fost documentată de atunci cel puțin la jumătatea anului 2015 afectează în continuare multe dispozitive Android moderne.
Aplicațiile rău intenționate pot tapjack acțiunile tale în acordându-le o permisiune pe care nu i-ați acordat-o niciodată în mod explicit. Iată cum funcționează exploit-ul.
Întoarcerea Tapjacking-ului
Imaginează-ți că deschizi Instagram și încerci să distribui o fotografie pe care ai făcut-o recent în timp ce erai în vacanță. Când selectați să vă răsfoiți galeria pentru o imagine, Instagram vă cere să îi acordați permisiunea de a vă accesa spațiul de stocare. Dar când atingeți „da”, vi se întâmpină un mesaj de eroare.
Nu puteți acorda permisiunea de stocare pentru Instagram, deoarece aveți activată o suprapunere a ecranului activă - în acest caz, una dintre numeroasele aplicații care îți colorează ecranul, astfel încât să poți folosi telefonul pe timp de noapte fără a orbi tu. Acesta este un caz al sistemului de permisiuni Android funcționează conform intenției: pentru a acorda unei aplicații o permisiune sensibilă, trebuie să dezactivați toate suprapunerile de ecran pe care le aveți pe dispozitiv.
Aplicațiile care au capacitatea de a desena peste ecranul dvs. v-ar putea păcăli pentru a le furniza date sensibile. De exemplu, o suprapunere a ecranului ar putea plasa o introducere de parolă falsă deasupra unui ecran de autentificare real pentru a vă colecta parolele. Un exploit ca acesta se numește "tapjacking" și a apărut și a fost corectat pe diverse versiuni Android de-a lungul anilor, cu unul dintre cele mai proaste exemple care durează până la Android 4.0.3. Dar recent, exploit-ul a revenit cu Modelul de permisiuni de rulare pentru Android Marshmallow.
Un dezvoltator pe nume Iwo Banaś a creat o aplicarea demonstrând exploatarea. Modul în care funcționează este destul de simplu - atunci când o aplicație afișează un dialog de permisiune, aplicația rău intenționată pe care l-ați instalat va afișa o suprapunere de sistem pentru a acoperi blocul de text al dialogului de permisiuni cu orice text vrea. Un utilizator involuntar care dă clic pe „permite” în caseta de dialog pentru permisiuni va fi păcălit să acorde o permisiune pentru care i-a fost cerută - dar pentru care cererea a fost ascunsă de vizualizarea utilizatorului. O astfel de exploatare înfrânge cu totul scopul sistemului de permisiuni Android Marshmallow, de la introducerea noul model trebuia să se asigure că utilizatorii vor avea doar permisiunile cărora le-au consimțit în mod explicit.
Acum, știu la ce te gândești. Dacă Android a detectat o suprapunere de sistem și m-ar împiedica să acord permisiuni de stocare Instagram, nu ar împiedica acest exploit să se întâmple? Raspunsul este nu, în testarea mea se pare că pe anumite dispozitive afișarea unei suprapuneri de text deasupra unui dialog de permisiune nu declanșează mecanismul de siguranță. Dezvoltatorul aplicației tapjacking proof-of-concept afirmă că exploit-ul este eficient deoarece acesta se bazează pe instalarea de către utilizator a unei aplicații rău intenționate secundare care vizează nivelul API 22 și mai jos (pre-Marshmallow). Acest lucru se datorează faptului că înainte de Android Marshmallow, toate aplicațiile au permisiuni în timpul instalării.
Bine, deci dacă sunteți pe Marshmallow, tot ce trebuie să faceți este să evitați instalarea oricăror aplicații în care nu aveți încredere și care solicită permisiunea de a desena o suprapunere, nu? Dacă modelul de permisiuni Android a funcționat așa cum a fost prevăzut inițial, ai avea dreptate. Dar de la descoperirea acestei exploit, chiar și aplicații care vizează nivelul API 23 (Marshmallow) care solicită permisiunea de suprapunere reprezintă un risc potențial.
Un gol în modelul de permisiuni?
Dacă ești unul dintre milioanele de oameni care folosesc Facebook Messenger pentru a discuta cu prietenii tăi, atunci ați întâlnit una dintre cele mai bune caracteristici ale Android - abilitatea aplicațiilor de a desena peste altele ecrane. Cât de tare este că poți avea un balon cu chat-ul tău favorit de grup Facebook, urmărește utilizatorul în partea de sus a oricărei aplicații pe care o deschid? Deși Messenger de la Facebook a adus ideea „aplicațiilor plutitoare” în mainstream, conceptul există de ceva timp în Android. Aplicațiile au putut crea suprapuneri peste aplicațiile dvs. de ceva timp, datorită existenței TYPE_SYSTEM_OVERLAY în WindowManager Android.
Înainte de Android Marshmallow, aplicațiile ar trebui să solicite o permisiune apelată SYSTEM_ALERT_WINDOW în timpul instalării, înainte de a putea afișa suprapuneri în partea de sus a ecranului. Dar acest lucru s-a schimbat odată cu introducerea modelului granular de permisiuni de rulare pentru 6.0. Utilizatorii ar trebui acum să acorde permisiuni aplicațiilor atunci când rulează aplicația, ceea ce, sperăm, ar stimula media utilizatorului să-și protejeze propriile date private de la aplicațiile care solicită în mod suspect aparent fără legătură funcțională permisiuni.
Cu toate acestea, SYSTEM_ALERT_WINDOW nu este ca alte permisiuni. Dezvoltatorii nu pot afișa o casetă de dialog pentru a solicita programatic acordarea permisiunii de către utilizatorul final, la fel ca majoritatea altor permisiuni pentru orice aplicație care vizează Marshmallow. În schimb, trebuie să navigați manual la ecranul de setări și să activați singur permisiunea. Desigur, unele aplicații, cum ar fi Facebook Messenger, vă vor ajuta pe parcursul procesului.
Google cere acest lucru de la dezvoltatori, deoarece ei au considerat permisiunea ca fiind „deosebit de sensibile."
Permisiuni speciale
Există câteva permisiuni care nu se comportă ca permisiuni normale și periculoase. SYSTEM_ALERT_WINDOW și WRITE_SETTINGS sunt deosebit de sensibile, așa că majoritatea aplicațiilor nu ar trebui să le folosească. Dacă o aplicație are nevoie de una dintre aceste permisiuni, trebuie să declare permisiunea în manifest și să trimită o intenție prin care să solicite autorizarea utilizatorului. Sistemul răspunde intenției arătând utilizatorului un ecran de gestionare detaliat.
Având în vedere ceea ce știm mai sus despre tapjacking, acest lucru are sens. Dar aici este chestia. Google nici măcar nu își urmează propriile reguli. Capturile de ecran ale Facebook Messenger care vă ghidează prin procesul de acordare a permisiunii SYSTEM_ALERT_WINDOW pe care v-am arătat-o mai sus? Acest lucru se întâmplă numai dacă instalați APK-ul din afara Magazinului Google Play. Dacă instalați o aplicație din Magazinul Google Play, Permisiunea SYSTEM_ALERT_WINDOW este acordată automat.
Google a sacrificat siguranța pentru confort
Cu mult timp înainte de Android Marshmallow, SYSTEM_ALERT_WINDOW a fost considerat un „periculos"permisiune. Cu Android Marshmallow 6.0, permisiunea a fost schimbată în semnătură|sistem|aplicație care este ceea ce le-a cerut inițial dezvoltatorilor să conducă utilizatorul la ecranul de setări pentru a acorda permisiunea. Dar cu versiunea Android 6.0.1, SYSTEM_ALERT_WINDOW a fost modificat astfel încât Magazinul Google Play ar putea acorda automat permisiuneafără a anunța utilizatorul. De ce Google a făcut această modificare nu ne este clar. Google înșiși nu a spus de ce a făcut această schimbare, ceea ce este deosebit de ciudat având în vedere limbajul despre SYSTEM_ALERT_WINDOW care încă există pe paginile lor web.
Este posibil ca destui dezvoltatori au fost supărați prin modificările inițiale aduse SYSTEM_ALERT_WINDOW, care au cerut utilizatorilor să acorde manual permisiunea pe care Google a cedat-o în tăcere și doar a acordat-o oricărei aplicații care a solicitat-o. Dar, făcând acest lucru, Google a făcut-o a sacrificat siguranța pentru comoditate. Există un motiv pentru care Google înșiși a considerat permisiunea ca fiind periculoasă pentru cel mai mult timp, pentru că este. Și existența permisiunii Marshmallow tapjacking este o dovadă suficientă a pericolelor inerente în acordarea automată a acestei permisiuni oricărei aplicații.
Această exploatare de tapjacking a fost adusă în atenția noastră abia recent, deși există de multe luni. În testarea noastră internă a dispozitivelor în cadrul echipei XDA Portal, am confirmat acest lucru exploit-ul funcționează pe multe dispozitive moderne care rulează Android Marshmallow. Iată o scurtă prezentare a dispozitivelor pe care le-am testat pe cele mai recente versiuni de software disponibile pentru fiecare dispozitiv respectiv și dacă exploit-ul tapjacking funcționează sau nu. Dispozitivele marcate cu „Vulnerabil” sunt susceptibile la o exploatare de tapjacking, în timp ce dispozitivele marcate „Nu Vulnerabil” sunt capabili să detecteze o aplicație care afișează suprapunerea și să solicite să o dezactivați înainte continuând.
- Nextbit Robin - Android 6.0.1 cu corecții de securitate din iunie - Vulnerabil
- Moto X Pure - Android 6.0 cu corecții de securitate mai - Vulnerabil
- Honor 8 - Android 6.0.1 cu corecții de securitate din iulie - Vulnerabil
- Motorola G4 - Android 6.0.1 cu corecții de securitate mai - Vulnerabil
- OnePlus 2 - Android 6.0.1 cu corecții de securitate din iunie - Nu este Vulnerabil
- Samsung Galaxy Note 7 - Android 6.0.1 cu corecții de securitate din iulie - Nu este Vulnerabil
- Google Nexus 6 - Android 6.0.1 cu corecții de securitate din august - Nu este Vulnerabil
- Google Nexus 6P - Android 7.0 cu corecții de securitate din august - Nu este Vulnerabil
Până acum, acestea sunt toate dispozitivele pe care le-am putut determina echipa să le testeze. Nu am găsit nicio corelație între versiunea patch-ului de securitate și exploit. După cum puteți spune de la noi cea mai recentă discuție privind actualizările de securitate Android, mulți oameni oricum nu rulează pe cele mai recente patch-uri de securitate și, prin urmare, sunt posibil vulnerabili la această exploatare și la altele care sunt prezentate în Buletin de securitate Android.
A merge inainte
Vă îndemnăm să testați acest exploit pe dispozitivul dvs. pentru a vedea dacă sunteți vulnerabil. Am compilat APK-urile din codul sursă legat mai sus (puteți face acest lucru și dvs.) și le-ați încărcat pe AndroidFileHost. Pentru a testa exploit-ul, trebuie să instalați atât aplicația principală de tapjacking precum și a acestuia serviciu de ajutor. Apoi, pur și simplu rulați aplicația principală și faceți clic pe butonul „test”. Dacă o casetă de text plutește deasupra casetei de dialog de permisiune și când faceți clic pe „permiteți” apare o listă a persoanelor de contact ale dispozitivului dvs., atunci dispozitivul dvs. este vulnerabil la blocare. Nu vă faceți griji că caseta de text plutitoare nu acoperă în întregime dialogul de permisiune, această aplicație de dovadă a conceptului nu este menită să demonstreze perfect cum să deturneze cu grijă un dialog de permisiuni, ci mai degrabă să demonstreze că este într-adevăr posibil.
Sperăm că va fi introdusă o remediere care corectează acest exploit pe toate dispozitivele Marshmallow și că OEM-urile își actualizează toate dispozitivele la cel mai recent patch de securitate. Pentru că realitatea este că va dura multe luni pentru ca majoritatea dispozitivelor promise să obțină Nougat, deci singura modalitate pentru majoritatea utilizatorii pentru a rămâne departe de pericol este fie să instaleze cele mai recente corecții de securitate, fie să ia permisiunile aplicației de monitorizare înșiși. Dar odată cu decizia Google de a acorda automat permisiunea SYSTEM_ALERT_WINDOW potențial periculoasă, mulți utilizatorii rulează fără să știe aplicații care le-ar putea deturna telefoanele pentru a oferi tot mai periculoase permisiuni.