2 pièce(s) jointe(s)
Les clients VPN pourraient divulguer l'adresse IP réelle des utilisateurs
Les clients VPN pourraient divulguer l'adresse IP réelle des utilisateurs
à cause d'un ancien bogue dans WebRTC
Daniel Roesler a découvert en 2015 une faille dans le protocole WebRTC. WebRTC est un projet gratuit et ouvert qui fournit aux navigateurs et aux applications mobiles des capacités de communications en temps réel (RTC : Real-Time Communications) via de simples API. Il comprend les éléments fondamentaux pour des communications de haute qualité sur le Web, tels que les composants réseau, audio et vidéo utilisés dans les applications de chat vocal et vidéo, ces composants, lorsqu'ils sont implémentés dans un navigateur, sont accessibles via une API JavaScript
Le problème était que les serveurs STUN (Session Traversal Utilities for NAT) divulguaient ces informations aux sites Web qui avaient déjà négocié une connexion WebRTC avec le navigateur d'un utilisateur. Depuis lors, de nombreux annonceurs et organismes d'application de la loi ont utilisé ce bogue lié au WebRTC pour obtenir l'adresse IP d'un visiteur. La plupart des navigateurs sont équipés de WebRTC activé par défaut.
En outre, ces requêtes STUN sont effectuées en dehors de la procédure XMLHttpRequest normale, elles ne sont donc pas visibles dans la console développeur et ne peuvent pas être bloquées par des plug-ins tels que AdBlock Plus ou Ghostery. Cela rend ces types de demandes disponibles pour le suivi en ligne.
Paolo Stagno, un chercheur en sécurité a récemment audité une centaine de fournisseurs VPN et proxy et 19 d'entre eux divulguent les adresses IP réelles des utilisateurs via WebRTC, soit 16 %. À cet effet, il met une démo à la portée des utilisateurs dont le code est ci-dessous. Il suffit de copier et coller le code dans la console de développement Firefox ou Chrome pour lancer le test.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
| //get the IP addresses associated with an account
function getIPs(callback){
var ip_dups = {};
//compatibility for firefox and chrome
var RTCPeerConnection = window.RTCPeerConnection
|| window.mozRTCPeerConnection
|| window.webkitRTCPeerConnection;
var useWebKit = !!window.webkitRTCPeerConnection;
//bypass naive webrtc blocking using an iframe
if(!RTCPeerConnection){
//NOTE: you need to have an iframe in the page right above the script tag
//
//<iframe id="iframe" sandbox="allow-same-origin" style="display: none"></iframe>
//<script>...getIPs called in here...
//
var win = iframe.contentWindow;
RTCPeerConnection = win.RTCPeerConnection
|| win.mozRTCPeerConnection
|| win.webkitRTCPeerConnection;
useWebKit = !!win.webkitRTCPeerConnection;
}
//minimal requirements for data connection
var mediaConstraints = {
optional: [{RtpDataChannels: true}]
};
var servers = {iceServers: [{urls: "stun:stun.services.mozilla.com"}]};
//construct a new RTCPeerConnection
var pc = new RTCPeerConnection(servers, mediaConstraints);
function handleCandidate(candidate){
//match just the IP address
var ip_regex = /([0-9]{1,3}(\.[0-9]{1,3}){3}|[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7})/
var ip_addr = ip_regex.exec(candidate)[1];
//remove duplicates
if(ip_dups[ip_addr] === undefined)
callback(ip_addr);
ip_dups[ip_addr] = true;
}
//listen for candidate events
pc.onicecandidate = function(ice){
//skip non-candidate events
if(ice.candidate)
handleCandidate(ice.candidate.candidate);
};
//create a bogus data channel
pc.createDataChannel("");
//create an offer sdp
pc.createOffer(function(result){
//trigger the stun server request
pc.setLocalDescription(result, function(){}, function(){});
}, function(){});
//wait for a while to let everything done
setTimeout(function(){
//read candidate info from local description
var lines = pc.localDescription.sdp.split('\n');
lines.forEach(function(line){
if(line.indexOf('a=candidate:') === 0)
handleCandidate(line);
});
}, 1000);
}
//Test: Print the IP addresses into the console
getIPs(function(ip){console.log(ip);}); |
Si vous êtes connecté à un VPN et que vous voyez l'adresse IP de votre FAI dans la première section de la capture ci-dessous, vous êtes protégés. Si des adresses IP correspondent à l'une de vos adresses IP privées, vous aurez une fuite partielle.
Source : VoidSec
Et vous ?
:fleche: Qu'en pensez-vous ?
VPN Proxiane OK (depuis Windows 10 et Mac Sierra)
Merci pour cet article j'avais eu vent du Webrtc,
Pour info, pas de fuite non plus de mon côté avec mon VPN Proxiane
Merci pour cet article j'avais eu vent du Webrtc, Pour info, pas de fuite non plus de mon côté avec mon VPN Pr