Vulnerabilità Pixnapping: screenshot non bloccabili del telefono Android

Pixnapping è una vulnerabilità Android scoperta dai ricercatori che consente alle app di sottrarre password, codici monouso e altre informazioni riservate dallo schermo senza autorizzazioni speciali da parte del sistema operativo. Come funziona questa minaccia e cosa fare per proteggersi?

Android inasprisce costantemente le restrizioni delle app per impedire ai truffatori di utilizzare software dannosi per rubare denaro, password e i segreti privati degli utenti. Tuttavia, una nuova vulnerabilità denominata Pixnapping ignora tutti i livelli protettivi di Android e consente a un utente malintenzionato di leggere impercettibilmente i pixel dell’immagine dallo schermo, essenzialmente facendo uno screenshot. Un’app dannosa senza autorizzazioni può visualizzare sullo schermo password, saldi dei conti bancari, codici monouso e qualsiasi altro elemento visualizzato dal proprietario. Fortunatamente, Pixnapping è al momento un progetto puramente basato sulla ricerca e non viene ancora sfruttato attivamente dagli autori delle minacce. La speranza è che Google corregga a fondo la vulnerabilità prima che il codice di attacco venga integrato nel malware reale. Al momento, la vulnerabilità Pixnapping (CVE-2025-48561) riguarda probabilmente tutti i moderni smartphone Android, inclusi quelli che eseguono le versioni Android più recenti.

Perché gli screenshot, la proiezione dei file multimediali e la lettura dello schermo sono pericolosi

Come dimostrato dallo stealer OCR SparkCat che abbiamo scoperto, gli autori delle minacce sono già esperti di elaborazione delle immagini. Se l’immagine di uno smartphone contiene un’informazione preziosa, il malware è in grado di rilevarla, eseguire l’OCR direttamente sul telefono, quindi esfiltrare i dati estratti nel contenitore del server dell’utente malintenzionato. SparkCat è particolarmente degno di nota perché è riuscito a infiltrarsi nei marketplace ufficiali delle app, incluso l’App Store. Non sarebbe difficile per un’app dannosa abilitata per Pixnapping replicare questo trucco, soprattutto perché l’attacco non richiede alcuna autorizzazione speciale. Un’app che sembra offrire una funzionalità legittima e utile potrebbe inviare simultaneamente e silenziosamente codici di autenticazione multifattoriale monouso, password di criptovalute e qualsiasi altra informazione ai truffatori.

Un’altra tattica popolare utilizzata dagli utenti malintenzionati consiste nel visualizzare i dati richiesti come illustrati, in tempo reale. Per questo approccio di social engineering, la vittima viene contattata tramite un’app di messaggistica e, con vari pretesti, convinta ad abilitare la condivisione dello schermo.

Anatomia dell’attacco

I ricercatori sono stati in grado di creare screenshot dei contenuti di altre app combinando metodi precedentemente noti per rubare pixel dai browser e dalle unità di elaborazione grafica (GPU) dei telefoni ARM. L’app responsabile dell’attacco sovrappone automaticamente le finestre traslucide alle informazioni di destinazione e quindi misura il modo in cui il sistema video combina i pixel di queste finestre a più livelli in un’immagine finale.

Già nel 2013 i ricercatori descrivevano un attacco che consentiva a un sito Web di caricarne un altro all’interno di una parte della propria finestra (tramite un iframe) e, eseguendo operazioni legittime di stratificazione e trasformazione delle immagini, dedurre esattamente cosa era disegnato o scritto sull’altro sito. Sebbene i browser moderni abbiano mitigato questo attacco specifico, un gruppo di ricercatori statunitensi ha ora capito come applicare lo stesso principio di base ad Android.

L’app dannosa invia prima una chiamata di sistema all’app di destinazione. In Android questa operazione è nota come Intent. Gli Intent in genere consentono non solo il semplice avvio delle app, ma anche l’apertura immediata di un browser per un URL specifico o di un’app di messaggistica per la chat di un contatto specifico. L’app responsabile dell’attacco invia un Intent progettato per forzare il rendering dello schermo con le informazioni riservate da parte dell’app di destinazione. Vengono utilizzati speciali flag di avvio nascosti. L’app responsabile dell’attacco invia quindi un Intent di avvio a se stessa. Questa specifica combinazione di azioni consente all’app della vittima di non apparire affatto sullo schermo, ma continua a visualizzare in background le informazioni ricercate dall’utente malintenzionato nella relativa finestra.

Nella seconda fase dell’attacco, l’app dannosa sovrappone alla finestra nascosta dell’app della vittima una serie di finestre traslucide, ognuna delle quali copre e sfoca il contenuto sottostante. Questa disposizione complessa delle finestre rimane invisibile all’utente, ma Android calcola come dovrebbe apparire se l’utente la portasse in primo piano.

