Janus Exploit consente agli aggressori di modificare le app senza incidere sulle firme

La vulnerabilità Janus consente agli aggressori di modificare le app senza compromettere le loro firme. È stato scoperto da GuardSquare ed è stato corretto da Google.

Android è installato su un numero enorme di dispositivi e ciò lo rende un bersaglio per aggressori malintenzionati. Le vulnerabilità nel sistema operativo mobile di Google continuano a essere scoperte ogni mese, ma la buona notizia è che Google è solitamente diligente nel risolverli tramite regolari patch di sicurezza che vengono poi offerte agli OEM, che poi le spediscono dispositivi.

Recentemente, i ricercatori sulla sicurezza hanno scoperto una vulnerabilità che ha indotto gli utenti a consentire agli aggressori di registrare lo schermo del proprio dispositivo. Quel particolare exploit è stato corretto in Android Oreo, ma gli analisti GuardiaSquare ha recentemente segnalato un'altra grave vulnerabilità che colpisce le app Android firmate da schemi di firma più vecchi.

GuardiaSquareIl rapporto afferma che il Gianovulnerabilità

(CVE-2017-13156) in Android consente agli aggressori di modificare il codice nelle applicazioni senza intaccare le loro firme. Il rapporto prosegue affermando che la radice della vulnerabilità è che un file può essere contemporaneamente un file APK valido e un file DEX valido.

Janus sfrutta il fatto che i byte extra passano inosservati nei file APK e DEX. IL GuardiaSquare report spiega che un file APK è un archivio ZIP che può contenere byte arbitrari all'inizio, prima e tra le sue voci ZIP. Lo schema di firma JAR prende in considerazione solo le voci ZIP, ignorando eventuali byte aggiuntivi durante il calcolo o la verifica della firma dell'applicazione.

Prosegue spiegando che un file DEX, d'altra parte, può contenere byte arbitrari alla fine, dopo le sezioni regolari di stringhe, classi, definizioni di metodi, ecc. Pertanto, un file può essere contemporaneamente un file APK valido e un file DEX valido.

GuardiaSquare menziona inoltre che un elemento chiave della vulnerabilità è una caratteristica "innocua" della macchina virtuale Dalvik/ART. Il rapporto afferma che, in teoria, il runtime di Android carica il file APK, estrae il file DEX e quindi esegue il codice. Tuttavia, in pratica, la macchina virtuale (VM) può caricare ed eseguire sia file APK che file DEX. Il problema è che quando la VM ottiene un file APK, esamina comunque i byte magici nell'intestazione per decidere quale tipo di file è: DEX o APK. Trovando un'intestazione DEX, carica il file come file DEX. Se non trova un'intestazione, carica il file come file APK contenente una voce zip con un file DEX. Pertanto, può interpretare erroneamente i doppi file DEX/APK.

GuardiaSquare afferma che un utente malintenzionato può sfruttare questa caratteristica di dualità della VM per aggiungere un file DEX dannoso a un normale file APK senza comprometterne la firma. Il runtime Android accetterà il file APK come aggiornamento valido per una versione precedente legittima dell'app, ma la VM Dalvik caricherà il codice dal file DEX, a cui è stato iniettato codice dannoso.

Normalmente, ogni volta che un utente installa una versione aggiornata di un'app, la firma dell'app viene verificata dal runtime Android per garantire che corrisponda alla versione precedente. Quando la verifica ha esito positivo, l'applicazione aggiornata ottiene i permessi concessi all'applicazione originale. In questo modo, gli aggressori possono sfruttare la vulnerabilità Janus per aggirare il processo di verifica della firma e ottenere codice non verificato installato sui dispositivi di utenti ignari.

Ciò che è ancora peggio è che questo codice non verificato potrebbe ottenere l'accesso a potenti autorizzazioni. Ciò dà origine ad alcune gravi possibilità. GuardiaSquare stati:

"Un utente malintenzionato può sostituire un'applicazione attendibile con privilegi elevati (un'app di sistema, ad esempio) con un aggiornamento modificato per abusarne le autorizzazioni. A seconda dell'applicazione presa di mira, ciò potrebbe consentire all'hacker di accedere a informazioni sensibili memorizzate sul dispositivo o addirittura di impossessarsi completamente del dispositivo. In alternativa, un utente malintenzionato può passare un clone modificato di un'applicazione sensibile come aggiornamento legittimo [che] può apparire e comportarsi come l'applicazione originale ma iniettare comportamenti dannosi."

La società ha aggiunto che fino ad ora non avevano visto alcuna applicazione che sfruttasse Janus in natura. L'altra buona notizia è che la vulnerabilità richiede all'utente di installare un aggiornamento dannoso da una fonte esterna al Google Play Store. Pertanto, gli utenti che limitano le installazioni di app al Play Store sono protetti.

La vulnerabilità Janus colpisce i dispositivi con Android 5.0+. Sono interessate le applicazioni firmate con lo schema di firma APK v1. Gli APK firmati con lo schema di firma v2 sono protetti da questa vulnerabilità. Ciò richiede che gli APK siano in esecuzione su dispositivi che supportano lo schema di firma più recente (Android 7.0 e versioni successive). Lo schema v2 è protetto perché, a differenza dello schema v1, considera tutti i byte nel file APK.

"Le versioni precedenti delle applicazioni e le applicazioni più recenti in esecuzione su dispositivi meno recenti rimangono vulnerabili. Gli sviluppatori dovrebbero almeno applicare sempre lo schema di firma v2," GuardiaSquare stati.

GuardiaSquare ha segnalato il problema a Google il 31 luglio 2017 e ha ricevuto conferma lo stesso giorno. Il rapporto dell'azienda afferma che Google ha rilasciato una patch ai suoi partner a novembre e ha pubblicato il bug (CVE-2017-13156) nell'Android Security Bulletin il 4 dicembre 2017. La vulnerabilità ha stato risolto nella patch di sicurezza Android di dicembre 2017. Separatamente, è stato confermato che le applicazioni F-Droid dal loro repository ufficiale sono sicure. Infine, è stato confermato che la vulnerabilità è stata corretta APKMirror.


Fonte: GuardSquare