Test de fuite WebRTC

Un VPN change l’adresse que voient les sites web. Votre navigateur peut quand même en laisser filer une autre par WebRTC, la fonction derrière les appels dans le navigateur. Ce test met les deux côte à côte.

01 · Ce que voit notre serveur

216.73.216.146

Amazon.com, Inc. · AS16509

L’adresse d’où part votre trafic. Avec un VPN connecté, ce devrait être celle du VPN.

02 · Ce que révèle WebRTC

Collecte des adresses…

La comparaison utilise uniquement des adresses publiques et se fait dans votre navigateur. Pour connaître sa propre adresse publique, le navigateur interroge deux serveurs STUN, l’un exploité par Google et l’autre par Cloudflare, qui voient votre adresse comme n’importe quel site web. Les adresses publiques trouvées sont envoyées à notre serveur dans un seul but : nommer le réseau auquel elles appartiennent. Les adresses locales restent sur votre appareil et nous ne stockons rien.

Pourquoi un navigateur peut connaître plus d’une adresse

Charger une page web est un échange simple. Votre navigateur demande, un serveur répond et le serveur apprend une seule chose sur votre réseau : l’adresse d’où venait la requête. Un appel vidéo fonctionne autrement. Deux navigateurs essaient d’envoyer l’audio et la vidéo directement l’un à l’autre et pour cela chacun doit dire à l’autre où il peut être joint.

WebRTC est la fonction du navigateur qui s’en charge. Avant un appel, elle collecte toutes les adresses susceptibles de fonctionner, une étape appelée collecte ICE. Elle liste les adresses des interfaces réseau de votre appareil, puis pose une question à un assistant public appelé serveur STUN : « de quelle adresse me voyez-vous arriver ? » Chaque réponse devient un « candidat ».

N’importe quelle page web peut lancer cette collecte avec quelques lignes de JavaScript. Elle n’a besoin ni d’un appel ni d’une demande d’autorisation et rien ne s’affiche à l’écran. Si la question STUN voyage hors du tunnel de votre VPN, ou par une interface que le VPN ne couvre pas, la liste de candidats contient l’adresse que votre fournisseur vous a donnée. C’est cela, une fuite WebRTC.

Ce que fait le test

  1. Au chargement de la page, notre serveur note l’adresse d’où est venue votre requête et nomme le réseau qui la possède. C’est la case 01.
  2. Votre navigateur ouvre une connexion WebRTC qui ne mène nulle part, dirigée vers deux serveurs STUN, l’un exploité par Google et l’autre par Cloudflare et collecte des candidats pendant sept secondes au plus.
  3. Les candidats sont triés. Les plages privées (10.x, 172.16 à 172.31, 192.168.x), les adresses partagées par les opérateurs (100.64 à 100.127), les adresses de lien local et les noms en .local sont mis de côté comme locaux. Les autres sont publics.
  4. Jusqu’à six adresses publiques sont envoyées à notre serveur, qui renvoie le réseau auquel chacune appartient.
  5. Chaque adresse publique est comparée à la case 01 et reçoit une étiquette.

Lire les étiquettes

ÉtiquetteRègleSignification
IdentiqueIdentique à l’adresse vue par notre serveurWebRTC n’ajoute rien. Avec un VPN actif, les deux sont l’adresse du VPN.
DifférenteMême famille (toutes deux IPv4 ou toutes deux IPv6) mais une autre adresseAvec un VPN actif, c’est très probablement votre vraie adresse qui s’échappe.
Même fournisseurAutre famille, même opérateur réseau que la case 01Typiquement le côté IPv6 de la même connexion ou du même VPN. Pas de fuite.
Autre fournisseurAutre famille, opérateur réseau différentGénéralement une adresse IPv6 de votre fournisseur d’accès pendant que le VPN ne crée de tunnel qu’en IPv4.
À vérifierAutre famille, opérateur impossible à identifierComparez-la vous-même avec l’adresse que vous avez quand le VPN est éteint.

