Il tapjacking è tornato in Android Marshmallow e nessuno se ne è accorto

Alcuni dispositivi Marshmallow sono suscettibili al tapjacking, in cui un'app sovrappone del testo a una finestra di dialogo di autorizzazione per ingannare l'utente.

Mentre molti di noi sono entusiasti del nuovo Android Nougat per dispositivi Nexus, la stragrande maggioranza degli utenti utilizza ancora Android Marshmallow. Un exploit la cui esistenza è stata documentata da allora almeno la metà del 2015 colpisce ancora molti moderni dispositivi Android.

Le applicazioni dannose sono in grado di farlo tapjack le tue azioni in concedendo loro un permesso che non hai mai concesso esplicitamente. Ecco come funziona l'exploit.


Il ritorno del tapjacking

Immagina di aprire Instagram e provare a condividere una foto che hai scattato di recente mentre eri in vacanza. Quando scegli di sfogliare la tua galleria per cercare un'immagine, Instagram ti chiede di concedergli l'autorizzazione per accedere al tuo spazio di archiviazione. Ma quando tocchi "sì" ti viene visualizzato un messaggio di errore.

Non puoi concedere l'autorizzazione di archiviazione per Instagram perché hai una sovrapposizione dello schermo attiva abilitata - in in questo caso, una delle tante applicazioni che colorano lo schermo in modo da poter utilizzare il telefono di notte senza abbagliarlo te stesso. Questo è un caso del sistema di permessi di Android

funzionando come previsto: per concedere a un'applicazione un'autorizzazione sensibile, è necessario disabilitare eventuali sovrapposizioni dello schermo presenti sul dispositivo.

Tapjacking del permesso Marshmallow. Toccando "Consenti" verranno mostrati tutti i miei contatti.

Le applicazioni che hanno la capacità di disegnare sullo schermo potrebbero potenzialmente indurti a fornirgli dati sensibili. Ad esempio, una sovrapposizione dello schermo potrebbe posizionare l'immissione di una password falsa sopra una schermata di accesso reale per raccogliere le tue password. Si chiama un exploit come questo 'tapjacking' ed è apparso ed è stato patchato su varie versioni di Android nel corso degli anni, con uno dei peggiori esempi durato fino ad Android 4.0.3. Ma recentemente, l’exploit è tornato Modello di autorizzazione in fase di esecuzione di Android Marshmallow.

Uno sviluppatore di nome Iwo Banas creato un applicazione dimostrando l'exploit. Il modo in cui funziona è abbastanza semplice: quando un'applicazione visualizza una finestra di dialogo di autorizzazione, l'applicazione dannosa installato visualizzerà una sovrapposizione di sistema per coprire il blocco di testo della finestra di dialogo dei permessi con qualunque testo esso vuole. Un utente inconsapevole che fa clic su "consenti" nella finestra di dialogo delle autorizzazioni verrà indotto con l'inganno a concedere un'autorizzazione che gli è stata richiesta, ma per la quale la richiesta è stata nascosta alla vista dell'utente. Un tale exploit vanifica completamente lo scopo del sistema di autorizzazione di Android Marshmallow, sin dall'introduzione di il nuovo modello avrebbe dovuto garantire che gli utenti avessero solo le autorizzazioni a cui avevano esplicitamente acconsentito.

Ora, so a cosa stai pensando. Se Android rilevasse un overlay di sistema e mi impedisse di concedere le autorizzazioni di archiviazione di Instagram, non impedirebbe che si verifichi questo exploit? La risposta è no, dai miei test risulta che su alcuni dispositivi la visualizzazione di un testo in sovrapposizione sopra una finestra di dialogo di autorizzazione non attiva il meccanismo di sicurezza. Lo sviluppatore dell'applicazione di tapjacking proof-of-concept afferma che l'exploit è efficace perché si basa sull'installazione da parte dell'utente di un'applicazione dannosa secondaria destinata al livello API 22 e inferiore (pre-Marshmallow). Ciò è dovuto al fatto che prima di Android Marshmallow, a tutte le applicazioni venivano concesse autorizzazioni durante l'installazione.

Ok, quindi se utilizzi Marshmallow tutto ciò che dovresti fare è evitare di installare app di cui non ti fidi che richiedono l'autorizzazione per disegnare una sovrapposizione, giusto? Se il modello di autorizzazione di Android funzionasse come previsto originariamente, avresti ragione. Ma dalla scoperta di questo exploit, anche le app destinate al livello API 23 (Marshmallow) che richiedono l'autorizzazione di sovrapposizione rappresentano un potenziale rischio.