L’app responsabile dell’attacco può leggere direttamente i pixel solo dalle proprie finestre traslucide; l’immagine combinata finale, che incorpora il contenuto dello schermo dell’app della vittima, non è direttamente accessibile all’utente malintenzionato. Per aggirare questa restrizione, i ricercatori impiegano due ingegnosi espedienti: (i) il pixel specifico da rubare viene isolato dall’ambiente circostante sovrapponendo all’app della vittima una finestra per lo più opaca che ha un singolo punto trasparente esattamente sopra il pixel di destinazione; (ii) un livello di ingrandimento viene quindi posizionato sopra questa combinazione, costituito da una finestra con una forte sfocatura abilitata.

Come funziona la vulnerabilità di Pixnapping

Come funziona la vulnerabilità di Pixnapping

Per decifrare e determinare il valore del pixel più in basso, i ricercatori hanno sfruttato un’altra vulnerabilità nota, GPU.zip (può sembrare un collegamento a un file, ma in realtà porta al sito mostrando un documento di ricerca). Questa vulnerabilità si basa sul fatto che tutti i moderni smartphone comprimono i dati di qualsiasi immagine inviata dalla CPU alla GPU. Questa compressione è senza perdite (come un file ZIP), ma la velocità di compressione e decompressione cambia a seconda delle informazioni trasmesse. GPU.zip consente a un utente malintenzionato di misurare il tempo necessario per comprimere le informazioni. Sincronizzando queste operazioni, l’utente malintenzionato può dedurre quali dati vengono trasferiti. Con l’aiuto di GPU.zip, il singolo pixel isolato, sfocato e ingrandito della finestra dell’app vittima può essere letto correttamente dall’app che attacca.

Rubare qualcosa di significativo implica ripetere l’intero processo di furto di pixel centinaia di volte, poiché deve essere applicato a ciascun punto separatamente. Tuttavia, questa operazione è del tutto fattibile in un breve lasso di tempo. In un video dimostrativo dell’attacco, un codice a sei cifre di Google Authenticator è stato estratto correttamente in soli 22 secondi mentre era ancora valido.

In che modo Android protegge la riservatezza dello schermo

I tecnici Google hanno quasi vent’anni di esperienza nella lotta a vari attacchi alla privacy, il che ha portato a una difesa a più livelli contro l’acquisizione illegale di screenshot e video. L’elenco completo di queste misure dovrebbe estendersi su più pagine, pertanto vengono elencate solo alcune protezioni chiave:

  • Il flag della finestra FLAG_SECURE impedisce al sistema operativo di acquisire schermate del contenuto.
  • L’accesso agli strumenti di proiezione multimediale (acquisizione del contenuto dello schermo come flusso multimediale) richiede la conferma esplicita dell’utente e può essere eseguito solo da un’app visibile e attiva.
  • Sono previste rigide restrizioni per l’accesso ai servizi di amministrazione come AccessibilityService e la possibilità di eseguire il rendering degli elementi dell’app rispetto ad altre app.
  • Le password monouso e gli altri dati segreti vengono nascosti automaticamente se viene rilevata la proiezione del supporto.
  • Android impedisce alle app di accedere ai dati di altre app. Inoltre, le app non possono richiedere un elenco completo di tutte le app installate nello smartphone.

Purtroppo, Pixnapping ignora tutte queste restrizioni esistenti e non richiede assolutamente autorizzazioni speciali. L’app in grado di eseguire l’attacco richiede solo due funzionalità fondamentali: eseguire il rendering delle proprie finestre e inviare chiamate di sistema (Intent) ad altre app. Questi sono i componenti di base delle funzionalità Android, quindi è molto difficile limitarli.

Quali dispositivi sono interessati da Pixnapping e come difendersi

La fattibilità dell’attacco è stata confermata nelle versioni di Android 13-16 nei dispositivi Google Pixel dalle generazioni 6-9, nonché nel Samsung Galaxy S25. I ricercatori ritengono che l’attacco funzionerà anche su altri dispositivi Android, poiché tutti i meccanismi utilizzati sono standard. Tuttavia, potrebbero esserci sfumature relative all’implementazione della seconda fase dell’attacco (la tecnica di ingrandimento dei pixel).

Google ha rilasciato una patch a settembre dopo essere stata informata dell’attacco a febbraio. Purtroppo il metodo scelto per correggere la vulnerabilità non si è rivelato sufficientemente affidabile e i ricercatori hanno rapidamente escogitato un modo per aggirare la patch. Un nuovo tentativo di eliminare la vulnerabilità è previsto per il rilascio dell’aggiornamento di dicembre di Google. Per quanto riguarda GPU.zip, non è prevista l’emissione di una patch per questo canale di fuga di dati specifico. Per lo meno nessun produttore di GPU per smartphone ha annunciato piani in tal senso da quando il difetto è diventato di dominio pubblico nel 2024.

Le opzioni dell’utente per difendersi dal Pixnapping sono limitate. È consigliabile adottare le seguenti misure:

  • Esegui immediatamente l’aggiornamento alla versione più recente di Android con tutte le patch di protezione correnti.
  • Evita di installare app da fonti non ufficiali e presta attenzione alle app degli store ufficiali se sono nuovissime, se hanno un basso numero di download o se hanno valutazioni scarse.
  • Verifica che nel telefono venga utilizzato un sistema di protezione completo, ad esempio Kaspersky per Android

Esistono altri metodi non standard per attaccare Android:

Consigli