Sous la liste, la page indique si des adresses locales sont visibles. Les navigateurs actuels les remplacent par un nom aléatoire se terminant par .local, qui n’apprend rien à un site web. Une adresse 192.168.x.x en clair ne mène pas non plus jusqu’à vous, mais c’est un détail de plus qu’un traceur peut utiliser pour distinguer les appareils.

« Aucune adresse publique » et « WebRTC est désactivé » signifient tous deux que cette porte est fermée. Soit le navigateur a refusé de collecter des candidats, soit aucune réponse STUN n’est revenue.

Le test n’a aucun moyen de savoir si vous utilisez un VPN. Sans VPN, deux adresses publiques différentes peuvent être parfaitement normales, sur une ligne qui a à la fois IPv4 et IPv6 par exemple et les sites web voient de toute façon votre vraie adresse. Un résultat rouge n’est un problème que lorsqu’un VPN ou un proxy est censé vous cacher. Le test ne couvre aussi que WebRTC et rien d’autre. Les fuites DNS sont une autre affaire.

Fermer la fuite

Dans l’application du VPN
Cherchez « protection contre les fuites WebRTC », « protection contre les fuites IPv6 » et « kill switch » et activez les trois. Si le fournisseur ne prend pas en charge IPv6, désactivez IPv6 sur la carte réseau pendant que vous êtes connecté. Un VPN qui n’existe que sous forme d’extension de navigateur protège le trafic des pages et peut laisser WebRTC de côté, alors choisissez l’application complète.
Firefox
Ouvrez about:config et mettez media.peerconnection.ice.default_address_only sur true. WebRTC s’en tient alors à la route par défaut, qui est le tunnel. Mettre media.peerconnection.enabled sur false supprime WebRTC complètement.
Chrome et Edge
Il n’existe pas d’interrupteur intégré. Google publie une extension, WebRTC Network Limiter, avec l’option « Use my default public interface only ». L’extension uBlock Origin a un réglage semblable, « Prevent WebRTC from leaking local IP addresses ».
Brave
Paramètres, Confidentialité et sécurité, « WebRTC IP handling policy » : choisissez « Disable non-proxied UDP ».

Après chaque changement, rechargez cette page avec le VPN connecté. Vous visez que chaque ligne publique soit marquée « Identique » ou « Même fournisseur », ou qu’il n’y ait aucune adresse publique.

Questions fréquentes

Qu’est-ce qu’une fuite WebRTC ?

C’est quand une page web met la main sur votre vraie adresse IP grâce à la fonction WebRTC du navigateur, alors même qu’un VPN ou un proxy la cache aux requêtes de page normales. Un court script suffit à la page. Aucune autorisation d’accès à la caméra ou au microphone n’est en jeu.

Je n’utilise pas de VPN. Ce test me concerne-t-il ?

À peine. Sans VPN, chaque site reçoit déjà votre vraie adresse à chaque requête, donc WebRTC ne révèle rien de plus. Le test s’adresse aux personnes qui comptent sur un VPN ou un proxy pour cacher leur position.

Désactiver WebRTC cassera-t-il quelque chose ?

Le désactiver complètement arrête les appels et le partage d’écran dans le navigateur, donc Google Meet, Microsoft Teams sur le web, Discord, Jitsi et d’autres. Restreindre WebRTC à la route par défaut, ou utiliser la protection propre au VPN, permet de garder les appels.

Pourquoi le test affiche-t-il une adresse IPv6 quand mon VPN est actif ?

Beaucoup de VPN ne créent un tunnel qu’en IPv4. Si votre fournisseur d’accès vous donne aussi IPv6, le trafic vers des destinations IPv6 peut contourner le tunnel. Activez la protection contre les fuites IPv6 dans le VPN, ou désactivez IPv6 sur l’appareil.

Une adresse .local ou 192.168 est-elle une fuite ?

Non. Elles identifient votre appareil sur votre propre réseau et ne peuvent être ni jointes ni localisées de l’extérieur. La seule chose qui compte comme une fuite est une adresse publique différente de celle que présente votre VPN.