Un gruppo di ricercatori di quattro università americane ha sviluppato una tecnica di attacco chiamata Pixnapping (CVE-2025-48561), che consente a applicazioni Android non privilegiate, che non richiedono autorizzazioni aggiuntive, di determinare il contenuto visualizzato sullo schermo da altre applicazioni. Come esempio pratico dell'attacco, è stata dimostrata la capacità di determinare i codici di autenticazione a due fattori visualizzati dall'app Google Authenticator. È stato anche mostrato come l'attacco possa essere utilizzato per estrarre dati riservati visualizzati durante l'uso di Gmail, Signal, Venmo e Google Maps.
Per determinare il contenuto dello schermo, è stato impiegato un metodo di analisi pixel per pixel, implementato nel 2023 dallo stesso team di ricercatori nell'attacco tramite canali esterni GPU.zip e descritto per la prima volta nel 2013. Il metodo si basa sul fatto che, a causa delle ottimizzazioni presenti nella GPU, il rendering di un pixel con un colore che ripete un colore già visualizzato sullo schermo avviene più rapidamente rispetto a un pixel con un colore diverso. Valutando la differenza di tempo nel rendering dei pixel, è possibile ricreare il contenuto già presente sullo schermo e formare un'imitazione di uno screenshot.
L'attacco Pixnapping consiste nella chiamata di un'applicazione target, nella visualizzazione sopra di essa di una propria finestra e nell'analisi pixel per pixel del contenuto con un'analisi del tempo di esecuzione delle operazioni grafiche su ciascun pixel. Tale analisi consente di determinare con alta probabilità quali pixel hanno il colore bianco dello sfondo e quali partecipano alla visualizzazione dei caratteri. Per nascondere le manipolazioni dei pixel all'utente, vengono sovrapposti strati con maschere: durante l'attacco continua a essere visualizzato sullo schermo il contenuto della finestra dell'applicazione da cui avviene l'attacco.
Per attivare l'applicazione bersaglio e portare i pixel della sua finestra nel pipeline di rendering si effettua lo switch tra le attività Android tramite richieste intent. Sulle finestre dell'applicazione bersaglio vengono visualizzate finestre semitrasparenti che evidenziano singoli pixel e avviano l'esecuzione di operazioni grafiche su di essi utilizzando l'API Window Blurs. Per misurare il tempo di rendering di un pixel con precisione, vengono utilizzati callback associati a VSync.

Una limitazione del metodo proposto in precedenza GPU.zip era la bassa performance: durante l'attacco al browser, identificare il nome con cui l'utente è entrato in Wikipedia in un'altra scheda richiedeva 30 minuti su GPU AMD Ryzen 7 4800U e 215 minuti su GPU Intel i7-8700 con una precisione del 97-98%. Per rispettare il limite di 30 secondi dell'intervallo di aggiornamento dei codici in Google Authenticator, il metodo è stato migliorato e ottimizzato. Il numero di controlli per ogni pixel è stato ridotto da 64 a 16, e il ritardo tra l'elaborazione dei pixel è stato diminuito da 1.5 secondi a 70 millisecondi. La scansione veniva effettuata non su tutto lo schermo, ma solo sull'area in cui Google Authenticator mostra il codice.
Il metodo è stato testato su smartphone Pixel 6, 7, 8 e 9 con versioni Android 13-16 per identificare i sei codici a sei cifre di autenticazione a due fattori generati in Google Authenticator. La precisione nell'identificazione dei codici sui suddetti smartphone è stata rispettivamente del 73%, 53%, 29% e 53%, con tempi di identificazione di 14.3, 25.8, 24.9 e 25.3 secondi. Sullo smartphone Samsung Galaxy S25, i ricercatori non sono riusciti a rimanere all'interno dell'intervallo di 30 secondi a causa del rumore generato dal funzionamento di altre applicazioni, ma sul dispositivo sono state mostrate opzioni di attacco su altre applicazioni, per le quali non c'erano limitazioni di tempo. I meccanismi utilizzati nell'attacco non sono specifici per i singoli modelli di smartphone e l'attacco potenzialmente coinvolge qualsiasi dispositivo Android.
Google, nei patch di settembre sulle vulnerabilità, ha introdotto in Android una protezione iniziale contro l'attacco, basata sul divieto di applicare l'operazione di sfocatura su un gran numero di livelli. In risposta, i ricercatori hanno trovato un modo per eludere questa limitazione, quindi Google prevede di implementare una protezione più completa nell'aggiornamento di dicembre di Android. I produttori di GPU non hanno ancora annunciato l'intenzione di risolvere il canale di fuga, nonostante il metodo di attacco sia noto da più di 12 anni.
Fonte: opennet.ru
