WebRTC IP-lekdetectie: van bug naar functie
WebRTC STUN/TURN-probes onthullen echte IP-adressen achter VPN's. Hoe we een privacylek omzetten in een signaal voor fraudedetectie.
WebRTC — Web Real-Time Communication — is ontworpen om videogesprekken, bestandsdeling en peer-to-peer-gegevensoverdracht rechtstreeks in de browser mogelijk te maken. Om deze verbindingen tot stand te brengen, moeten browsers hun eigen netwerkinterfaces ontdekken en de connectiviteit met externe peers onderhandelen. Dit proces maakt gebruik van STUN-servers (Session Traversal Utilities for NAT) en TURN-servers (Traversal Using Relays around NAT) die browsers helpen hun publieke IP-adres te achterhalen en NAT-firewalls te passeren.
Het neveneffect is krachtig: zelfs wanneer een gebruiker via een VPN verbinding maakt, kan de WebRTC-stack van de browser het echte IP-adres achter de tunnel prijsgeven. Dit gebeurt omdat de WebRTC-ICE-kandidaten (Interactive Connectivity Establishment) adressen van lokale netwerkinterfaces bevatten die de VPN niet maskeert.
Hoe het lek werkt
Wanneer een browser een RTCPeerConnection aanmaakt en ICE-kandidaten verzamelt, bevraagt hij STUN-servers om zijn naar buiten gerichte IP-adres te ontdekken. Maar hij inventariseert ook de lokale netwerkinterfaces — inclusief het privé-IP-adres van de fysieke adapter. Als de VPN het verkeer alleen op de IP-laag tunnelt, maar de WebRTC-stack van de browser niet zo configureert dat deze uitsluitend de tunnelinterface gebruikt, lekt het echte IP-adres via de host-kandidaat naar buiten.
Bij tracio.ai onderzoeken we dit gedrag zorgvuldig. Ons IP Intelligence-systeem stelt een gecontroleerd STUN-verzoek op en analyseert de ICE-kandidaten die de browser teruggeeft. Wanneer het publieke IP-adres uit STUN afwijkt van het IP-adres dat we op onze server zien, markeren we een VPN of proxy. Wanneer het IP-adres van de lokale interface een privé-netwerkbereik onthult dat in tegenspraak is met de veronderstelde geografische locatie, verhogen we de verdachtheidsscore.
Van bug naar detectiesignaal
De meeste privacygerichte browsers hebben dit lek verholpen — Chrome vereist expliciete toestemming van de gebruiker voor WebRTC, en Firefox biedt instellingen om niet-geproxyde UDP uit te schakelen. Maar de wapenwedloop gaat door: sommige VPN-clients configureren WebRTC niet correct, oudere browserversies blijven kwetsbaar, en het gedragspatroon van een "verholpen" versus een "lekkende" WebRTC-respons is op zichzelf een bruikbaar signaal.
Onze aanpak behandelt de WebRTC-respons als een samengesteld signaal: de aanwezigheid van host-kandidaten, het aantal teruggegeven ICE-kandidaten, de typen kandidaten (host, srflx, relay) en de responstiming dragen allemaal bij aan de device-fingerprint. Zelfs wanneer er geen IP-adres lekt, is het patroon van WebRTC-gedrag onderscheidend.
TURN-serverprobing
Naast STUN onderzoeken we ook het gedrag van TURN-servers. TURN-relays worden doorgaans gebruikt wanneer directe peer-to-peer-verbindingen mislukken — gebruikelijk in bedrijfsnetwerken achter strikte firewalls. De TURN-allocatierespons onthult informatie over het relaypad: het transportprotocol (UDP versus TCP versus TLS), het relayadres en de levensduur van de allocatie.
Ons SignalProbe-systeem stuurt zorgvuldig opgestelde TURN-allocatieverzoeken naar onze eigen relayservers. De responstijd, de ondersteunde transporten en de patronen van geslaagde/mislukte allocaties variëren per netwerkomgeving en bieden extra signaaldiversiteit voor device-fingerprinting.
Privacyoverwegingen
We willen dit duidelijk stellen: tracio.ai maakt geen misbruik van WebRTC-lekken om gebruikers te deanonimiseren. Ons systeem detecteert wanneer een VPN in gebruik is en rapporteert dit als een risicosignaal. We slaan het gelekte IP-adres nooit op en leggen het nooit bloot. Het signaal is binair: "VPN gedetecteerd met WebRTC-inconsistentie" of "WebRTC-gedrag consistent met een directe verbinding".
Deze aanpak geeft fraudepreventieteams de informatie die ze nodig hebben — een bezoeker maskeert zijn werkelijke locatie — zonder de privacy van individuen in gevaar te brengen. Het signaal helpt bij het opsporen van gecoördineerde fraudeaanvallen waarbij meerdere accounts afkomstig zijn van dezelfde verborgen locatie.