Android Task Hijacking
Task, Back Stack and Foreground Activities
In Android, un task è essenzialmente un insieme di attività con cui gli utenti interagiscono per completare un lavoro specifico, organizzato all'interno di uno back stack. Questo stack ordina le attività in base a quando sono state aperte, con l'attività più recente visualizzata in cima come foreground activity. In qualsiasi momento, solo questa attività è visibile sullo schermo, rendendola parte del foreground task.
Ecco una rapida panoramica delle transizioni delle attività:
Activity 1 inizia come l'unica attività in primo piano.
L'apertura di Activity 2 spinge Activity 1 nello stack di retro, portando Activity 2 in primo piano.
L'avvio di Activity 3 sposta Activity 1 e Activity 2 ulteriormente indietro nello stack, con Activity 3 ora davanti.
La chiusura di Activity 3 riporta Activity 2 in primo piano, mostrando il meccanismo di navigazione delle attività semplificato di Android.
Attacco di affinità del task
Panoramica dell'affinità del task e delle modalità di avvio
Nelle applicazioni Android, l'affinità del task specifica il task preferito di un'attività, allineandosi tipicamente con il nome del pacchetto dell'app. Questa configurazione è fondamentale per creare un'app di prova (PoC) per dimostrare l'attacco.
Modalità di avvio
L'attributo launchMode
dirige la gestione delle istanze delle attività all'interno dei task. La modalità singleTask è fondamentale per questo attacco, dettando tre scenari basati sulle istanze di attività esistenti e sulle corrispondenze di affinità del task. Lo sfruttamento si basa sulla capacità dell'app dell'attaccante di imitare l'affinità del task dell'app target, ingannando il sistema Android nel lanciare l'app dell'attaccante invece dell'obiettivo previsto.
Passaggi dettagliati dell'attacco
Installazione dell'app malevola: La vittima installa l'app dell'attaccante sul proprio dispositivo.
Attivazione iniziale: La vittima apre per prima l'app malevola, preparando il dispositivo per l'attacco.
Tentativo di avvio dell'app target: La vittima tenta di aprire l'app target.
Esecuzione dell'hijack: A causa dell'affinità del task corrispondente, l'app malevola viene lanciata al posto dell'app target.
Inganno: L'app malevola presenta una schermata di accesso falsa simile all'app target, ingannando l'utente a inserire informazioni sensibili.
Per un'implementazione pratica di questo attacco, fare riferimento al repository Task Hijacking Strandhogg su GitHub: Task Hijacking Strandhogg.
Misure di prevenzione
Per prevenire tali attacchi, gli sviluppatori possono impostare taskAffinity
su una stringa vuota e optare per la modalità di avvio singleInstance
, garantendo l'isolamento della loro app da altre. Personalizzare la funzione onBackPressed()
offre ulteriore protezione contro l'hijacking del task.
Riferimenti
Last updated