Un package npm malveillant se faisant passer pour une bibliothèque d’API Web WhatsApp a fonctionné pendant des mois comme une dépendance fonctionnelle tout en volant des messages et en maintenant la persistance.
Des chercheurs en sécurité ont découvert un package npm malveillant qui se présente comme une bibliothèque légitime d’API Web WhatsApp tout en volant discrètement des messages, des informations d’identification et des données de contact dans les environnements de développement.
Le package, identifié sous le nom de « lotusbail », fonctionne comme un cheval de Troie autour d’une véritable bibliothèque client WhatsApp et 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 fonctionnel 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 Koi dans un article de blog. « Le package est disponible sur npm depuis 6 mois et est toujours en ligne au moment de la rédaction. »
Les données volées ont été cryptées et exfiltrées vers une infrastructure contrôlée par les attaquants, réduisant ainsi la probabilité de détection par les outils de surveillance du réseau. Ce qui est encore plus préoccupant pour les entreprises est le fait que Lotusbail abuse du couplage multi-appareils de WhatsApp pour maintenir la persistance des comptes compromis même après la suppression du package.
L’API légitime utilise un proxy pour les menaces
Selon les chercheurs, lotusbail ne semblait initialement ê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 pourraient l’installer, envoyer des messages, recevoir des messages et ne jamais remarquer quoi que ce soit d’anormal.
Une enquête plus approfondie a cependant révélé un problème.
Le package encapsulait le client WhatsApp WebSocket légitime dans une couche proxy malveillante qui dupliquait de manière transparente chaque opération, y compris celles impliquant des données sensibles. Lors de l’authentification, le wrapper a capturé les jetons et les clés de session. Chaque message circulant via l’application a été intercepté, enregistré et préparé pour une transmission secrète à l’infrastructure contrôlée par l’attaquant.
De plus, les informations volées étaient protégées en cours de route. Plutôt que d’envoyer des informations d’identification et des messages en texte brut, le logiciel malveillant utilise une couche de cryptage RSA personnalisée et plusieurs stratégies d’obscurcissement, ce qui rend la détection par les outils de surveillance du réseau plus difficile et permet à l’exfiltration de se dérouler sous le radar.
« L’URL du serveur d’exfiltration est enfouie dans des chaînes de configuration cryptées, cachées dans des charges utiles compressées », ont noté les chercheurs. « Le malware utilise quatre couches d’obscurcissement : manipulation de variables Unicode, compression LZString, encodage Base-91 et cryptage AES. L’emplacement du serveur n’est codé en dur nulle part visible. »
La porte dérobée reste présente même après le retrait du colis
Koi a déclaré que l’élément le plus important de l’attaque était sa persistance. WhatsApp permet aux utilisateurs de lier plusieurs appareils à un seul compte via un processus de couplage impliquant un code à 8 caractères. Le package malveillant lotusbail a détourné ce mécanisme en intégrant un code de couplage codé en dur qui a effectivement ajouté l’appareil de l’attaquant en tant que point final de confiance sur le compte WhatsApp de l’utilisateur.
Même si les développeurs ou les organisations désinstallaient ultérieurement le package, l’appareil lié à l’attaquant restait connecté. Cela a permis à l’attaque de persister jusqu’à ce que l’utilisateur de WhatsApp dissocie manuellement tous les appareils du panneau des paramètres.
L’accès persistant permet aux attaquants de continuer à lire des messages, à collecter des contacts, à envoyer des messages au nom des victimes et à télécharger des médias longtemps après l’exposition initiale.
Que doivent faire les développeurs et les défenseurs ?
La divulgation de Koi a noté que les protections traditionnelles, basées sur des mesures de réputation, des vérifications de métadonnées ou une analyse statique, échouent lorsqu’une logique malveillante imite un comportement légitime.
« Le malware se cache dans l’écart entre ‘ce code fonctionne’ et ‘ce code ne fait que ce qu’il prétend' », ont déclaré les chercheurs, ajoutant que de telles menaces sur la chaîne d’approvisionnement nécessitent de surveiller le comportement des packages au moment de l’exécution plutôt que de s’appuyer uniquement sur des contrôles statiques. Ils ont recommandé de rechercher (ou de s’appuyer sur des outils capables) des signes d’avertissement, tels que des routines de chiffrement RSA personnalisées et des dizaines de mécanismes anti-débogage intégrés dans le code malveillant.



