Rechercher sur ce blogue

mercredi 4 mai 2016

Comment se protéger de cette « faille » liée à WebRTC avec Chrome et Firefox ?

WebRTC, VPN et adresse IP : quand une « faille » vieille d'un an refait surface


Récemment, certains ont évoqué une « faille » de sécurité qui touche WebRTC : si vous utilisez un VPN, il est possible d'obtenir votre adresse IP. Mais, comme nous allons le voir, elle n'est pas nouvelle et faisait déjà parler d'elle il y a plus d'un an. Ce problème avait même été anticipé dès les brouillons de WebRTC de l'époque. Mais aucune protection n'a été mise en place depuis.
WebRTC est un ensemble d'API permettant de gérer des conversations audio/vidéo directement depuis un navigateur, sans plug-in à installer. Chrome et Firefox le prennent nativement en charge, Mozilla l'exploitant par exemple pour son client Hello disponible depuis la mouture 34 de Firefox.

C'est l'histoire d'une « faille » WebRTC qui diffuse votre IP, même derrière un VPN

Problème, WebRTC présente une « faille » qui peut s'avérer relativement gênante pour ceux qui utilisent un VPN et qui souhaitent cacher leur adresse IP d'origine. Elle permet en effet à n'importe quel site web de retrouver cette dernière, et non de s'arrêter à celle du VPN, du moins sous Windows. De très nombreux médias sont revenus sur cette affaire au cours des derniers jours, en évoquant notamment un prototype qui avait été mis en ligne via ce dépôt Github. Pour tester cette « faille », il suffit de se rendre à cette adresse via un VPN pour constater que, dans la liste des adresses IP, celle de votre connexion est bien présente aux côtés de celle du VPN.
IPLeaks VPN webRTC
Cette situation est due au protocole STUN (traversée simple d'UDP à travers du NAT) développé par l'Internet Engineering Task Force (IETF) qui permet à une application de connaitre l'adresse IP réelle de la machine. Il est notamment utilisé dans les clients de type VoIP ainsi que dans le protocole SIP. Il n'est donc pas anormal que WebRTC récupère cette donnée, mais ce qui est plus inquiétant c'est que cela se fasse sans que l'utilisateur en soit informé et sans qu'aucune confirmation ne soit demandée. Mais de fait, cette situation n'a absolument rien de nouveau.

Une « faille » dévoilée il y plus d'un an

En effet, après quelques recherches, on découvre rapidement qu'il existe déjà une extension Chrome permettant de bloquer cette « faille » : WebRTC Block. Détail surprenant, elle est en ligne depuis le 30 mai 2014 et, à l'heure actuelle, toujours en version 1.0. Surprenant pour une « faille » qui faisait parler d'elle fin janvier ? Pas tant que cela puisqu'elle avait en fait déjà été présentée fin mars 2014 par @vitalyenbroder, là encore avec un prototype fonctionnel :
Suite aux papiers de différents médias de fin décembre/début janvier, il a d'ailleurs mis à jour son blog, non sans une certaine dose d'ironie : « Le même problème de fuite VPN/IP a de nouveau été rendu public par un programmeur américain et cela a soulevé beaucoup plus d'intérêt sur Twitter et chez les magazines web. Conclusion : vous devez être américain pour être entendu ? »

It's not a « faille », it's a « feature » !

Mais nous ne sommes pas encore au bout de nos surprises puisqu'on se rend compte que, dès le mois de janvier 2014 (quelques mois plutôt l'annonce de Vitalyenbroder), le cas d'un VPN utilisé avec WebRTC était remonté via le Bugzilla de Mozilla ainsi que sur les forums de Chromium.
Du côté de la fondation au panda roux, l'importance du bulletin est jugée comme « critique », mais uniquement depuis le 31 janvier 2015 (date à laquelle la vague d'articles est sortie dans la presse). Si l'on regarde l'historique, on se rend compte qu'il était seulement considéré comme « normal » auparavant.  De son côté, Chromium a décidé de classer ce problème avec les labels entreprise et vie privée, et non pas sécurité.
Au-delà de ce classement, les réponses des développeurs sont tout aussi intéressantes à étudier. Dans les deux cas, on retrouve en effet une même remarque qui arrive rapidement sur le tapis et qui précise, en substance, que « ce comportement est dû à la conception même de WebRTC ». On retiendra principalement les interventions d'Eric Rescorla, auteur d'un des brouillons de WebRTC et fondateur de RTFM, sur Bugzilla, ainsi que de Justin Uberti, ingénieur logiciel, sur le blog de Chromium. Au travers de leurs commentaires, ils renvoient vers deux documents de l'IETF.

