Présentation de l’attaque Man In The Contacts pour piéger les utilisateurs de WhatsApp, Signal et Telegram – Partie 2/2

4. Le fond du problème

Nous venons de montrer qu’il est relativement aisé de monter une attaque de type homme du milieu via les contacts et une application complice. Et cela en n’exploitant aucune faille de type 0-day dans le système d’exploitation !

La conversation est toujours parfaitement chiffrée de bout en bout, mais il n’est simplement pas évident de savoir avec qui l’on dialogue vraiment. La problématique de l’authentification de l’interlocuteur est totalement négligée (cf. deuxième hypothèse du paragraphe 1), alors qu’elle est fondamentale pour qui veut avoir un échange de messages sécurisé.

On accorde une confiance bien trop grande aux informations stockées dans le carnet d’adresses, alors qu’elles devraient être fournies ou au moins validées explicitement par l’utilisateur pour rester sous son contrôle.

Le principe du Trust On First Use (TOFU) est utilisé pour accepter automatiquement une nouvelle clé lors du dialogue avec un nouveau contact, alors qu’il s’agit d’un évènement rare nécessitant un regain de vigilance. Le message de WhatsApp expliquant à ce moment-là qu’une conversation sécurisée démarre est très maladroit de ce point de vue.

5. Évaluation du risque

Avant d’aller plus loin, procédons à une rapide évaluation du risque pour être bien d’accord sur la gravité de la situation.

Nous utiliserons une méthodologie élémentaire de calcul du risque selon le tableau ci-dessous. Nous considérons que le risque est le produit de la difficulté de l’attaque par son impact sur les utilisateurs.

Difficulté de l’attaque Faible impact utilisateur Impact utilisateur modéré Fort impact utilisateur
Faible Faible Modéré Très élevé
Moyenne Faible Modéré Élevé
Élevée Faible Faible Modéré

La difficulté de l’attaque peut s’évaluer à travers 2 dimensions :

  • Difficulté technique : Faible
    L’implémentation de l’application Pierre – Feuille – Ciseau est aisée : il suffit de modifier les contacts à travers l’API disponible et de faire des appels type web service vers un serveur.
    L’application sera acceptée sans souci pour publication puisque le code malveillant est stocké sur le serveur de l’attaquant.
  • Difficulté logistique : Moyenne
    Un seul numéro de téléphone suffit à Ève pour intercepter des milliers de conversations.
    Mais il faut convaincre suffisamment de personnes d’installer l’application Pierre / Feuille / Ciseau. L’accès au carnet d’adresses permet d’accélérer l’adoption en faisant automatiquement la promotion du jeu auprès de tous les contacts.

L’impact utilisateur s’estime plus simplement comme Fort.
En effet, des milliers d’utilisateurs peuvent être espionnés à travers les trois applications de messageries, ce qui brise la promesse d’échanges sécurisés. De plus, à cause des identifiants qu’elles laissent traîner dans le carnet d’adresses, il est possible de savoir quelles applications de messagerie sont installées.

En croisant un fort impact et une difficulté faible à moyenne, nous obtenons un risque élevé à très élevé.

De nombreuses attaques similaires sont imaginables, notamment en ciblant les spécificités d’implémentation de chaque application de messagerie. Des utilisations abusives à des fins de spear phishing sont envisageables, mais aussi de spam étant donné que les serveurs de messagerie ne peuvent plus filtrer le contenu des messages puisqu’ils sont indéchiffrables pour eux.

Nous nommerons désormais Man In The Contacts cette famille d’attaque exploitant l’accès aux contacts des applications mobiles.

6. La responsabilité des éditeurs

6.1 Pourquoi devraient-ils adresser ce point ?

Bien qu’il ne s’agisse pas d’une vulnérabilité purement technique, le risque est malgré tout réel pour les utilisateurs finaux. À aucun moment nous ne pouvons considérer qu’ils ont une mauvaise hygiène sécurité : l’application est téléchargée depuis le magasin officiel et a été approuvée, les mises à jour sont effectuées régulièrement.

À première vue, le système d’exploitation mobile est responsable de la faible segmentation de l’accès aux données de contact. Mais ce n’est pas une raison pour ne pas adresser cette faiblesse. Le principe même du reste de l’application est de construire une solution sécurisée sur des bases avérées fragiles (réseaux hostiles, serveurs perquisitionnés, etc.). Il serait étonnant de ne pas vouloir se soucier de l’authentification des utilisateurs.

Ce protocole cryptographique d’une grande rigueur a été mis en place suite aux révélations de Snowden. Il permet notamment de se dédouaner de toute demande d’accès par les autorités. On pourrait s’interroger, en constatant que l’application mobile est implémentée avec une plus grande légèreté (cf. hypothèse 2 du paragraphe 1), s’il ne s’agit pas là de la motivation principale, en complément d’un argumentaire marketing rassurant.

Dans tous les cas, la confiance de l’utilisateur devrait être respectée. En effet, on lui promet explicitement que sa conversation est sécurisée de bout en bout. Peu importe les limitations de la plateforme, des solutions doivent être trouvées pour tendre vers cet objectif.

6.2 Le retour des éditeurs

Il n’a pas été aisé d’obtenir un retour des éditeurs. Les programmes de Bug Bounty se généralisent, mais ni WhatsApp, ni Telegram, ni Signal n’en faisaient partie en 2016.

Telegram dispose d’un très réactif support de premier niveau à travers son application mobile. Une adresse mail sécurité a été fournie et le descriptif de l’attaque détaillée au paragraphe 3.3 y a été envoyé. Malgré 3 relances et une publication sur Twitter, aucune réponse n’a jamais été reçue.

