Categoria OWASP: MASVS-PLATFORM: Platform Interaction
Panoramica
Il tapjacking è l'equivalente per le app per Android della vulnerabilità web clickjacking: un'app dannosa induce l'utente a fare clic su un controllo pertinente alla sicurezza (pulsante di conferma e così via) oscurando la UI con una sovrapposizione o con altri mezzi. In questa pagina, distinguiamo due varianti di attacco: occlusione totale e parziale. Nell'occlusione completa, l'aggressore sovrappone l'area di tocco, mentre nell'occlusione parziale, l'area di tocco rimane visibile.
Impatto
Gli attacchi di tapjacking vengono utilizzati per indurre gli utenti a eseguire determinate azioni. L'impatto dipende dall'azione presa di mira dall'autore dell'attacco.
Rischio: copertura completa
In caso di occlusione completa, l'aggressore sovrappone l'area di tocco per dirottare l'evento touch:
Mitigazioni
La copertura completa viene impedita impostando View.setFilterTouchesWhenObscured(true)
nel codice. In questo modo, i tocchi passati da una sovrapposizione vengono bloccati. Se preferisci un approccio dichiarativo, puoi anche aggiungere android:filterTouchesWhenObscured="true"
nel file di layout per l'oggetto View
che vuoi proteggere.
Rischio: occlusione parziale
Negli attacchi di occlusione parziale, l'area di tocco rimane scoperta:
Mitigazioni
L'occlusione parziale viene mitigata ignorando manualmente gli eventi tocco che hanno il flag FLAG_WINDOW_IS_PARTIALLY_OBSCURED
. Non sono previste protezioni predefinite contro questo scenario.
Potenziale avvertenza:questa mitigazione può interferire con le app innocue. In alcuni casi, l'implementazione di questa correzione non è possibile, in quanto influirebbe negativamente sull'esperienza utente quando l'occlusione parziale è causata da un'applicazione benigna.
Rischi specifici
Questa sezione raccoglie i rischi che richiedono strategie di mitigazione non standard o che sono stati mitigati a un determinato livello di SDK e sono qui per completezza.
Rischio: android.Manifest.permission.SYSTEM_ALERT_WINDOW
L'autorizzazione SYSTEM_ALERT_WINDOW
consente a un'app di creare una finestra visualizzata sopra tutte le app.
Mitigazioni
Le versioni più recenti di Android hanno introdotto diverse mitigazioni, tra cui:
- Su Android 6 (livello API 23) e versioni successive, gli utenti devono concedere esplicitamente l'autorizzazione all'app per creare una finestra di overlay.
- Su Android 12 (livello API 31) e versioni successive, le app possono passare
true
inWindow.setHideOverlayWindows()
.
Rischio: toast personalizzato
Un malintenzionato può utilizzare Toast.setView()
per personalizzare l'aspetto di un messaggio toast. Su Android 10 (livello API 29) e versioni precedenti, le app dannose potevano avviare questi avvisi in background.
Mitigazioni
Se un'app ha come target Android 11 (livello API 30) o versioni successive, il sistema blocca i toast personalizzati in background. Tuttavia, questa mitigazione può essere elusa in alcune circostanze utilizzando Toast burst, in cui l'autore dell'attacco mette in coda più toast in primo piano e questi continuano a essere lanciati anche dopo che un'app passa in background.
I toast in background e gli attacchi di tipo toast burst vengono mitigati completamente a partire da Android 12 (livello API 31).
Rischio: sandwich di attività
Se un'app dannosa riesce a convincere un utente ad aprirla, può comunque avviare un'attività dall'app vittima e successivamente sovrapporla alla propria attività, formando un sandwich di attività e creando un attacco di occlusione parziale.
Mitigazioni
Consulta le mitigazioni generali per l'occlusione parziale. Per una difesa approfondita, assicurati di non esportare attività che non devono essere esportate per impedire a un malintenzionato di inserirle.
Risorse
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- android:exported
- # Key management {:#key-management}
- Esegui il codice DEX incorporato direttamente dall'APK