Una lacuna nel modello di autorizzazione?

App tipiche che utilizzano overlay. Attraverso: medio

Se sei uno dei tanti milioni di persone che utilizzano Facebook Messenger per chattare con i tuoi amici, allora ti sei imbattuto in una delle migliori funzionalità di Android: la possibilità per le app di sovrapporre le altre schermi. Quanto è bello poter avere una bolla con la chat di gruppo Facebook preferita che segue l'utente sopra qualsiasi applicazione aperta? Anche se Messenger di Facebook ha reso popolare l'idea delle "app mobili", su Android il concetto esiste già da tempo. Le applicazioni sono in grado di creare sovrapposizioni sulle tue app già da qualche tempo, grazie all'esistenza di TYPE_SYSTEM_OVERLAY nel WindowManager di Android.

Menu di autorizzazione "Disegna su altre app".

Prima di Android Marshmallow, le applicazioni dovevano richiedere un'autorizzazione chiamata SYSTEM_ALERT_WINDOW durante l'installazione prima che possa visualizzare le sovrapposizioni nella parte superiore dello schermo. Ma la situazione è cambiata con l'introduzione del modello di autorizzazione granulare in fase di esecuzione della versione 6.0. Gli utenti ora dovrebbero concedere le autorizzazioni alle applicazioni durante l'esecuzione dell'app, il che si spera possa stimolare la media utente a salvaguardare i propri dati privati ​​da applicazioni che richiedono in modo sospetto apparentemente non correlate dal punto di vista funzionale autorizzazioni.

Tuttavia, SYSTEM_ALERT_WINDOW non è come le altre autorizzazioni. Gli sviluppatori non possono visualizzare una finestra di dialogo per richiedere a livello di codice che l'autorizzazione venga concessa dall'utente finale, come la maggior parte delle altre autorizzazioni su qualsiasi app destinata a Marshmallow. Invece, devi accedere manualmente alla schermata delle impostazioni e abilitare tu stesso l'autorizzazione. Naturalmente, alcune app come Facebook Messenger ti aiuteranno durante il processo.

Google lo richiede agli sviluppatori perché ritengono che l'autorizzazione sia "particolarmente sensibile."

Autorizzazioni speciali

Ci sono un paio di permessi che non si comportano come permessi normali e pericolosi. SYSTEM_ALERT_WINDOW e WRITE_SETTINGS sono particolarmente sensibili, quindi la maggior parte delle app non dovrebbe utilizzarli. Se un'app necessita di una di queste autorizzazioni, deve dichiarare l'autorizzazione nel manifest e inviare un intento richiedendo l'autorizzazione dell'utente. Il sistema risponde all'intento mostrando all'utente una schermata di gestione dettagliata.

Considerato ciò che sappiamo sopra sul tapjacking, questo ha senso. Ma ecco il punto. Google non segue nemmeno le proprie regole. Gli screenshot di Facebook Messenger che ti guidano attraverso il processo di concessione dell'autorizzazione SYSTEM_ALERT_WINDOW che ti ho mostrato sopra? Ciò accade solo se installi l'APK dall'esterno del Google Play Store. Se installi un'applicazione dal Google Play Store, il L'autorizzazione SYSTEM_ALERT_WINDOW viene concessa automaticamente.

File manifest di Facebook Messenger. All'app viene concessa automaticamente l'autorizzazione di overlay nonostante abbia come target il livello API 23.

Google ha sacrificato la sicurezza per la comodità

Per molto tempo prima di Android Marshmallow, SYSTEM_ALERT_WINDOW era considerato un "pericoloso" autorizzazione. Con Android Marshmallow 6.0, l'autorizzazione è stata modificata in firma|sistema|app che è ciò che inizialmente richiedeva agli sviluppatori di condurre l'utente alla schermata delle impostazioni per concedere l'autorizzazione. Ma con la versione Android 6.0.1, SYSTEM_ALERT_WINDOW è stato modificato in modo che il Google Play Store potrebbe concedere automaticamente l'autorizzazionesenza avvisare l'utente. Perché Google abbia apportato questa modifica non ci è chiaro. Google stesso non è uscito allo scoperto e ha dichiarato il motivo per cui ha apportato questa modifica, il che è particolarmente strano considerando il linguaggio relativo a SYSTEM_ALERT_WINDOW che esiste ancora sulle loro pagine web.

