Indice
Un WebRTC leak è il tuo browser che consegna il tuo vero indirizzo IP a un sito web mentre pensi di essere nascosto dietro una VPN. Non è un bug della tua VPN e non è un malware. È WebRTC che fa esattamente ciò per cui è stato progettato: trovare il percorso di rete più veloce possibile tra due browser, il che significa prima scoprire il tuo vero indirizzo IP.
Cos'è un WebRTC leak
WebRTC (Web Real-Time Communication) è l'API del browser alla base delle videochiamate, della chat vocale e del trasferimento di file peer-to-peer che funzionano senza plugin. Jitsi, Google Meet, la voce di Discord e la maggior parte degli strumenti di videochiamata nel browser la usano.
Per collegare due browser direttamente invece di inoltrare ogni pacchetto tramite un server, WebRTC deve conoscere il vero indirizzo IP di ciascun lato. Lo ottiene con STUN (Session Traversal Utilities for NAT), una richiesta leggera che chiede a un server «qual è il mio IP pubblico visto dall'esterno del mio router?». Quella richiesta passa per lo stack di rete proprio del browser, non per il tunnel che il client della tua VPN ha creato per il resto del traffico. Se la VPN non la intercetta esplicitamente, la risposta STUN torna con il tuo vero IP, e qualsiasi pagina che esegue JavaScript WebRTC può leggerla.
Una lacuna della VPN, non un guasto della VPN
Come avviene davvero il leak
- Una pagina carica codice WebRTC (un widget di videochiamata, uno script di fingerprinting di una rete pubblicitaria, qualsiasi cosa chiami RTCPeerConnection).
- Il browser invia una richiesta STUN per scoprire il proprio IP pubblico come parte della raccolta dei candidati ICE.
- Quella richiesta esce dallo stack di rete del sistema operativo, dove nella maggior parte delle configurazioni VPN il tunnel dovrebbe intercettarla, ma spesso non lo fa.
- Il JavaScript della pagina legge direttamente i candidati IP restituiti, senza passare dal server, e ora ha il tuo vero indirizzo.
È anche per questo che la soluzione non è semplice come «bloccare WebRTC». STUN, TURN e ICE sono proprio il meccanismo che rende veloci le videochiamate peer-to-peer, e lo stesso processo di raccolta dei candidati documentato da MDN per creare app WebRTC è quello che, come effetto collaterale, fa trapelare il tuo IP. Il nostro confronto STUN vs TURN vs ICE e la nostra guida all'architettura WebRTC spiegano come funziona questa negoziazione se vuoi i dettagli.
Non tutti i browser sono uguali
Cosa viene davvero esposto
| Esposto | Non esposto |
|---|---|
| Il tuo vero indirizzo IP pubblico | Cronologia di navigazione o contenuto delle pagine |
| Posizione geografica approssimativa (a livello di città, tramite l'IP) | Credenziali di accesso o cookie di sessione |
| Il tuo provider internet, deducibile dal blocco di IP | File o contenuto degli appunti |
Il rischio concreto è la correlazione, non il furto di dati. Se un sito o un inserzionista riesce anche una sola volta a collegare la tua sessione VPN al tuo vero IP, può potenzialmente associare la tua navigazione «anonima» alla tua identità o posizione reale nelle visite successive.
Come fare un WebRTC leak test
Connetti la VPN, poi apri browserleaks.com/webrtc o ipleak.net. Entrambi elencano tutti gli indirizzi IP che lo stack WebRTC del tuo browser è disposto a comunicare. Confrontali con l'IP della tua VPN (verificalo separatamente su una qualsiasi pagina «qual è il mio IP» con la VPN attiva).
Gli IP locali non sono automaticamente un leak
Se preferisci osservarlo tu stesso invece di fidarti di un sito di terze parti, apri i DevTools (F12), vai alla scheda Network e carica una delle pagine di test qui sopra con i filtri WebSocket/other disattivati. Vedrai partire la richiesta STUN e tornare gli IP candidati nella risposta, gli stessi dati che il sito di test si limita a formattare.
Puoi anche fare la verifica senza un sito di terze parti: apri il nostro tester ICE WebRTC con la VPN attiva, scegli il preset STUN e raccogli i candidati. Se un candidato server reflexive mostra il tuo vero IP pubblico invece di quello della VPN, quello è il leak.
Fermare la perdita di IP WebRTC browser per browser
| Browser | Cosa fare | Contropartita |
|---|---|---|
| Firefox | about:config → impostare media.peerconnection.enabled su false | Disattiva completamente WebRTC e blocca Meet, la voce di Discord e qualsiasi sito che usa RTCPeerConnection |
| Chrome / Edge | Nessuna impostazione per l'utente. Usa un'estensione basata sull'API webRTCIPHandlingPolicy di Chrome (vedi sotto) | Richiede di fidarsi di un'estensione di terze parti |
| Safari | WebRTC è attivo per impostazione predefinita da Safari 11; nemmeno qui c'è un interruttore semplice per disattivarlo | Meno estensioni disponibili rispetto a Chrome/Firefox |
Dato che un interruttore che spegne del tutto WebRTC blocca anche le
videochiamate legittime, un'estensione del browser che limita il
routing di WebRTC invece di disattivare l'intera API è la soluzione più
pratica per la maggior parte delle persone. Chrome espone
un'API per la privacy
che permette a un'estensione di impostare webRTCIPHandlingPolicy su
disable_non_proxied_udp, costringendo WebRTC a passare per
l'interfaccia proxy o VPN configurata invece di uscire direttamente.
WebRTC Leak Prevent
è un'estensione attuale e open source costruita proprio su questa API.
uBlock Origin non lo fa più su desktop
Qualunque soluzione tu scelga, ripeti poi il test della sezione precedente. Gli aggiornamenti del browser disattivano le estensioni più spesso di quanto si pensi.
Il ruolo della tua VPN
Non tutte le VPN gestiscono la cosa allo stesso modo, e gli slogan di marketing («crittografia di livello militare», «anonimato totale») non dicono nulla su WebRTC in particolare. Prima di contare su una VPN per coprire questo aspetto, cerca:
- Una menzione esplicita della protezione dai WebRTC leak nella documentazione della VPN, non solo una protezione dai DNS leak o un kill switch (sono meccanismi diversi)
- Un'estensione del browser dello stesso fornitore, perché il blocco dei WebRTC leak è di solito implementato a livello di estensione, non nel client VPN del sistema operativo
- Risultati di test indipendenti, non solo le affermazioni del fornitore
Poi verifica tu stesso con il test precedente, sul browser e sul dispositivo che usi davvero ogni giorno. Una VPN che blocca i WebRTC leak su Chrome desktop non fa necessariamente lo stesso nella sua app mobile.
Se preferisci non dipendere dalla parola di un fornitore VPN esterno per tutto questo, la soluzione è gestirne una tua. Il nostro confronto delle VPN self-hosted copre configurazioni OpenVPN, WireGuard e Headscale in cui controlli la configurazione del client dall'inizio alla fine.
Se sviluppi con WebRTC
Se sei tu a gestire l'infrastruttura di videochiamata, e non solo l'utente, la questione dei leak si ribalta: vuoi una scoperta accurata degli IP, così le chiamate si collegano peer-to-peer invece di passare da un server TURN a ogni sessione. La domanda sulla privacy diventa allora cosa fa il tuo codice lato client con gli IP candidati che raccoglie, e se li registri da qualche parte dove non dovresti. I deployment self-hosted (per esempio Jitsi dietro la tua istanza coturn) ti danno su questo flusso di dati una visibilità che uno strumento SaaS ospitato non offre.
Gli indirizzi IP sono dati personali secondo il GDPR e normative simili: se la tua app serve utenti nell'UE, registrare gli IP candidati grezzi delle sessioni WebRTC è una decisione da prendere consapevolmente, non per impostazione predefinita. Consulta le nostre note sui deployment WebRTC conformi al GDPR e le nostre best practice di sicurezza per Jitsi Meet se sei tu a gestire l'infrastruttura e non solo un utente.
Domande frequenti
Cos'è un WebRTC leak?
Un WebRTC leak si verifica quando il motore WebRTC del tuo browser rivela a un sito web il tuo vero indirizzo IP, anche se sei connesso a una VPN. Succede perché WebRTC esegue una propria scoperta dell'IP (tramite STUN) al di fuori del controllo della VPN, non perché la VPN stessa abbia fallito.
Come faccio un WebRTC leak test?
Apri browserleaks.com/webrtc o ipleak.net con la VPN connessa. Se vedi un indirizzo IP diverso da quello della VPN, è un leak. La comparsa di IP locali o privati (192.168.x.x, 10.x.x.x) non è di per sé un leak, perché Chrome li nasconde per impostazione predefinita dietro mDNS, ma un IP pubblico che non è quello della VPN lo è.
Disattivare WebRTC nel browser risolve il problema?
Sì, ma è uno strumento grossolano. In Firefox, impostare media.peerconnection.enabled su false in about:config disattiva completamente WebRTC, e così smettono di funzionare anche Google Meet, la voce di Discord e qualsiasi sito che chiama RTCPeerConnection. Chrome non ha un interruttore unico equivalente. Se ti affidi ogni giorno a videochiamate basate su WebRTC, un'estensione mirata è di solito un compromesso migliore rispetto a disattivare del tutto l'API.
Cosa rivela davvero un WebRTC leak?
Il tuo vero indirizzo IP pubblico. Da questo, un sito può dedurre la tua posizione geografica approssimativa e il tuo provider internet, e collegarlo ad altre sessioni in cui la VPN non era attiva. Non rivela la cronologia di navigazione, le credenziali né il contenuto dei file.
Perché è importante se uso già una VPN?
Perché il leak avviene a un livello che la VPN non tocca. Una VPN reindirizza il tuo traffico IP generale, ma le richieste STUN di WebRTC possono ottenere il tuo vero IP direttamente dallo stack di rete. Che la tua VPN lo blocchi dipende dal fatto che il fornitore abbia integrato la gestione di WebRTC nel suo client, non dal protocollo VPN in sé.
Come impedisco a una VPN di far trapelare il traffico WebRTC?
Controlla se il client della tua VPN documenta in modo specifico una protezione dai WebRTC leak (non solo un 'kill switch' o una 'protezione dai DNS leak', che sono cose diverse). Se non lo fa, o se non ne sei sicuro, aggiungi come secondo livello un'estensione del browser che blocca WebRTC, poi ripeti il test con la VPN attiva.
Sono vulnerabili sia Chrome sia Firefox?
Entrambi implementano WebRTC, quindi entrambi possono avere leak. Da Chrome 75 (2019), Chrome nasconde per impostazione predefinita gli IP della rete locale dietro nomi host mDNS, il che chiude automaticamente una via di leak. Questo non impedisce a STUN di scoprire il tuo vero IP pubblico. Safari supporta WebRTC per impostazione predefinita da Safari 11: il vecchio consiglio secondo cui Safari sarebbe 'immune' è quindi superato.
Anche i browser mobili sono interessati?
Sì. Chrome e Firefox su mobile usano lo stesso stack WebRTC del desktop, quindi vale lo stesso leak basato su STUN. La soluzione è la stessa: verifica come l'app della tua VPN gestisce WebRTC e usa un'estensione che blocca WebRTC se il tuo browser mobile supporta le estensioni.
Gestisci la tua infrastruttura WebRTC?
Distribuiamo e mettiamo in sicurezza installazioni self-hosted di Jitsi e coturn per i team che vogliono controllare dove vanno davvero i dati di chiamata e di connessione.
Parla con il nostro team