Una singola parola hardcoded nel codice sorgente di un’estensione VPN estremamente popolare ne permetteva il controllo completo da parte di qualunque pagina web. È quanto accaduto nel caso di Urban VPN, una delle estensioni VPN più installate su Chrome ed Edge.
Bastava caricare poche righe JavaScript all’interno di una pagina HTML per disattivare la VPN, modificare la configurazione della connessione, alterare le impostazioni sulla privacy e persino interferire con altre estensioni installate nel browser. Agghiacciante.
Dopo la scoperta, su segnalazione di Bay Area Labs, gli sviluppatori di Urban VPN hanno corretto la vulnerabilità rilasciando la versione 5.12.5, distribuita a partire dal 21 maggio 2026.
Una falla costruita attorno al funzionamento di base dell’estensione VPN
Il cuore del problema risiede nell’uso di window.postMessage, meccanismo standard del browser che permette a finestre, frame e componenti diversi di scambiarsi dati.
Molte estensioni Chrome utilizzano questo sistema per comunicare tra contenuti web e componenti interni: la pratica non è pericolosa di per sé ma ogni implementazione dovrebbe verificare con attenzione chi sta inviando il messaggio.
Chrome mette a disposizione la proprietà event.origin proprio per questo scopo: un’estensione può accettare richieste soltanto da domini fidati e ignorare tutte le altre. Urban VPN, invece, non eseguiva alcun controllo sull’origine. Il codice analizzato dai ricercatori effettuava soltanto due verifiche: la presenza dell’ID pubblico dell’estensione e una stringa fissa denominata Toad. Se entrambe coincidevano, il messaggio veniva inoltrato al service worker interno che eseguiva il comando richiesto.
Dal punto di vista della sicurezza è una situazione quasi paradossale: l’ID dell’estensione è pubblico e visibile a chiunque attraverso il Chrome Web Store; la parola Toad ovvero il termine che di fatto consegnava il controllo dell’estensione a qualunque soggetto, risultava incorporata nel codice distribuito agli utenti. In pratica il meccanismo di autenticazione era interamente accessibile all’attaccante.
Come un sito poteva prendere il controllo della VPN
Una volta individuati i due valori richiesti, qualsiasi pagina web poteva costruire un messaggio compatibile con il protocollo interno dell’estensione. Non era necessario convincere l’utente a cliccare qualcosa; nessuna richiesta di autorizzazione.; nessun popup: il browser eseguiva il codice e Urban VPN accettava il comando.
Tra le operazioni disponibili figuravano istruzioni come LocationProcessor.Disconnect, utilizzata per interrompere immediatamente la connessione VPN, oppure LocationProcessor.Connect, che permetteva di forzare il collegamento verso un paese specifico scelto dall’attaccante. I ricercatori mostrano anche la possibilità di aggiungere domini alla lista di esclusione del tunnel VPN attraverso BypassMessages.AddItem.
In pratica un aggressore poteva decidere quali siti far transitare fuori dalla VPN e quali mantenere all’interno del tunnel cifrato. Una tecnica del genere apre scenari sinistri per campagne di tracciamento mirato, raccolta di indirizzi IP reali e analisi del comportamento di navigazione.
WebRTC, proxy e altre impostazioni sotto attacco
I ricercatori hanno inoltre individuato funzioni capaci di modificare la protezione contro la condivisione dell’indirizzo IP reale dell’utente, attraverso WebRTC, con la VPN ancora abilitata. Disattivando tale protezione, il browser poteva continuare a mostrare una connessione apparentemente protetta mentre alcune richieste di rete rivelavano comunque l’IP reale dell’utente.
Come accennato in precedenza, l’estensione Urban VPN poteva poi essere sfruttata per gestire altre estensioni: il comando InterruptExtensions.DisableInterruptedExtensions, ad esempio, permetteva di disabilitare altri componenti con privilegi proxy o funzionalità simili. Un sito malevolo avrebbe potuto sfruttare anche questa capacità per ridurre ulteriormente le difese presenti nel browser.
Tra i comandi documentati compare inoltre l’apertura arbitraria di nuove schede tramite Tab.OpenTab. Non si tratta della funzione più critica dell’elenco, ma rappresenta comunque una superficie aggiuntiva sfruttabile per campagne di phishing o reindirizzamenti indesiderati.
Le implicazioni per il settore delle estensioni VPN
La storia di Urban VPN non rappresenta un incidente isolato. Diverse estensioni per il browser hanno mostrato negli anni errori simili nella gestione delle comunicazioni tra pagina web e componenti privilegiati.
La differenza sta nel livello di autorizzazioni possedute da una VPN: un’estensione che controlla proxy, instradamento del traffico, bypass di domini e impostazioni di privacy dispone di privilegi molto superiori rispetto a quelli di un comune componente per la produttività.
Molte persone considerano le VPN come uno strumento di fiducia assoluta: quando un’estensione ottiene accesso alla navigazione e alla gestione della rete, ogni errore progettuale assume conseguenze più ampie rispetto a quelle osservabili in altri software.
Occorre quindi valutare bene chi sviluppa il prodotto, come gestisce la raccolta dati, se pubblica audit indipendenti e quale modello economico sostiene il servizio. Le VPN gratuite continuano ad attirare milioni di installazioni, ma spesso il vero costo emerge soltanto quando qualcuno analizza il codice.
La curiosa presenza di Toad e il problema delle funzionalità nascoste
Tra gli aspetti più singolari della vicenda, come abbiamo visto, la presenza della stringa Toad, utilizzata come sorta di parola chiave per autorizzare l’esecuzione dei comandi destinati all’estensione. Il riferimento sembra richiamare il celebre personaggio della serie Nintendo, anche perché all’interno dei messaggi analizzati compare anche il nome Mario. Non esistono indicazioni ufficiali che spieghino il significato della scelta, ma tutto lascia pensare a un elemento introdotto dagli sviluppatori durante le fasi di test o sviluppo interno.
La questione, però, è davvero molto seria. Inserire all’interno di un’estensione che gestisce il traffico di rete un canale di comunicazione privilegiato basato su valori hardcoded significa creare una sorta di backdoor. In un ambiente di sviluppo può avere una funzione pratica: consente agli sviluppatori di simulare eventi, cambiare rapidamente configurazioni, attivare o disattivare funzioni senza passare dall’interfaccia grafica. Quando però tale meccanismo finisce nella versione distribuita agli utenti e soprattutto rimane accessibile da qualunque sito web, il rischio aumenta drasticamente.
L’ipotesi più plausibile, nel caso di Urban VPN, è quella di un’interfaccia interna dimenticata o sottovalutata durante il processo di revisione della sicurezza. Va detto però che una VPN rappresenta uno dei componenti più sensibili installabili nel browser: dispone di privilegi elevati, controlla l’instradamento del traffico e può influenzare direttamente la riservatezza della navigazione. In una situazione del genere affidare l’autenticazione a due valori statici pubblicamente recuperabili appare una scelta difficile da giustificare.
Ancora più sorprendente è l’assenza del controllo su event.origin, una delle verifiche più basilari quando si utilizza postMessage. Se tale controllo fosse stato implementato correttamente, la presenza della stringa Toad sarebbe probabilmente rimasta un dettaglio più marginale.