Android, attacco a mezzo Toast

Le notifiche on-screen display di Android possono essere usate per condurre attacchi clickjacking inducendo l'utente a concedere privilegi aggiuntivi alle app. Google rilascia la patch nel security bulletin di Settembre
Le notifiche on-screen display di Android possono essere usate per condurre attacchi clickjacking inducendo l'utente a concedere privilegi aggiuntivi alle app. Google rilascia la patch nel security bulletin di Settembre

I ricercatori di Palo Alto Networks hanno illustrato un nuovo attacco al sistema operativo Android che utilizza le notifiche Toast per consentire ad un’applicazione malevola di ottenere permessi aggiuntivi manipolando l’interazione tra l’utente e l’interfaccia grafica del sistema .

Tale tecnica è una variante di Cloak & Dagger , attacco di clickjacking ideato da ricercatori dell’Università della California e della Georgia, illustrato alla conferenza Black Hat di Luglio. Tale attacco sfrutta il permesso draw on top (attribuito all’applicazione senza conferma esplicita dell’utente) per disegnare del contenuto custom davanti alla richiesta di permessi aggiuntivi e indurre l’utente ad abilitare involontariamente l’applicazione all’utilizzo dei servizi di accessibilità. Tragiche le conseguenze: possibilità, per l’applicazione, di effettuare azioni avanzate, come ad esempio registrare le stringhe composte con la tastiera, sbloccare il dispositivo iniettando il PIN, effettuare azioni a schermo spento, leggere SMS e agire sul browser Web.

Una patch parziale per tale problematica era stata già rilasciata da Google in Android 7.1.2, con l’obiettivo di impedire alle applicazioni con il permesso draw on top di sovrapporsi alla finestra di richiesta dei permessi; ciò, comunque, non è bastato per impedire ai ricercatori di apportare piccole modifiche all’attacco e renderlo comunque efficace.

Sulla base di questo lavoro, i ricercatori di Palo Alto si sono soffermati sulle notifiche Toast, i popup che comunemente appaiono in modalità on-screen-display per qualche secondo nella parte inferiore dello schermo, il cui obiettivo è quello di inviare all’utente un feedback di minore importanza sulle operazioni svolte su un’applicazione.
Una notifica Toast può essere mostrata, in linguaggio Java, nel seguente modo:

Context contesto = getApplicationContext();
CharSequence testo = "Ciao!";
int durata = Toast.LENGTH_SHORT ;

Toast toast = Toast.makeText(contesto, testo, durata);
toast.setGravity( Gravity.BOTTOM , 0, 0);
toast.show();

La posizione, così come il layout, possono essere eventualmente personalizzati: l’attacco mostrato da Palo Alto, infatti, è effettuabile mediante un’applicazione malevola che inietta
due view in notifiche toast ; la prima copre la UI sottostante e monitora i tap dell’utente facendo inferenza delle azioni svolte dall’utente, mentre la seconda mostra la porzione di interfaccia grafica che l’attaccante usa per trarre in inganno lo stesso.

L’attaccante può così “mascherare” i bottoni di conferma tramite un’applicazione malevola, inducendo, ad esempio, l’utente ad abilitare il tanto “comodo” servizio di accessibilità o ad impostare l’applicazione come “amministratore del dispositivo”.

Le versioni di Android impattate sono tutte quelle comprese tra al 4.4.4 e la 7.1.2.

Per mostrare tale notifica, su Android 7.0 e precedenti, non è necessario effettuare il grant su alcun permesso, pertanto la patch di Google perde di efficacia.

Con Android 7.1 e successivi sono invece state introdotte due metodologie di mitigazione: un timeout e il vincolo per l’applicazione di visualizzare una sola notifica Toast per volta. Tuttavia, se la natura “short-living” della notifica Toast può sembrare un ostacolo, è sufficiente includere la notifica in un ciclo (o, ancora meglio, in un LooperThread ) per assicurarsi che essa sia sempre visualizzata a schermo.

La seconda mitigazione, invece, rende l’attacco di più difficile applicazione ma comunque effettuabile, mediante l’utilizzo di un approccio alternativo: non potendo visualizzare più di un overlay, l’applicazione non è in grado di tracciare i tap multipli dell’utente; l’attacco è però eseguibile in modo quasi altrettanto efficiente mediante l’introduzione di una sleep tra la visualizzazione di una toast e l’altra.

Un video dimostrativo dell’attacco è disponibile sul sito di Palo Alto .

Tale problematica è stata inserita nel database CVE nella categoria “Privilege escalation”, con il codice CVE-2017-0752 con una severity alta. Google ne ha effettuato disclosure e rilasciato la patch nel Security Bulletin del 5 Settembre ; il codice sorgente della patch sarà presto disponibile nel repository Android Open Source Project e potrà essere applicato alle custom-rom; per le rom stock, invece, occorrerà attendere il rilascio di aggiornamenti Over-The-Air comprensivi delle patch da parte dei vari produttori.

Per quanto riguarda Android 8, la vulnerabilità non è presente poiché è stato introdotto un permesso specifico per la visualizzazione di notifiche toast.

Patrizio Tufarolo

fonte immagine

Link copiato negli appunti

Ti potrebbe interessare

11 09 2017
Link copiato negli appunti