Une poignée de jours après la découverte d'une faille exploitant le code d'appairage de WhatsApp, des chercheurs en sécurité ont découvert une autre vulnérabilité dans la messagerie instantanée de Meta. A savoir un paquet npm (gestionnaire de paquets de l’écosystème Node.js, qui télécharge des bibliothèques depuis un registre) malveillant qui se fait passer pour une bibliothèque API WhatsApp Web légitime tout en volant discrètement des messages, des identifiants et des données de contact dans les environnements de développement. Le paquet, identifié sous le nom de « lotusbail », fonctionne comme un wrapper trojanisé autour d'une bibliothèque client WhatsApp authentique. Celui-ci avait accumulé plus de 50 000 téléchargements au moment où il a été signalé par Koi Security. « Avec plus de 56 000 téléchargements et un code opérationnel qui fonctionne réellement comme annoncé, c'est le genre de dépendance que les développeurs installent sans hésiter », ont déclaré les chercheurs de la société de sécurité dans un billet de blog. « Le paquet est disponible sur npm depuis 6 mois et il était toujours en ligne au moment où nous écrivions ces lignes. » Les données volées étaient cryptées et exfiltrées vers une infrastructure contrôlée par les attaquants, ce qui réduisait le risque de détection par les outils de surveillance du réseau. Plus inquiétant encore pour les entreprises : « lotusbail » abuse du couplage multi-appareils de WhatsApp pour maintenir sa persistance sur les comptes compromis, même après la suppression du paquet.
Une API légitime dans un proxy malveillant
Selon les chercheurs, à l’origine, « lotusbail » ne semblait être rien de plus qu'un fork utile de la bibliothèque légitime « @whiskeysockets/baileys » utilisée pour interagir avec WhatsApp via WebSockets. Les développeurs pouvaient l'installer, envoyer des messages, recevoir des messages et ne jamais remarquer quoi que ce soit d'anormal. Une analyse plus approfondie a toutefois révélé un problème. Le paquet enveloppait le client WebSocket WhatsApp légitime dans une couche proxy malveillante qui dupliquait de manière transparente toutes les opérations, y compris celles impliquant des données sensibles. Lors de l'authentification, l'enveloppe capturait les jetons et les clés de session. Chaque message transitant par l'application était intercepté, enregistré et préparé pour être transmis de manière dissimulée à l'infrastructure contrôlée par l'attaquant. De plus, les informations volées étaient protégées pendant leur transfert. Plutôt que d'envoyer les identifiants et les messages en clair, le logiciel malveillant utilise une couche de chiffrement RSA personnalisée et plusieurs stratégies d'obfuscation, ce qui rend la détection par les outils de surveillance du réseau plus difficile et permet l'exfiltration sans être détectée. « L'URL du serveur d'exfiltration est enfouie dans des chaînes de configuration cryptées, cachées à l'intérieur de charges utiles compressées », ont indiqué les chercheurs. « Le logiciel malveillant utilise quatre couches d'obfuscation : la manipulation de variables Unicode, la compression LZString, l’encodage Base-91 et le cryptage AES. L'emplacement du serveur n'est codé en dur nulle part de manière visible. »
La porte dérobée toujours active, même après la suppression du paquet
Selon Koi Security, l'élément le plus significatif de cette attaque était sa persistance. WhatsApp permet aux utilisateurs de connecter plusieurs appareils à un seul compte grâce à un processus d'appairage impliquant un code à 8 caractères. Le package malveillant « lotusbail » a détourné ce mécanisme en intégrant un code d'appairage codé en dur qui ajoutait efficacement l'appareil de l'attaquant comme point de terminaison de confiance sur le compte WhatsApp de l'utilisateur. Même si les développeurs ou les entreprises désinstallaient le package par la suite, l'appareil lié de l'attaquant restait connecté. L'attaque a pu ainsi persister jusqu'à ce que l'utilisateur WhatsApp délie manuellement tous les appareils à partir du panneau de configuration. Cet accès persistant permet aux attaquants de continuer à lire les messages, à collecter des contacts, à envoyer des messages au nom des victimes et à télécharger des médias longtemps après l'exposition initiale.
Mesures à prendre par les développeurs et les défenseurs
Koi Security a souligné que les actions de protection traditionnelles, basées sur des mesures de réputation, des vérifications de métadonnées ou des analyses statiques, échouent lorsque la logique malveillante imite un comportement légitime. « Le logiciel malveillant parvient à se dissimuler dans l'écart entre ‘ce code fonctionne’ et ‘ce code ne fait que ce qu'il prétend faire’ », ont expliqué les chercheurs, ajoutant que ces menaces liées à la chaîne d'approvisionnement nécessitent de surveiller le comportement des paquets lors de leur exécution plutôt que de se fier uniquement à des vérifications statiques. Ils recommandent de rechercher (ou de s'appuyer sur des outils capables de détecter) des signes avant-coureurs, comme des routines de chiffrement RSA personnalisées et des dizaines de mécanismes anti-débogage intégrés dans le code malveillant. Le package reste disponible sur npm, sa dernière mise à jour ayant été publiée il y a une dizaine de jours. GitHub, propriétaire de npm depuis 2020, n'a pas immédiatement répondu à une demande de commentaires.

Commentaire