Dans la majorité des cas, lorsqu’un lien est envoyé par message au travers d’une application de messagerie instantanée, un aperçu de celui-ci est automatiquement généré. Bien qu’extrêmement pratique, cette fonctionnalité à priori anodine comporte en réalité d’importants risques lorsqu’elle n’est pas gérée convenablement. Au travers d’une étude menée sur les applications de messagerie instantanée les plus populaires, deux développeurs ont cherché à mesurer l’étendue des dangers. Retour sur les conclusions de leur enquête.

Quelles messageries instantanées ont été analysées ?

Grâce à l’aperçu de lien, les utilisateurs peuvent prendre connaissance du sujet de la page internet qui leur est envoyée, sans même avoir à cliquer dessus. Une fonctionnalité tellement répandue qu’elle passe désormais complètement inaperçue dans notre activité quotidienne sur les applications de messagerie instantanée.

Pourtant, elle comporte de nombreux risques : consommation de ressources, fuite de données, code indésirable… Autant de conséquences néfastes qui ont été analysées par Talal Haj Bakry et Tommy Mysk au travers d’une étude dans laquelle une dizaine d’applications de messagerie instantanée ont été passées au peigne fin. Voici celles qui ont été soumises à l’oeil expert de ces deux développeurs :

Le tableau des applications analysées dans le cadre d'une étude sur la dangerosité aperçus de liens.

Les applications analysées dans cette étude sur la dangerosité de l’aperçus de liens sont Discord, Facebook Messenger, Google Hangouts, Instagram, LINE, LinkedIn, Slack, Twitter, Viber, et Zoom. Image : Talal Haj Bakry et Tommy Mysk

Trois méthodes pour générer les aperçus de liens

Au cours de leurs recherches, les deux développeurs ont pu constater que toutes les applications n’avaient pas recours aux mêmes méthodes pour générer les aperçus de liens. Il existe en réalité trois approches bien différentes, comportant chacune des risques qui leur sont propres.

La première méthode : l’expéditeur génère l’aperçu

Dans cette première approche, l’application génère les aperçus de liens en téléchargeant les données nécessaires du côté de l’expéditeur. Cela permet de protéger le destinataire des risques d’un lien malveillant. En choisissant cette méthode, les applications estiment que l’expéditeur fait confiance à la page internet qu’il envoie, c’est donc à lui d’en assumer la responsabilité.

Cette approche est celle utilisée par iMessage, Viber, WhatsApp et Signal (si l’option de prévisualisation est activée dans les paramètres).

La seconde méthode : le destinataire génère l’aperçu

D’emblée, les deux développeurs préviennent : « cette méthode est mauvaise », et pour cause… Les applications utilisant cette approche vont automatiquement ouvrir les liens reçus pour générer les aperçus, avant même que les destinataires aient eu le temps de cliquer dessus.

Talal Haj Bakry et Tommy Mysk expliquent ainsi que « Si vous utilisez une application reposant sur cette approche, tout ce qu’un attaquant aura à faire, c’est de vous envoyer un lien vers son serveur où il pourra enregistrer votre adresse IP. Votre application se fera un plaisir d’ouvrir elle-même le lien sans que vous y touchiez, et l’attaquant pourra alors connaître votre emplacement géographique ». 

De plus, cette approche peut également poser problème si le lien envoyé pointe vers un fichier volumineux ; une application buggée pourrait essayer de télécharger le fichier en entier, ce qui aurait des conséquences sur la batterie de l’appareil, ainsi que sur la consommation de data du destinataire.

L’étude révèle que deux applications analysées avaient recours à cette méthode, mais les noms de celles-ci n’ont pas été divulgués publiquement puisque le problème serait actuellement en train d’être résolu.

La troisième méthode : des serveurs génèrent l’aperçu

La dernière méthode coupe la poire en deux puisque c’est un serveur qui se charge de générer l’aperçu, ce qui évite notamment le problème de récupération d’IP de la deuxième méthode. Elle n’est néanmoins pas exempte d’éventuelles failles.

« Supposons que vous envoyiez un lien à partir d’une Dropbox privée et que vous ne vouliez pas que quelqu’un d’autre voie ce qu’il contient. Avec cette approche, le serveur devra faire une copie (…) de ce qui se trouve dans le lien afin de générer l’aperçu. La question se pose : le serveur conserve-t-il cette copie ? Si oui, pendant combien de temps ? Que fait-il de ces données ? » détaillent les développeurs dans leur étude.

Par ailleurs, cette approche ne peut (normalement) pas être fonctionnelle sur les applications qui ont recours à un chiffrement de bout en bout, puisqu’aucun serveur ne doit pouvoir avoir accès au contenu du chat.

