Un nuovo attacco consente agli hacker di rubare i codici di autenticazione a due fattori dai telefoni Android

I dispositivi Android sono vulnerabili a un nuovo attacco in grado di rubare di nascosto codici di autenticazione a due fattori, cronologie di posizione e altri dati privati in meno di 30 secondi.
Il nuovo attacco, denominato Pixnapping dal team di ricercatori accademici che lo ha ideato, richiede alla vittima di installare prima un'app dannosa su un telefono o tablet Android. L'app, che non richiede autorizzazioni di sistema, può quindi leggere efficacemente i dati visualizzati sullo schermo da qualsiasi altra app installata. Pixnapping è stato dimostrato sui telefoni Google Pixel e sul telefono Samsung Galaxy S25 e probabilmente potrebbe essere modificato per funzionare su altri modelli con ulteriori interventi. Google ha rilasciato delle mitigazioni il mese scorso, ma i ricercatori hanno affermato che una versione modificata dell'attacco funziona anche quando l'aggiornamento è installato.
Come fare uno screenshotGli attacchi Pixnapping iniziano con l'app dannosa che richiama le interfacce di programmazione Android che inducono l'autenticatore o altre app mirate a inviare informazioni sensibili allo schermo del dispositivo. L'app dannosa esegue quindi operazioni grafiche su singoli pixel di interesse per l'aggressore. Pixnapping sfrutta quindi un canale laterale che consente all'app dannosa di mappare i pixel in quelle coordinate su lettere, numeri o forme.
"Tutto ciò che è visibile all'apertura dell'app target può essere rubato dall'app dannosa tramite Pixnapping", hanno scritto i ricercatori su un sito web informativo . "Messaggi di chat, codici di autenticazione a due fattori, messaggi di posta elettronica, ecc. sono tutti vulnerabili perché visibili. Se un'app contiene informazioni segrete non visibili (ad esempio, ha una chiave segreta memorizzata ma mai visualizzata sullo schermo), tali informazioni non possono essere rubate da Pixnapping".
La nuova classe di attacco ricorda GPU.zip , un attacco del 2023 che consentiva a siti web dannosi di leggere nomi utente, password e altri dati visivi sensibili visualizzati da altri siti web. Funzionava sfruttando i canali laterali presenti nelle GPU di tutti i principali fornitori. Le vulnerabilità sfruttate da GPU.zip non sono mai state risolte. L'attacco è stato invece bloccato nei browser limitandone la capacità di aprire gli iframe, un elemento HTML che consente a un sito web (nel caso di GPU.zip, un sito web dannoso) di incorporare i contenuti di un sito di un dominio diverso.
Pixnapping prende di mira lo stesso canale laterale di GPU.zip, in particolare il tempo esatto impiegato per il rendering di un dato fotogramma sullo schermo.
"Questo consente a un'app dannosa di rubare informazioni sensibili visualizzate da altre app o siti web arbitrari, pixel per pixel", ha spiegato in un'intervista Alan Linghao Wang, autore principale dello studio di ricerca " Pixnapping: Bringing Pixel Stealing out of the Stone Age ". "Concettualmente, è come se l'app dannosa stesse catturando uno screenshot del contenuto dello schermo a cui non dovrebbe avere accesso. I nostri attacchi end-to-end misurano semplicemente il tempo di rendering per frame delle operazioni grafiche per determinare se il pixel è bianco o non bianco".
Pixnapping in 3 passaggiL'attacco si svolge in tre fasi principali. Nella prima, l'app dannosa richiama le API Android che effettuano chiamate all'app che l'aggressore desidera monitorare. Queste chiamate possono anche essere utilizzate per scansionare efficacemente un dispositivo infetto alla ricerca di app installate di interesse. Le chiamate possono inoltre indurre l'app presa di mira a visualizzare dati specifici a cui ha accesso, come un thread di messaggi in un'app di messaggistica o un codice 2FA per un sito specifico. Questa chiamata fa sì che le informazioni vengano inviate alla pipeline di rendering di Android, il sistema che acquisisce i pixel di ciascuna app in modo che possano essere visualizzati sullo schermo. Le chiamate specifiche di Android effettuate includono attività , intenti e compiti .
Nella seconda fase, Pixnapping esegue operazioni grafiche sui singoli pixel che l'app di destinazione invia alla pipeline di rendering. Queste operazioni scelgono le coordinate dei pixel di destinazione che l'app desidera rubare e iniziano a verificare se il colore di tali coordinate è bianco o non bianco o, più in generale, se il colore è c o non-c (per un colore arbitrario c).
"Supponiamo, ad esempio, che [l'attaccante] voglia rubare un pixel che fa parte dell'area dello schermo in cui è noto che Google Authenticator ha renderizzato un carattere 2FA", ha affermato Wang. "Questo pixel è bianco (se non è stato renderizzato nulla in quel punto) o non bianco (se è stata renderizzata parte di una cifra 2FA in quel punto). Quindi, concettualmente, l'attaccante vuole causare alcune operazioni grafiche il cui tempo di rendering è lungo se il pixel della vittima target non è bianco e breve se è bianco. L'app dannosa lo fa aprendo alcune attività dannose (ovvero finestre) davanti all'app vittima aperta nel passaggio 1."
Il terzo passaggio misura il tempo richiesto per ciascuna coordinata. Combinando i tempi per ciascuna coordinata, l'attacco può ricostruire le immagini inviate alla pipeline di rendering, un pixel alla volta.
Come ha scritto il lettore di Ars hotball nei commenti qui sotto:
In pratica, l'attaccante rende trasparente qualcosa di fronte all'app bersaglio, quindi utilizza un attacco temporale sfruttando la compressione dei dati grafici della GPU per cercare di scoprire il colore dei pixel. Non è qualcosa di semplice come "dammi i pixel di un'altra app che vengono visualizzati sullo schermo in questo momento". Ecco perché richiede tempo e può essere troppo lento per rientrare nella finestra temporale di 30 secondi dell'app Google Authenticator.
In un'intervista online, il coautore dell'articolo Ricardo Paccagnella ha descritto l'attacco in modo più dettagliato:
Fase 1: l'app dannosa richiama un'app di destinazione per causare il rendering di contenuti visivi sensibili.
Fase 2: l'app dannosa utilizza le API di Android per "disegnare" quel contenuto visivo e causare la perdita di un canale laterale (nel nostro caso, GPU.zip) in funzione del colore dei singoli pixel renderizzati nella Fase 1 (ad esempio, attivarsi solo se il colore del pixel è c).
Fase 3: l'app dannosa monitora gli effetti collaterali della Fase 2 per dedurre, ad esempio, se il colore di quei pixel era c o meno, un pixel alla volta.
I passaggi 2 e 3 possono essere implementati in modo diverso a seconda del canale laterale che l'attaccante desidera sfruttare. Nelle nostre istanze su telefoni Google e Samsung, abbiamo sfruttato il canale laterale GPU.zip. Utilizzando GPU.zip, la misurazione del tempo di rendering per frame è stata sufficiente per determinare se il colore di ciascun pixel è c o meno. Future istanze dell'attacco potrebbero utilizzare altri canali laterali in cui potrebbe essere necessario controllare la gestione della memoria e accedere a timer a grana fine (vedere la Sezione 3.3 del documento). Il pixnapping funzionerebbe comunque: l'attaccante dovrebbe solo modificare il modo in cui vengono implementati i passaggi 2 e 3.
Il tempo necessario per eseguire l'attacco dipende da diverse variabili, tra cui il numero di coordinate da misurare. In alcuni casi, non esiste una scadenza precisa per ottenere le informazioni che l'aggressore desidera rubare. In altri casi, come il furto di un codice 2FA, ogni secondo conta, poiché ognuno è valido solo per 30 secondi. Nel documento, i ricercatori hanno spiegato:
Per rispettare la rigorosa deadline di 30 secondi per l'attacco, riduciamo anche il numero di campioni per pixel target a 16 (rispetto ai 34 o 64 utilizzati negli attacchi precedenti) e riduciamo il tempo di inattività tra le perdite di pixel da 1,5 secondi a 70 millisecondi. Per garantire che l'attaccante abbia tutti i 30 secondi per divulgare il codice 2FA, la nostra implementazione attende l'inizio di un nuovo intervallo di tempo globale di 30 secondi, determinato utilizzando l'orologio di sistema.
... Utilizziamo il nostro attacco end-to-end per rivelare 100 diversi codici 2FA da Google Authenticator su ciascuno dei nostri telefoni Google Pixel. Il nostro attacco recupera correttamente l'intero codice 2FA a 6 cifre nel 73%, 53%, 29% e 53% dei tentativi, rispettivamente su Pixel 6, 7, 8 e 9. Il tempo medio per recuperare ciascun codice 2FA è di 14,3, 25,8, 24,9 e 25,3 secondi per Pixel 6, Pixel 7, Pixel 8 e Pixel 9. Non siamo in grado di rivelare codici 2FA entro 30 secondi utilizzando la nostra implementazione sul dispositivo Samsung Galaxy S25 a causa di un rumore di fondo significativo. Lasciamo a lavori futuri ulteriori indagini su come adattare il nostro attacco per funzionare su questo dispositivo.
In un'e-mail, un rappresentante di Google ha scritto: "Abbiamo rilasciato una patch per CVE-2025-48561 nel bollettino di sicurezza Android di settembre, che mitiga parzialmente questo comportamento. Stiamo rilasciando un'ulteriore patch per questa vulnerabilità nel bollettino di sicurezza Android di dicembre. Non abbiamo riscontrato alcuna prova di sfruttamento in-the-wild".
Il Pixnapping è una ricerca utile in quanto dimostra i limiti delle garanzie di sicurezza e privacy di Google, che impediscono a un'app installata di accedere ai dati di un'altra app. Tuttavia, le sfide nell'implementare l'attacco per rubare dati utili in scenari reali saranno probabilmente significative. In un'epoca in cui gli adolescenti possono rubare segreti alle aziende Fortune 500 semplicemente chiedendolo gentilmente , l'utilità di attacchi più complessi e limitati è probabilmente inferiore.
Questa storia è apparsa originariamente su Ars Technica .
wired