WhatsApp dispose du programme de remontée de bugs de sa maison mère, Facebook. Malgré un acquittement rapide, une relance a dû être nécessaire pour obtenir la réponse ci-dessous (traduite de l’anglais) :
« Nous apprécions votre rapport. Au final un attaquant avec un malware installé sur son périphérique sera capable d’altérer les données du périphérique lui-même. Dans vos exemples les conversations WhatsApp sont restées correctement liées à leurs numéros de téléphone. De plus, WhatsApp autorise les utilisateurs à définir des alias locaux pour les contacts et à voir le numéro associé à un message spécifique à n’importe quel moment. Cela étant, nous ne considérons pas que ce comportement pose un risque significatif et nous ne prévoyons pas de faire de changement. Veuillez nous informer si vous pensez que nous avons mal interprété quelque chose ! »
Il n’a pas été possible de continuer la conversation, malgré la proposition en dernière ligne.

Signal ne disposant pas d’un processus connu de déclaration d’incident, un rapport de bug dans l’application Android a été soumis, mais non suivi d’effets malgré plusieurs relances. Une publication sur Twitter et un peu d’insistance ont permis d’obtenir successivement le message suivant (traduit de l’anglais) :
« Comme pour toutes les techniques d’interception, les numéros de sécurité ont été conçus pour cela. Les utilisateurs de Signal seront notifiés que les numéros de sécurité pour leurs contacts ont changé, et seront amenés à les vérifier. Une attaque d’homme du milieu réussie nécessiterait de trouver une méthode pour intercepter les communications sans déclencher cet avertissement ».

Après avoir fait remarquer que les numéros de sécurité ne s’appliquent pas à une nouvelle conversation avec un nouveau contact, cette brève réponse a été obtenue :
« Signal n’a pas été conçu pour se protéger des malwares. Merci d’être entré en contact, bonne chance avec tout le reste ».

Il est évident qu’il ne s’agit pas d’une vulnérabilité nécessitant seulement la modification de quelques lignes de code, mais au contraire qui exige de repenser l’expérience utilisateur. Cependant un peu plus de considération était attendue, en tenant compte de ce qui a été discuté au paragraphe 6.1

7. Contremesures

7.1 Utilisateur final

Il s’agira tout d’abord de réduire au maximum le nombre d’applications ayant accès aux contacts, surtout en écriture. Mais en pratique cela n’est guère évident, notamment sur les versions les plus répandues d’Android qui ne demandent les permissions qu’au moment de l’installation.

Ensuite il faut être vigilant quand une nouvelle conversation débute. En cas de suspicion, ne pas hésiter à jeter un coup d’œil dans ses contacts.

Enfin, d’autres applications de messagerie sécurisée existent, comme Threema [8]. Avec un authentifiant décorrélé du numéro de téléphone et une synchronisation optionnelle des contacts, cette solution est bien plus robuste d’un point de vue conception. D’autant plus qu’une réponse technique claire et détaillée a été fournie sous 24 heures par le service de presse.

Un niveau de confiance vert/orange/rouge affiché est aussi clairement affiché à côté du nom de l’interlocuteur, l’utilisateur se rendant aisément compte d’une situation anormale.

7.2 Applications de messagerie mobile

Un identifiant dédié, indépendant du numéro de téléphone, devrait être utilisé. Et une approbation explicite de chaque ajout de contact demandée à l’utilisateur.
Ou a minima gérer le risque en avertissant l’utilisateur lorsqu’il s’agit du tout premier échange avec un nouveau contact.

Afficher le numéro de téléphone peut également aider, même si seulement une minorité des numéros sont connus par cœur par l’utilisateur.

7.3 Systèmes d’exploitation mobile

L’amélioration la plus souhaitable serait de mettre en œuvre un véritable partitionnement des informations de contact, comme c’est le cas pour les accès aux fichiers, pour être capable de gérer une notion de données privées.

Jérémy Matos
Expert en sécurité applicative chez Securing Apps – jeremy.matos@securingapps.com

Remerciements

Je tiens à remercier grandement Olivier Saudan et Jean-Philippe Aumasson pour leurs précieux conseils lors de la rédaction de cet article.

Références

[1] Recommandations sécurité d’Edward Snowden : https://twitter.com/snowden/status/778592275144314884
[2] Discours de Bernard Cazeneuve sur le terrorisme et le chiffrement : http://www.lemonde.fr/pixels/article/2016/08/23/terrorisme-pour-contourner-le-chiffrement-des-messages-bernard-cazeneuve-en-appelle-a-l-europe_4986897_4408996.html
[3] A Formal Security Analysis of the Signal Messaging Protocol : https://eprint.iacr.org/2016/1013.pdf
[4] Anciens mots de passe WhatsApp prévisibles : http://thednetworks.com/2012/09/09/whatsapp-imei-password-md5-inverted-hack/
[5] Intrusion Telegram en Iran : https://www.wired.com/2016/08/hack-brief-hackers-breach-ultra-secure-messaging-app-telegram-iran/
[6] Présentation Man In The Contacts : http://www.securingapps.com/blog/ManInTheContacts_CYBSEC16.pdf
[7] Unicode URL Hack : https://www.schneier.com/blog/archives/2005/02/unicode_url_hac_1.html
[8] Application de messagerie sécurisée Threema : https://threema.ch/en

Retrouvez cet article (et bien d’autres) dans MISC n°90, disponible sur la boutique et sur la plateforme de lecture en ligne Connect !

 

Laisser un commentaire