Manifestement, cette troisième méthode est la plus répandue parmi l’ensemble des applications analysées. Discord, Facebook Messenger, Google Hangouts, Instagram, LinkedIn, Slack, Twitter, Zoom, ou encore LINE reposent dessus.

La méthode zéro

Précisons par ailleurs que certaines applications ont délibérément choisi de ne pas mettre en place les aperçus de liens. C’est le cas notamment de Threema, TikTok, ou encore WeChat. L’application Signal, quant à elle, offre le choix à ses utilisateurs qui pourront, s’ils le désirent, désactiver la prévisualisation de liens depuis leurs paramètres.

Quels sont les risques générés par les aperçus de liens ?

Comme nous l’avons précédemment mentionné, chaque approche comporte des risques spécifiques pour la sécurité et la protection de la vie privée des utilisateurs. Au sein de leur étude, Talal Haj Bakry et Tommy Mysk les ont passés en revue.

Les copies non-autorisées d’informations privées

Les liens envoyés entre deux utilisateurs peuvent contenir des informations privées et sensibles, telles que des factures ou des dossiers médicaux par exemple. Or, comme nous l’avons précédemment expliqué, les applications reposant sur la troisième approche s’appuient sur des serveurs pour générer leurs aperçus de liens, ce qui peut être considéré comme un viol de la vie privée des utilisateurs. En effet, dans la plupart des cas, ces derniers ne sont même pas informés que les serveurs de l’application téléchargent et hébergent les informations se trouvant dans les liens échangés.

Il est également bon de se demander dans quelle mesure ces applications téléchargent-elles les fichiers : Sont-ils téléchargés intégralement ou seulement en partie ? Combien de temps les données sont-elles conservées ? Les serveurs en gardent-ils une copie ? Qui peut y accéder ?

« Bien que la plupart des serveurs d’applications que nous avons testés imposent une limite à la quantité de données téléchargées, seulement 15 Mo suffisent à couvrir la plupart des fichiers qui sont échangés à travers des liens (la plupart des images ne pèsent que quelques Mo). Donc si ces serveurs conservent des copies, ce serait un cauchemar pour la vie privée si jamais il y avait une violation des données sur ces serveurs. C’est une situation particulièrement préoccupante pour les applications professionnelles comme Zoom et Slack » expliquent-ils.

Des conséquences sur la batterie et les données mobiles

Avec la première et la seconde méthode, ce sont soit les expéditeurs, soit les destinataires qui sont directement « responsables » de la génération d’un aperçu. Dans la plupart des cas, cela ne posera pas vraiment de problème puisque les applications n’auront besoin que de très peu de ressources pour générer leurs prévisualisations.

Toutefois, dans le cas d’une application buggée, il peut y avoir des conséquences directes sur la batterie et sur la consommation de données mobiles. Talal Haj Bakry et Tommy Mysk illustrent leurs craintes : « Imaginons que quelqu’un vous envoie un lien vers une image très lourde… Une application buggée qui suit la deuxième approche tentera de télécharger le fichier entièrement sur votre appareil, vidant ainsi votre batterie et épuisant vos données. Cela pourrait également entraîner le plantage de votre application si elle ne sait pas comment traiter des fichiers volumineux ».

L’exécution de code indésirable

De nos jours, la plupart des sites web contiennent du code Javascript afin d’être plus interactifs. Néanmoins, lorsqu’il est question de générer des aperçus de liens, il est préférable d’éviter d’exécuter celui-ci pour des questions de sécurité et ce, quelle que soit la méthode utilisée.

Néanmoins, les deux développeurs ont trouvé deux applications majeures qui le font ; il s’agit d’Instagram et de LinkedIn. Ils ont alors soumis ces deux applications à des tests, en envoyant le lien d’un site hébergé sur leur propre serveur qui contient du code Javascript. « Nous sommes en mesure de confirmer que nous avons eu une fenêtre d’au moins 20 secondes de temps d’exécution sur ces serveurs. Cela peut sembler peu (…), mais les hackers peuvent se montrer très créatifs », précisent-ils.

Instagram et Messenger : aucune limite à la quantité de données téléchargées

Pour générer des aperçus de liens, Messenger et Instagram (qui appartiennent toutes deux à Facebook et qui partagent de ce fait la même infrastructure) se reposent sur la troisième méthode. Lors de leurs tests, Talal Haj Bakry et Tommy Mysk ont remarqué qu’elles étaient les seules à ne fixer aucune limite à la quantité de données téléchargées.

Pour apporter une preuve concrète à leur découverte, les deux développeurs ont hébergé un fichier de 2,6 Go sur leurs propres serveurs, qu’ils ont ensuite envoyé sous la forme d’un lien à travers la messagerie Direct d’Instagram. Ils ont ainsi pu voir quels serveurs téléchargeaient ce fichier, et combien de données étaient téléchargées au total.

