VPN: GrapheneOS corregge una falla Android ignorata da Google

Una vulnerabilità di Android 16 consente ad app senza privilegi speciali di bypassare la VPN e rivelare l'IP reale dell'utente. Google non correggerà il problema; GrapheneOS ha già distribuito una patch disabilitando la funzione coinvolta.

Una VPN su Android dovrebbe comportarsi come una barriera invalicabile: se il tunnel cifrato cade oppure un’app prova a comunicare all’esterno senza autorizzazione, il sistema deve bloccare ogni pacchetto. Una scoperta che ha come protagonista Android 16 ha però sollevato qualche riserva sul comportamento del sistema operativo Google.

Un ricercatore indipendente ha infatti individuato un comportamento anomalo nello stack di rete di Android: una normale app, senza privilegi avanzati e senza permessi particolari, può sfruttare una funzione introdotta da Google per gestire traffico QUIC direttamente sulla rete reale a cui è connesso il dispositivo, aggirando il tunnel VPN. Il risultato è che l’indirizzo IP pubblico dell’utente può finire esposto anche quando tutte le protezioni della VPN risultano attive.

La questione ha attirato attenzione anche per un altro motivo: Google ha classificato il bug come “Won’t Fix (Infeasible)“, decidendo di non distribuire alcuna correzione tramite  i bollettini di sicurezza Android. GrapheneOS, versione derivata di Android orientata alla privacy e all’hardening del sistema, ha invece rilasciato una patch nel giro di pochi giorni.

Come funziona il bypass della VPN su Android 16

Quando una VPN è attiva in modalità completa, il sistema usa regole di routing e marcature dei socket per obbligare le applicazioni a usare esclusivamente il tunnel cifrato. Android implementa questa logica tramite il framework di rete e il daemon netd, che gestisce routing, firewall e binding delle connessioni.

Con Android 16 Google ha introdotto una funzione pensata per chiudere in modo “pulito” alcune connessioni QUIC, il protocollo UDP su cui si basano HTTP/3 e numerosi servizi moderni. Quando un’app termina improvvisamente o perde una connessione, il sistema può inviare un piccolo pacchetto finale per notificare la chiusura della sessione al server remoto. Dal punto di vista tecnico l’idea ha senso: riduce timeout inutili e migliora la gestione delle connessioni persistenti.

Secondo l’analisi pubblicata dal ricercatore, tuttavia, Android non verifica in modo adeguato se un’app debba essere confinata dentro la VPN. Il risultato è curioso e piuttosto delicato: il processo system_server, che gira con privilegi elevati e non subisce le stesse restrizioni delle app normali, invia il pacchetto direttamente sulla rete fisica WiFi o sulla rete dati mobile.

In altre parole l’app non trasmette il traffico da sola: chiede al sistema di farlo al suo posto. E siccome system_server possiede privilegi di rete differenti, il traffico bypassa completamente il tunnel VPN.

Perché il bug è insolito rispetto ai classici leak VPN

Molti leak VPN su Android derivano da DNS, transizioni tra WiFi e rete mobile oppure meccanismi di connettività del sistema. Qui invece il bypass sfrutta una funzione ufficiale introdotta direttamente nel framework Android 16. Non serve root, non servono API private e non servono permessi anomali.

Il ricercatore ha dimostrato il comportamento su un Pixel 8 con build Android 16 QPR1 e VPN attiva tramite Proton VPN. Anche con le impostazioni più restrittive abilitate, il dispositivo inviava pacchetti UDP all’esterno del tunnel cifrato mostrando l’indirizzo IP reale.

La parte più interessante è che il leak in questione sfrutta esclusivamente permessi normalmente concessi a quasi tutte le applicazioni Android: INTERNET e ACCESS_NETWORK_STATE. Dal punto di vista del rilevamento, questo complica parecchio le cose, perché un’app che usa quei permessi non appare automaticamente sospetta.

In pratica uno sviluppatore malevolo potrebbe integrare il meccanismo dentro SDK pubblicitari, framework di telemetria o componenti analytics: non servirebbe nemmeno un malware tradizionale.

La posizione di Google e il nodo del threat model

Google ha chiuso la segnalazione classificandola come problema non correggibile o non compatibile con la valutazione di minaccia.

Molti ricercatori però contestano questa interpretazione. Il motivo è semplice: le impostazioni “Always-On VPN” e “Block connections without VPN” sono presentate come una garanzia assoluta di isolamento del traffico. Se un’app senza privilegi riesce comunque a trasmettere dati fuori dal tunnel VPN, per diversi esperti si tratta di una violazione diretta delle aspettative di sicurezza dichiarate dalla piattaforma.

Il ricercatore ha anche citato precedenti simili, incluso CVE-2023-21383, che riguardava bypass nel routing VPN Android: Google non ha cambiato posizione neppure dopo l’appello formale. E, nel frattempo, sono spuntate app che condividono strumenti per rilevare l’uso di VPN e far emergere gli indirizzi IP reali.

La patch di GrapheneOS e cosa cambia realmente

GrapheneOS, distribuzione Android open source focalizzata su privacy, hardening e sicurezza avanzata (addirittura invisa ad alcuni governi), ha invece subito affrontato il problema: gli sviluppatori hanno semplicemente disattivato la funzione vulnerabile nella release 2026050400. La scelta elimina del tutto la superficie d’attacco, sacrificando il piccolo beneficio prestazionale legato alla chiusura elegante delle connessioni QUIC.

Dal punto di vista tecnico la mitigazione interviene sul flag close_quic_connection: il sistema usa quel parametro per decidere se abilitare o meno il meccanismo di chiusura automatica QUIC introdotto in Android 16.

Sui dispositivi Android standard è possibile intervenire in modo manuale passando da ADB (Android Debug Bridge), con il seguente comando:

adb shell device_config put tethering close_quic_connection -1

La soluzione non è particolarmente accessibile per gli utenti normali: richiede una minima confidenza con ADB, l’attivazione delle Opzioni per gli sviluppatori, debug USB e una certa familiarità con gli strumenti Android developer.

Chi rischia davvero e quanto è grave il problema

Per la maggior parte degli utenti il rischio concreto resta moderato. L’attacco richiede comunque l’installazione preventiva di un’app costruita appositamente per sfruttare il leak: non basta visitare un sito malevolo o collegarsi a una rete Wi-Fi pubblica.

Il discorso cambia per chi usa Android in ambienti “delicati”: un giornalista che opera sotto censura, un attivista in un Paese autoritario oppure un ricercatore che usa le VPN proprio per nascondere i dati della connessione reale potrebbero considerare questa falla molto più seria.

C’è poi un ulteriore aspetto importante: la fiducia nelle garanzie di isolamento offerte dal sistema operativo. Quando per Android si dichiara che nessun traffico può uscire dalla VPN, gli utenti si aspettano esattamente quello.

Ti consigliamo anche

Link copiato negli appunti