Nel corso del DefCon XXVI, Slava Makkaveev, ricercatore di Checkpoint Software Technology Ltd, ha mostrato come vi sia una falla nel design della sandbox di Android che, non effettuando una corretta validazione dell’input, apre la possibilità ad attacchi Man in the Disk, sfruttando lo storage esterno.
Slava Makkaveev diceva “Abbiamo rilevato casi in cui un’applicazione viene scaricata, aggiornata o riceve dati dai server del creatore dell’app, passando attraverso lo storage esterno prima di essere inviati all’app stessa e consentendo agli aggressori di manipolare i dati conservati nell’archivio esterno prima che l’app li leggesse nuovamente”.
L’attacco Man in the Disk permette ad un malintenzionato di compromettere dati, rubare informazioni sensibili, effettuare denial of service o di iniettare codice infetto nel dispositivo Android, sino al punto di prenderne il controllo completo.
Indice degli argomenti
Sandbox e storage in Android: come funzionano
Android è dotato di numerosi layer di sicurezza e uno dei fondamentali è la sandbox, che non permette ad una applicazione di accedere alle risorse garantite ad un’altra applicazione. Android assegna ad ogni app un UID univoco, eseguendole con un processo secretato con tale UID. Solamente i processi con lo stesso UID possono accedere alle risorse condivise, in base ai permessi forniti e collegati all’UID stesso. In questo modo, nel caso in cui un applicazione cercasse di accedere a risorse condivise senza averne i diritti, Android sarebbe in grado di rilevare il differente UID e bloccare le richieste.
Le app posso avere diverse tipologie di permessi, come:
- normali/pericolosi: SMS, contatti, archivio (ad esempio, WhatsApp, Instagram, Facebook);
- preinstallate/privilegiate: WRITE_SETTING, INSTALL_PACKAGES (ad esempio, YouTube, Chrome);
- ROM Signature_SharedUserId: ACCOUNT_MANAGER, OEM_UNLOCK_STATE.
Lo storage di Android può essere classificato in:
- interno:
- memoria non volatile;
- sempre disponibile;
- privato;
- protetto da sandbox;
- esterno:
- partizione permanente in memoria;
- pubblico;
- non protetto da sandbox;
- rimovibile:
- non sempre disponibile;
- leggibile da chiunque;
- non protetto da sandbox.
Lo storage esterno o rimovibile viene utilizzato solitamente per condividere file tra le applicazioni o dispositivi o per espandere la capacità di archiviazione estremamente limitata di alcuni terminali.
Come funziona l’attacco Man in the Disk
L’attacco Man in the Disk richiede in primo luogo l’interazione umana. L’attaccante deve convincere la vittima a scaricare e installare un’app compromessa o realizzata ad hoc, che richieda i permessi per “accedere a foto, media e file sul dispositivo”.
L’utente accettando concede in realtà i seguenti permessi di Global storage access:
- READ_EXTERNAL_STORAGE
- WRITE_EXTERNAL_STORAGE
Tali permessi generalmente non insospettiscono l’utente, che è abituato a concederli a numerose applicazioni (ad esempio a Facebook per l’upload e il download di immagini) e che quindi prosegue senza porsi alcuna domanda.
Lo storage esterno non è protetto da sandbox e quindi a questo punto l’attaccante è in grado di monitorare tutti i dati trasferiti tra il device Android e lo storage esterno da qualsiasi applicazione in esecuzione; è in grado di sovrascrivere dati e persino di causare crash di applicazioni, di effettuare injection di codice e sfruttare exploit kit per avere accesso a microfono, fotocamera e a tutti i dati presenti.
Man in the Disk richiama, nel nome ma anche nei concetti di esecuzione, il più noto attacco Man in the Middle. In entrambi i casi si assiste ad un’intercettazione e manipolazione di dati in transito tra uno storage e una applicazione.
Le linee guida degli sviluppatori Android
Gli sviluppatori Android forniscono linee guida approfondite su come gestire la sicurezza delle app e l’utilizzo dello storage esterno/rimovibile. Molto frequentemente, tuttavia, gli sviluppatori delle applicazioni non seguono tali dettami e si configura quindi lo scenario perfetto per l’esecuzione dell’attacco Man in the Disk.
Nemmeno i dipendenti di Google e svariati produttori di device a livello globale sono immuni da queste “disattenzioni” che potrebbero costare molto care.
Makkaveev ha portato come esempi:
- mancata validazione dell’input durante la gestione dei dati provenienti dallo storage esterno:
- Google Translate;
- Yandex Translate;
- Google Voice Typing;
- eseguibili e file java compilati che non dovrebbero essere archiviati su storage esterno:
- LG Application Manager;
- LG World;
- file presenti su storage esterno che non sono firmati e verificati crittograficamente prima del caricamento:
- Google Text to Speech;
- Xiaomi Browser.
Tra le applicazioni più note vulnerabili all’attacco MitD (Man in the Disk) è da segnalare anche il popolare videogame Fortnite per Android. Lo sviluppatore Epic Games ha comunque prontamente rilasciato una patch di sicurezza che ha risolto la problematica.
Come evitare gli attacchi Man in the Disk
Android non è in grado di fornire una protezione corretta per i dati presenti nello storage esterno, che si configura di fatto come un’area che può essere monitorata e modificata da applicazioni di terze parti. I dispositivi Android contengono dati estremamente sensibili che, spesso senza che l’utente ne sia effettivamente a conoscenza, sfruttano lo storage esterno.
Come è possibile procedere per evitare di essere vittime dell’attacco Man in the Disk?
Le azioni devono essere intraprese dai due attori coinvolti e cioè dagli sviluppatori delle applicazioni e dall’utente.
Gli sviluppatori devono necessariamente seguire le linee guida dettate dai creatori di Android, con particolare attenzione a:
- input validation;
- posizione di class file ed eseguibili;
- verifica dei file presenti su storage esterno prima del caricamento dinamico.
Agli utenti si raccomanda di:
- installare applicazioni solamente da store ufficiali quali Google Play o quelli dei produttori di device Android. Chiaramente, come visto anche dalla ricerca Checkpoint, ciò non elimina assolutamente i rischi, ma contribuisce a farli diminuire in maniera significativa. Disattivare di conseguenza il permesso di installazione di applicazioni da fonti sconosciute;
- verificare sempre i punteggi e le recensioni delle applicazioni presenti sugli store ufficiali prima di installarle;
- installare solamente applicazioni necessarie e rimuovere quelle che non vengono più utilizzate;
- utilizzare un antivirus per il proprio dispositivo.