Journal d'investigation en ligne et d'information‑hacking
par Jef

WhatsApp : backdoor ou pétard mouillé ?

Vendredi après-midi, à l'heure où blanchissent les timelines, le Guardian publiait tranquillou un article pas alarmiste pour deux sous : « une backdoor de WhatsApp permet d'espionner les messages chiffrés ». Comme de bien entendu, étant donné la chaleur de la révélation, les réseaux sociaux ont atteint le point d'ébullition en quelques minutes, et la nouvelle a été largement reprise et amplement commentée. Une backdoor ? Oui, vous avez raison, commençons par le commencement.

Vendredi après-midi, à l'heure où blanchissent les timelines, le Guardian publiait tranquillou un article pas alarmiste pour deux sous : « une backdoor de WhatsApp permet d'espionner les messages chiffrés ». Comme de bien entendu, étant donné la chaleur de la révélation, les réseaux sociaux ont atteint le point d'ébullition en quelques minutes, et la nouvelle a été largement reprise et amplement commentée.

Une backdoor ? Oui, vous avez raison, commençons par le commencement. Une « backdoor », dans un système de communication, est une vulnérabilité introduite volontairement et à des fins malveillantes — par le concepteur du système lui-même ou à son insu — et qui permet à un acteur d'intercepter ou d'altérer les échanges silencieusement, sans être détecté (Yo Juniper, what's up!?). WhatsApp est — avec son milliard d'utilisateurs — la plus utilisée des messageries en ligne. La présence d'une porte dérobée aurait, potentiellement, autant d'impact sur la sécurité des communications en ligne que Georges R. R. Martin sur la famille Stark.

Alice et Bob

À l'origine, WhatsApp ne proposait aucune forme de chiffrement de bout en bout. Autrement dit, les serveurs qui transmettaient les messages les voyaient passer en clair. Par voie de conséquence, les communications des utilisateurs pouvaient être interceptées à l'insu de leur plein gré par tout un tas d'acteurs, dont les inévitables chinois du FBI. Après les révélations Snowden, ça commençait à faire désordre…

WhatsApp a donc intégré, entre la fin d'année 2014 et le début d'année 2016, le protocole Signal, issu de la messagerie éponyme et cuisiné par les chuchoteurs d'Open Whisper Systems. Ce protocole, méticuleusement assemblé et jugé fiable par les cryptologues, est devenu en quelques années un standard de fait. On le trouve ainsi non seulement au cœur de Signal et de WhatsApp, mais aussi intégré aux secret conversations de Facebook Messenger ou à l'incognito mode de Google Allo.

Mettons de côté les aspects les plus complexes du protocole, comme l'échange de clés X3DH ou le mécanisme du Double Ratchet, et braquons le projecteur vers un aspect particulier du protocole, son usage de la cryptographie asymétrique.

Avec la cryptographie symétrique, les deux interlocuteurs chiffrent leurs communications grâce à une même clé secrète, un secret qu'ils doivent avoir échangé au préalable. Par opposition, la cryptographie asymétrique, ou cryptographie à clé publique, prévoit que chaque interlocuteur — par convention, on les prénomme Alice et Bob — se munisse d'une paire de clés liées mathématiquement l'une à l'autre. Chacun garde secrète sa clé privée, mais peut librement publier sa clé publique.

Avant d'envoyer un message, Alice le chiffre à l'aide de la clé publique de Bob. À réception, Bob utilise sa clé privée pour déchiffrer le message. Pour répondre, Bob chiffrera le message à l'aide la clé publique d'Alice, qui le déchiffrera grâce à sa propre clé privée. Outre la confidentialité, la cryptographie asymétrique permet également à Alice et à Bob de « signer » les messages échangés, afin que l'autre partie soit à même de s'assurer de leur authenticité. Chaque paire de clés est donc une représentation de l'identité d'Alice et de Bob.

Un trousseau à mille clés

Ce type de cryptographie est très largement utilisé, par exemple par PGP pour les emails, VPN ou SSH pour établir des connexions sécurisées à des machines ou des réseaux distants, TLS qui vous permet de visiter des sites Web de façon plus sûre, et, nous y voilà, par bon nombre d'applications de messagerie, dont WhatsApp.

Le problème auquel font face tous les utilisateurs de la cryptographie asymétrique est la gestion des clés. Chacun d'entre eux doit pouvoir distribuer sa propre clé publique, récupérer celles de ses interlocuteurs, etc. L'une des étapes cruciales pour que deux personnes puissent établir une communication sécurisée est la vérification de la légitimité des clés publiques. En l'absence d'un tel contrôle, un acteur malveillant pourrait se faire passer pour l'une ou l'autre des parties, ou les deux, et déchiffrer à loisir, voire modifier, les messages interceptés.

Les gestion de clés est un problème d'autant plus épineux qu'il peut arriver que des paires de clés soient renouvelées, volontairement ou suite à une perte, une compromission réelle ou soupçonnée, etc. Avec autant de clés que d'entrées dans le carnet de contacts, elle peut même tourner au cauchemar ; elle a d'ailleurs constitué l'un des principaux freins à l'adoption de technologies de chiffrement par le grand public.

Pour faciliter la vie des utilisateurs, les applications de messagerie sécurisées prennent en charge la gestion des ces clés de manière (peut-être trop) transparente. À l'installation, WhatsApp génère une paire de clés : « l'identity key pair ». La clé privée est sauvegardée sur l'appareil, tandis que la clé publique est publiée sur le serveur et associée au numéro de mobile utilisé. Pour s'assurer que le numéro de mobile soit correct, WhatsApp envoie un code à 6 chiffres par SMS qui doit être saisi par l'utilisateur. La clé publique de chaque utilisateur est ensuite utilisée comme ingrédient de base pour chiffrer les messages qui lui sont destinés.

Lost in transmission

La vulnérabilité décrite par le chercheur en avril 2016 — et à l'origine de l'article du Guardian — est en fait assez simple. Précisons que le chercheur a contacté Facebook — l'heureux propriétaire de WhatsApp — qui lui a opposé une fin de non-recevoir. Vous imaginez bien qu'il n'en fallait pas plus pour que l'aspirateur à données personnelles géant le réseau social soit accusé de maintenir cette vulnérabilité à funeste dessein. Credit where credit is due, il semble que Nadim Kobeissi, cryptologue de son état, avait déjà identifié ce problème dès l'automne 2015.

Pour que l'attaque puisse être mise en œuvre contre Alice et Bob, il faut que plusieurs conditions soient simultanément réunies. Primo, il faut que l'appareil de Bob soit dans l'incapacité de recevoir des messages ; par exemple parce qu'il est éteint, parce que Bob passe dans un (long) tunnel, car il est abonné chez Free (#OuiOhÇaVa), ou encore parce qu'il a raté sa poche et malencontreusement glissé le terminal dans son calfouette anti-ondes. Secondo, l'attaquant doit savoir que l'appareil de Bob est indisponible. Tertio, il faut qu'Alice ait envoyé des messages à Bob mais qu'ils n'aient pas été délivrés et placés en file d'attente. Autrement dit, que l'appareil de Bob n'ait pas accusé réception de ces messages. Enfin, l'attaquant doit activer un terminal avec le numéro de mobile de Bob. Il doit donc être en capacité d'intercepter le SMS d'activation ou travailler chez WhatsApp.

Lorsque l'attaquant active le nouveau terminal, l'application génère une nouvelle paire de clés et publie la clé publique — différente de la clé originale — sur les serveurs de WhatsApp, qui annoncent cette nouvelle clé à ses contacts. Suite à cette annonce, sur l'appareil d'Alice, WhatsApp chiffre à nouveau les messages non délivrés, cette fois-ci avec la clé publique de l'attaquant, et les lui expédie. Fin du game.

Des solutions

On peut noter que cette vulnérabilité concerne spécifiquement les messages non délivrés à Bob pendant le laps de temps où il était injoignable, pas l'historique de l'ensemble des conversations ayant pris part entre Alice et Bob. La faille est donc réelle — il convient de ne pas l'ignorer — mais de portée relativement limitée.

Par ailleurs, le lecteur attentif n'aura pas manqué de noter qu'un attaquant susceptible d'activer un terminal avec le numéro de mobile de Bob pourra théoriquement se faire passer pour lui. Il sera en mesure échanger avec Alice sans que cette dernière ne se doute de quoi que ce soit. C'est un défaut dont souffrent d'autres systèmes de messagerie, comme Signal ou Telegram, et qui a été activement exploité par le passé, par exemple en Russie ou en Iran.

La possibilité de changer la clé publique associée à un numéro de mobile est pourtant une nécessité. Bob pourrait par exemple souhaiter changer de téléphone portable, et ce sans que les messages émis par Alice pendant le laps de temps où il était injoignable ne soient irrémédiablement perdus. La retransmission des messages, la fonctionnalité à l'origine de la vulnérabilité, présente donc un réel intérêt pour l'expérience utilisateur.

WhatsApp pourrait, pourtant au moins partiellement, atténuer les effets de cette faille, en notifiant systématiquement les utilisateurs lorsque la clé publique de l'un de leurs contacts subit une modification. Un tel système de notification existe aujourd'hui, mais il est malheureusement optionnel et n'est pas activé par défaut.

Préférences de sécurité

Ensuite, WhatsApp pourrait faire en sorte de bloquer les messages sortants tant qu'Alice n'aura pas explicitement indiqué avoir vérifié la légitimité de la nouvelle clé publique de Bob. Ce système de vérification existe lui aussi, il s'agit du « security code » qui peut être scanné ou transmis sous forme de chiffres par un autre moyen. Il ne s'agirait que d'une adaptation marginale du fonctionnement de l'application, sans doute triviale à réaliser. C'est très exactement le comportement de Signal, dont WhatsApp pourrait s'inspirer.

« Security code » d'un contact WhatsApp

WhatsApp a pourtant choisi, pour le moment, de refuser ces évolutions. Ce choix est sans doute guidé par la crainte de dégrader l'ergonomie de l'application. La concurrence est rude et les utilisateurs volages ; le risque d'en perdre au profit de la concurrence est bien réel. Mais même si WhatsApp changeait d'avis, la responsabilité de vérifier les clés incomberait in fine aux utilisateurs eux-mêmes, à vous et à moi. En pratique cela s'avère souvent délicat, notamment à cause de la distance et du nombre de contacts. Imprudents, nous suivons le plus souvent le chemin de moindre résistance (« pourvu que ça marche ! ») et sommes tentés de ne rien vérifier du tout, de choisir le bouton « OK » en pilote automatique.

Le pétard mouillé

Voilà donc toute l'histoire de cette soi-disant « backdoor » : une vulnérabilité réelle mais limitée, introduite sans intention maligne, et détectable qui plus est. Bref, tout sauf la définition d'une backdoor.

À titre personnel, votre serviteur n'a pas d'amitié particulière pour Facebook, mais il faut reconnaître que WhatsApp est aujourd'hui l'une des applications de messagerie les mieux sécurisées. Les utilisateurs de WhatsApp (et des autres applications de messagerie) peuvent eux-mêmes améliorer leur sécurité et celle de leurs contacts. Il faut pour cela prendre l'habitude d'effectuer les vérifications appropriées — au moins quand c'est possible — et activer le système de notifications.

Les articles outranciers comme celui du Guardian incitent les utilisateurs à migrer vers des systèmes moins sûrs. En prétendant protéger le lecteur, on le rend plus vulnérable.

C'est quand même couillon.

0 Commentaires
Une info, un document ? Contactez-nous de façon sécurisée