« Dès que le lien a été envoyé, plusieurs serveurs Facebook ont immédiatement commencé à télécharger le fichier sur notre serveur. Comme il ne s’agissait pas d’un seul serveur, ce volumineux fichier de 2,5 Go a été téléchargé plusieurs fois. Au total, environ 24,7 Go de données ont été téléchargées depuis notre serveur par ceux de Facebook », détaillent-ils.

Talal Haj Bakry et Tommy Mysk ont porté ce problème à la connaissance du groupe Facebook.

Carton rouge pour LINE

Bien que LINE soit une application chiffrée de bout en bout, elle se base sur la troisième méthode pour générer ses aperçus de liens. Plus clairement, elle transmet les liens envoyés au sein d’un chat à un serveur externe qui se charge de générer les prévisualisations. Talal Haj Bakry et Tommy Mysk précisent que ce serveur transmet également les adresses IP de l’expéditeur et du destinataire du lien en question.

Contactées par les deux développeurs à l’origine de cette découverte, les équipes de LINE ont admis que leurs serveurs ne devraient pas être en mesure de transmettre les adresses IP des utilisateurs. Un problème qui a été corrigé depuis, avec les versions 10.18.0 sur Android et 10.16.1 sur iOS. Toutefois, les équipes du service de messagerie instantanée estiment qu’il est tout à fait acceptable pour une application de chat chiffrée de bout en bout d’utiliser un serveur externe pour générer des aperçus de liens. A priori, cette méthode ne sera donc pas remplacée au profit d’une autre.

Viber, des fichiers volumineux téléchargés

Viber (Rakuten) a choisi la première approche. Dans ce cas, rappelons-le, c’est l’expéditeur qui génère les aperçus de lien. Les deux développeurs ont néanmoins trouvé un bug : si un utilisateur envoie un fichier volumineux à travers un lien, alors son téléphone essaiera automatiquement de le télécharger en entier, même si celui-ci pèse plusieurs gigaoctets. Comme détaillé précédemment, cela peut avoir des conséquences directes sur la batterie des appareils, ainsi que sur la consommation de données mobiles des utilisateurs.

Enfin, les deux hommes rappellent que même si les conversations sur Viber sont elles aussi chiffrées de bout en bout, l’application fera suivre vos liens sur ses serveurs (tout du moins si vous cliquez dessus) à des fins de ciblage publicitaire et de protection contre la fraude. Une pratique que l’application met elle-même en lumière sur son site.

Zoom, Slack, Google Hangouts, Twitter et Discord : quid du temps de conservation des données ?

Ces cinq applications suivent la troisième méthode pour générer les prévisualisations. Toutes, en revanche, n’ont pas les mêmes limites de données : les serveurs de Discord téléchargent jusqu’à 15 Mo pour générer des aperçus de liens, quand ceux de Google Hangouts peuvent aller jusqu’à 20 Mo. Les serveurs de Twitter, eux, montent jusqu’à 25 Mo. Viennent enfin ceux de Slack et LinkedIn, qui sont capables d’aller jusqu’à 50 Mo chacun.

Dans le cas de LinktedIn, Talal Haj Bakry et Tommy Mysk ont découvert que les serveurs utilisés étaient vulnérables à l’exécution de code Javascript, ce qui leur a permis de contourner la limite de téléchargement dans le cadre de leurs tests.

Pour l’ensemble de ces applications, les deux développeurs ont fait part de leurs craintes quant à la durée de préservation des données aux équipes concernées. À l’heure où nous écrivons cet article, Google, LinkedIn, et Discord n’ont pas encore répondu. Slack a garanti que les aperçus de liens ne sont mis en cache que pendant 30 minutes environ. Enfin, les équipes de Twitter ont affirmé que leur système fonctionne parfaitement, sans pour autant divulguer la durée de conservation des données.

En conclusion

Bien qu’en apparence anodins, il apparaît désormais évident, grâce à cette étude, que les aperçus de liens peuvent avoir d’importantes conséquences pour les utilisateurs d’applications de messagerie instantanée. Évidemment, tous les services ne comportent pas les mêmes risques, et certains semblent bien plus sécurisés que d’autres. C’est notamment le cas de WhatsApp, Signal et Threema qui cumulent les bons points sur le tableau comparatif présenté ci-dessous.

Un tableau comparatif des aperçus de liens au sein des applications de messagerie instantané

Le tableau comparatif des applications analysées. Image : Talal Haj Bakry et Tommy Mysk

Puisqu’il vaut mieux prévenir que guérir, nous vous conseillons également de faire particulièrement attention aux contenus que vous partagez sur l’ensemble de ces services : évitez par exemple d’échanger des informations privées et confidentielles à travers des liens sur les applications qui génèrent automatiquement des prévisualisations.