Une fuite WebRTC est l'exposition des vraies adresses IP d'un appareil via WebRTC, la technologie de navigateur pour l'audio, la vidéo et les données en peer-to-peer, même lorsque le navigateur est configuré pour utiliser un proxy ou un VPN. La RFC 8828 note que les vérifications STUN de WebRTC peuvent contourner un proxy configuré et révéler l'adresse IP publique du client à un site web.
WebRTC doit trouver un chemin réseau direct entre les pairs. Pour ce faire, il collecte des adresses candidates pour l'appareil, et une page web peut les lire. La RFC 8828 avertit également qu'avec un VPN à tunnel fractionné, WebRTC peut découvrir l'adresse publique du FAI ainsi que celle du VPN.
Comment la fuite se produit
- ICE : L'établissement de connectivité interactive est le cadre que WebRTC utilise pour connecter les pairs. Il recueille des adresses candidates.
- STUN : Un serveur STUN indique au navigateur son adresse publique. Cette recherche peut voyager en dehors du proxy.
- Adresses locales : Les candidats peuvent inclure des adresses de réseau privé, que la RFC 8828 appelle une surface de fingerprinting.
- Noms mDNS : Un brouillon de l'IETF remplace les adresses privées dans ces candidats par des noms d'hôtes mDNS générés, de sorte que les pages ne voient pas la vraie IP locale.
Limiter l'exposition de WebRTC
La RFC 8828 définit quatre modes pour la quantité d'informations d'adresse que WebRTC recueille :
- Mode 2 (par défaut sans consentement) : Utilise la route par défaut et partage les adresses privées de cette interface.
- Mode 3 : Utilise uniquement la route par défaut et retient les adresses privées.
- Mode 4 (forcer le proxy) : Envoie également les médias via le proxy lorsque le trafic HTTP en utilise un. La RFC 8828 note que la plupart des proxies ne prennent pas en charge UDP, donc cela peut revenir à TCP et réduire la qualité des médias.
Comment tester une fuite WebRTC
Toute page peut lire les adresses que WebRTC recueille. MDN note que les adresses IP candidates sont toujours exposées à l'application via la propriété address de chaque candidat ICE. Pour tester, connectez-vous via votre proxy et ouvrez une page qui liste les adresses candidates WebRTC. Si votre vraie IP publique apparaît au lieu de l'IP de sortie du proxy, le navigateur fuit.
Paramètres du navigateur qui limitent l'exposition
Les navigateurs basés sur Chromium offrent un paramètre de gestion des IP WebRTC avec quatre valeurs :
- Par défaut : Utilise toutes les interfaces et expose l'adresse IP locale.
- Interfaces publiques et privées par défaut : Utilise la route par défaut HTTP et expose toujours l'adresse IP locale.
- Interface publique par défaut uniquement : Utilise la route par défaut HTTP et n'expose pas l'adresse IP locale.
- Désactiver l'UDP non proxifié : Utilise TCP à moins que le proxy ne prenne en charge l'UDP. Cela n'expose pas les adresses locales. Brave en fait le paramètre par défaut lorsque la protection contre le fingerprinting est activée.
Dans Microsoft Edge, les administrateurs définissent cela avec la politique WebRtcLocalhostIpHandling. Les utilisateurs de Brave le changent à chrome://settings/privacy.