È possibile che abbastanza sviluppatori erano arrabbiati dalle modifiche iniziali a SYSTEM_ALERT_WINDOW che richiedevano agli utenti di concedere manualmente l'autorizzazione che Google ha ceduto silenziosamente e l'ha semplicemente concessa a qualsiasi applicazione che lo richiedesse. Ma così facendo, Google ha sacrificare la sicurezza per la comodità. C'è un motivo per cui Google stessa ha considerato pericolosa l'autorizzazione per molto tempo, perché lo è. E l’esistenza dell’exploit di tapjacking dei permessi Marshmallow è una prova sufficiente dei pericoli intrinseci nel concedere automaticamente questa autorizzazione a qualsiasi app.

Questo exploit di tapjacking è stato portato alla nostra attenzione solo di recente, sebbene esista ormai da molti mesi. Nei nostri test interni sui dispositivi condotti dal team di XDA Portal, lo abbiamo confermato l'exploit funziona su molti dispositivi moderni con Android Marshmallow. Ecco un rapido elenco dei dispositivi che abbiamo testato sulle ultime versioni software disponibili per ciascun rispettivo dispositivo e se l'exploit tapjacking funziona o meno. I dispositivi contrassegnati come "Vulnerabili" sono suscettibili a un exploit di tapjacking, mentre i dispositivi contrassegnati con "Non Vulnerabile" sono in grado di rilevare un'app che visualizza l'overlay e richiederne la disattivazione prima continuando.

  • Nextbit Robin - Android 6.0.1 con patch di sicurezza di giugno - Vulnerabile
  • Moto X Pure - Android 6.0 con patch di sicurezza di maggio - Vulnerabile
  • Honor 8 - Android 6.0.1 con patch di sicurezza di luglio - Vulnerabile
  • Motorola G4 - Android 6.0.1 con patch di sicurezza di maggio - Vulnerabile
  • OnePlus 2 - Android 6.0.1 con patch di sicurezza di giugno - Non vulnerabile
  • Samsung Galaxy Note 7 - Android 6.0.1 con patch di sicurezza di luglio - Non vulnerabile
  • Google Nexus 6 - Android 6.0.1 con patch di sicurezza di agosto - Non vulnerabile
  • Google Nexus 6P - Android 7.0 con patch di sicurezza di agosto - Non vulnerabile

Finora, questi sono tutti i dispositivi che ho potuto far testare al team. Non sono riuscito a trovare alcuna correlazione tra la versione della patch di sicurezza e l'exploit. Come puoi notare dal ns ultima discussione sugli aggiornamenti di sicurezza Android, molte persone non utilizzano comunque le patch di sicurezza più recenti e sono quindi probabilmente vulnerabili a questo exploit e ad altri descritti nella Bollettino sulla sicurezza Android.


Andando avanti

Al servizio Tapjacking è stata concessa l'autorizzazione di overlay

Ti invitiamo a testare tu stesso questo exploit sul tuo dispositivo per vedere se sei vulnerabile. Abbiamo compilato gli APK dal file codice sorgente collegato sopra (puoi farlo anche da solo) e averli caricati su AndroidFileHost. Per testare l'exploit è necessario installare sia il file applicazione principale di tapjacking così come il suo servizio di aiuto. Quindi, esegui semplicemente l'applicazione principale e fai clic sul pulsante "test". Se una casella di testo fluttua sopra la finestra di dialogo delle autorizzazioni e quando fai clic su "consenti" viene visualizzato un elenco dei contatti del tuo dispositivo, il tuo dispositivo è vulnerabile al tapjacking. Non preoccuparti che la casella di testo mobile non copra interamente la finestra di dialogo delle autorizzazioni, questa app di prova non lo è intendeva dimostrare perfettamente come dirottare in modo accurato una finestra di dialogo dei permessi, ma piuttosto dimostrare che lo è davvero possibile.

Ci auguriamo che venga introdotta una correzione che corregga questo exploit su tutti i dispositivi Marshmallow e che gli OEM aggiornino tutti i loro dispositivi all'ultima patch di sicurezza. Perché la realtà è che ci vorranno molti mesi prima che la maggior parte dei dispositivi promessi ottengano Nougat, quindi l'unico modo per la maggior parte Per mantenere gli utenti lontani dai pericoli, è necessario installare le patch di sicurezza più recenti o acquisire le autorizzazioni dell'app di monitoraggio loro stessi. Ma con la decisione di Google di concedere automaticamente l'autorizzazione potenzialmente pericolosa SYSTEM_ALERT_WINDOW, molti gli utenti utilizzano inconsapevolmente app che potrebbero potenzialmente dirottare i loro telefoni per concedere garanzie sempre più pericolose autorizzazioni.