Vulnerabilitatea Janus permite atacatorilor să modifice aplicațiile fără a le afecta semnăturile. A fost descoperit de GuardSquare și a fost remediat de Google.
Android este instalat pe un număr foarte mare de dispozitive, ceea ce îl face o țintă pentru atacatorii rău intenționați. Vulnerabilitățile în sistemul de operare mobil Google continuă să fie descoperite în fiecare lună, dar vestea bună este că Google este de obicei sârguincios în a le remedia în patch-uri de securitate obișnuite, care sunt apoi oferite OEM-urilor, care apoi le expediază către dispozitive.
Recent, cercetătorii de securitate au descoperit o vulnerabilitate care a păcălit utilizatorii să le permită atacatorilor să înregistreze ecranul dispozitivului lor. Acea exploatare specială a fost remediată în Android Oreo, dar analiştii la GuardSquare a raportat recent o altă vulnerabilitate gravă care afectează aplicațiile Android semnate de o schemă de semnătură mai veche.
GuardSquareraportul lui afirmă că Ianusvulnerabilitate
(CVE-2017-13156) în Android permite atacatorilor să modifice codul în aplicații fără a le afecta semnăturile. Raportul continuă să spună că rădăcina vulnerabilității este că un fișier poate fi un fișier APK valid și un fișier DEX valid în același timp.Janus profită de faptul că octeții suplimentari trec neobservați în fișierele APK și DEX. The GuardSquare raportul explică că un fișier APK este o arhivă ZIP care poate conține octeți arbitrari la început, înainte și între intrările sale ZIP. Schema de semnătură JAR ia în considerare doar intrările ZIP, ignorând orice octeți suplimentari atunci când se calculează sau se verifică semnătura aplicației.
Se explică în continuare că un fișier DEX, pe de altă parte, poate conține octeți arbitrari la sfârșit - după secțiunile obișnuite de șiruri de caractere, clase, definiții de metode etc. Prin urmare, un fișier poate fi un fișier APK valid și un fișier DEX valid în același timp.
GuardSquare de asemenea, menționează că un element cheie al vulnerabilității este o caracteristică „inofensivă” a mașinii virtuale Dalvik/ART. Raportul afirmă că, în teorie, timpul de execuție Android încarcă fișierul APK, extrage fișierul DEX și apoi rulează codul acestuia. Cu toate acestea, în practică, mașina virtuală (VM) poate încărca și executa atât fișiere APK, cât și fișiere DEX. Problema este că atunci când VM primește un fișier APK, se uită în continuare la octeții magici din antet pentru a decide ce tip de fișier este: DEX sau APK. La găsirea unui antet DEX, acesta încarcă fișierul ca fișier DEX. Dacă nu găsește un antet, încarcă fișierul ca fișier APK care conține o intrare zip cu un fișier DEX. Astfel, poate interpreta greșit fișierele duble DEX/APK.
GuardSquare spune că un atacator poate folosi această caracteristică de dualitate a VM pentru a adăuga un fișier DEX rău intenționat la un fișier APK normal, fără a-i afecta semnătura. Runtime Android va accepta fișierul APK ca o actualizare validă a unei versiuni legitime de aplicație anterioară, dar Dalvik VM va încărca codul din fișierul DEX, care a fost injectat cu cod rău intenționat.
În mod normal, ori de câte ori un utilizator instalează o versiune actualizată a unei aplicații, semnătura aplicației este verificată de runtime Android pentru a se asigura că se potrivește cu versiunea mai veche. Când verificarea este pozitivă, aplicația actualizată primește permisiunile care au fost acordate aplicației inițiale. În acest fel, atacatorii pot folosi vulnerabilitatea Janus pentru a ocoli procesul de verificare a semnăturii și pentru a obține codul neverificat instalat pe dispozitivele utilizatorilor nebănuiți.
Ceea ce este și mai rău este că acest cod neverificat poate avea acces la permisiuni puternice. Acest lucru dă naștere unor posibilități severe. GuardSquare afirmă:
„Un atacator poate înlocui o aplicație de încredere cu privilegii mari (o aplicație de sistem, de exemplu) cu o actualizare modificată pentru a abuza de permisiunile sale. În funcție de aplicația vizată, acest lucru ar putea permite hackerului să acceseze informațiile sensibile stocate pe dispozitiv sau chiar să preia complet dispozitivul. Alternativ, un atacator poate trece o clonă modificată a unei aplicații sensibile ca o actualizare legitimă [care] poate arăta și se poate comporta ca aplicația originală, dar poate injecta un comportament rău intenționat.”
Compania a adăugat că până acum, nu au văzut nicio aplicație care să exploateze Janus în sălbăticie. Cealaltă veste bună este că vulnerabilitatea necesită ca un utilizator să instaleze o actualizare rău intenționată dintr-o sursă din afara Magazinului Google Play. Prin urmare, utilizatorii care limitează instalările de aplicații la Magazinul Play sunt protejați.
Vulnerabilitatea Janus afectează dispozitivele care rulează Android 5.0+. Aplicațiile care au fost semnate cu schema de semnătură APK v1 sunt afectate. APK-urile semnate cu schema de semnătură v2 sunt protejate împotriva vulnerabilității. Acest lucru necesită ca APK-urile să ruleze pe dispozitive care acceptă cea mai recentă schemă de semnătură (Android 7.0 și mai nou). Schema v2 este protejată deoarece, spre deosebire de schema v1, ia în considerare toți octeții din fișierul APK.
„Versiunile mai vechi de aplicații și aplicațiile mai noi care rulează pe dispozitive mai vechi rămân susceptibile. Dezvoltatorii ar trebui să aplice cel puțin întotdeauna schema de semnătură v2.” GuardSquare state.
GuardSquare a raportat această problemă la Google pe 31 iulie 2017 și a primit confirmare în aceeași zi. Raportul companiei spune că Google a lansat un patch pentru partenerii săi în noiembrie și a publicat eroarea (CVE-2017-13156) în Buletinul de securitate Android pe 4 decembrie 2017. Vulnerabilitatea are a fost remediat în corecția de securitate Android din decembrie 2017. Separat, aplicațiile F-Droid din depozitul lor oficial au fost confirmate ca fiind sigure. În cele din urmă, s-a confirmat că vulnerabilitatea a fost corectată APKMirror.
Sursa: GuardSquare