L'IETF avait anticipé ce problème dans les brouillons de WebRTC

Le paragraphe 5.4 du premier document, qui est un brouillon de WebRTC, précise clairement les choses (nous sommes début 2014) : « Un effet secondaire du fonctionnement du ICE [NDLR : Interactive Connectivity Establishment] est que la machine distante connait l'adresse IP de la première, ce qui donne de grandes quantités d'informations sur la géolocalisation. Cela a des conséquences néfastes sur la vie privée dans certaines situations. »
Le second document est un autre brouillon de WebRTC et, à la section 4.2.4 dédiée à la localisation d'une adresse IP, on trouve le commentaire suivant : « En fonctionnement normal, les sites connaissent les adresses IP, mais elle peut être cachée via des services comme Tor ou un VPN. Cependant, parce que les sites peuvent obtenir l'adresse IP du navigateur, cela donne aux sites un moyen de récupérer des renseignements sur le réseau de l'utilisateur, même s'il est derrière un VPN afin de masquer son adresse IP. » Il est ensuite précisé qu'il « serait souhaitable que les implémentations proposent des paramètres qui suppriment toutes les adresses IP qui ne sont pas celles du VPN si l'utilisateur exploite certains types de VPN, et en particulier des systèmes de protection de la vie privée comme Tor ».
Des recommandations sont également formulées afin de proposer des protections pour protéger l'adresse IP native dans le cas de l'utilisation d'un VPN. L'API de WebRTC pourrait par exemple fournir une solution afin de permettre à JavaScript de supprimer une demande de connexion tant que l'utilisateur n'a pas décidé de répondre à l'appel. Il est également question de restreindre les connexions aux adresses passant par un serveur TURN (Traversal Using Relays around NAT), ce qui aurait pour effet de protéger l'adresse IP native. Des recommandations qui ne semblent pas avoir été spécialement suivies par Mozilla et Google. Par contre, WebRTC est bien désactivé par défaut dans dans Tor Browser (qui exploite Firefox).
 WebRTCWebRTCLa différence entre STUN et TURN

Au final, comment se protéger de cette « faille » liée à WebRTC avec Chrome et Firefox ? 

Quoi qu'il en soit, il règne désormais une ambiance tendue avec une certaine incompréhension entre les deux camps. D'un côté, ceux qui pensent qu'il s'agit d'une « fonctionnalité » liée à WebRTC, qui nécessiterait tout de même des ajustements afin de mieux protéger la vie privée ou au moins donner plus d'information et de possibilités à l'utilisateur. De l'autre, et ceux qui estiment qu'il est question d'une importante faille de sécurité qui doit être corrigée.
Notez que pour vous protéger de ce genre de mésaventure, dans Firefox il est possible de désactiver WebRTC par défaut. Pour cela, il faut vous rendre dans « about:config » puis désactiver « media.peerconnection.enabled ». Cette manipulation n'est pas possible pour l'instant sur Chrome et il faudra donc passer par l'extension WebRTC Block afin de désactiver ce service. Le problème semblerait ne pas apparaitre lorsque le VPN est configuré sur une box ou un routeur et pas directement sur l'ordinateur sous Windows.
Avec l'ampleur médiatique des deux semaines précédentes, il sera intéressant de voir comment vont régir les deux navigateurs par rapport aux deux camps et aux différentes possibilités d'évolution. La situation restera-t-elle la même, désactiveront-ils par défaut WebRTC ou bien demanderont-ils une validation à l'utilisateur avant de transmettre l'adresse IP ? La question reste pour le moment ouverte.
Notez néanmoins que cette dernière possibilité ne semble pas spécialement plaire à Google qui indique, par la voix de l'un de ses développeurs avoir « considéré cette option, mais je ne pense finalement pas qu'introduire une action de l'utilisateur soit logique. Ce n'est pas une demande qui sera bien comprise ("voulez-vous que cette application puisse dévoiler vos différentes interfaces réseau ? ") ». Après, rien n'empêche de modifier le message afin de mettre un avertissement pour ceux qui utilisent un VPN, avec un lien vers des explications détaillées si besoin.
On pourrait par exemple imaginer un système qui fonctionne comme les demandes de géolocalisation qui peuvent être autorisées pour certains sites mais pas pour d'autres (comme lorsque les sites de presse veulent vous géolocaliser).
 
 
Source.:

Aucun commentaire: