Les paquets npm en proie à une vague de détournement
Le jeudi 4 novembre 2021, à peine plus d'une semaine après le détournement de ua-parser-js, une autre bibliothèque npm populaire appelée coa (Command-Option-Argument), utilisée dans les paquets React du monde entier, a été détournée pour distribuer un malware voleur d'informations d'identification. Les développeurs ont remarqué que quelque chose n'allait pas lorsque de nouvelles versions étranges de coa sont apparues sur npm, brisant les constructions de logiciels. Le paquet coa recevrait environ 9 millions de téléchargements hebdomadaires sur npm, et serait utilisé par près de 5 millions de dépôts open source sur GitHub.
Versions détournées du paquet npm coa
coa est un analyseur d'options en ligne de commande pour les projets Node.js. La dernière version stable 2.0.2 du projet a été publiée en décembre 2018. Cependant, plusieurs versions suspectes 2.0.3, 2.0.4, 2.1.1, 2.1.3 et 3.1.3 ont commencé à apparaître sur npm jeudi, brisant les constructions React qui dépendent de coa. « Je ne suis pas sûr de la raison ou de ce qui s'est passé, mais il y a 10 minutes, il y a eu une version (même si la dernière modification sur GitHub date de 2018). Quoi que cette version ait fait, elle a cassé Internet », a déclaré Roberto Wesley Overdijk, un développeur React.
Plusieurs développeurs ont rejoint la discussion, confirmant avoir rencontré des problèmes avec leurs constructions depuis que les nouvelles versions de coa ont fait leur apparition sur npm. Dans la même journée, il a été constaté qu'un autre composant npm couramment utilisé, rc, avait également été détourné. La bibliothèque rc est un chargeur de configuration et fait l'objet de 14 millions de téléchargements par semaine en moyenne. Selon les développeurs ayant signalé le détournement, les deux paquets auraient été compromis à peu près au même moment et résultent de l'accès des attaquants au compte d'un développeur de paquets.
« Le compte [de développeur] compromis a été temporairement désactivé et nous enquêtons activement sur l'incident et surveillons toute activité similaire », a déclaré l'équipe npm jeudi, peu après avoir détecté la compromission de coa suite à une vague de rapports sur des constructions ratées. Selon le média BleepingComputer - qui a analysé les versions comprises de coa et rc - une fois les comptes piratés, l'acteur de la menace a ajouté un script de post-installation à la base de code originale qui exécute un TypeScript obfusqué, vérifie les détails du système d'exploitation et télécharge un script batch Windows ou bash Linux.
Code JavaScript obfusqué présent dans le fichier compile.js
En outre, cet incident fait suite au piratage, le mois dernier, d'une autre bibliothèque npm populaire, ua-parser-js, utilisée par Facebook, Microsoft, Amazon, Reddit et d'autres grandes entreprises technologiques. Le logiciel malveillant contenu dans les versions piratées de coa, tel qu'analysé par BleepingComputer, serait pratiquement identique au code trouvé dans les versions détournées de ua-parser-js, établissant potentiellement un lien entre les acteurs de la menace derrière les deux incidents. Selon BleepingComputer, le logiciel malveillant est probablement le cheval de Troie voleur de mots de passe Danabot pour Windows.
Lorsqu'il est chargé, Danabot exécute les différentes activités malveillantes suivantes :
- voler les mots de passe de divers navigateurs Web, notamment Chrome, Firefox, Opera, Internet Explorer et Safari ;
- voler les mots de passe de diverses applications, notamment VNC, les applications de casino en ligne, les clients FTP et les comptes de messagerie ;
- voler les cartes de crédit enregistrées ;
- prendre des captures d'écran des écrans actifs ;
- enregistrer les frappes au clavier.
Toutes ces données volées sont ensuite renvoyées aux acteurs de la menace pour leur permettre de violer les autres comptes des victimes. Après la découverte de la compromission des deux paquets, l'équipe npm a déclaré qu'elle a supprimé les versions compromises et a proposé des mesures d'atténuation. « Si j'ai bien compris, npm a supprimé les versions compromises et a bloqué temporairement la publication de nouvelles versions pendant la récupération de l'accès au paquet. Aucun correctif ne devrait être nécessaire puisque les versions compromises ont été supprimées », explique Overdijk.
Quelles sont les mesures d'atténuation recommandées ?
En raison de l'impact étendu de cette attaque de la chaîne d'approvisionnement, il est fortement conseillé à tous les utilisateurs des bibliothèques coa et rc de vérifier l'absence de logiciels malveillants dans leurs projets. Cela inclut la vérification de l'existence de compile.js, compile.bat, sdd.dll et la suppression des fichiers s'ils sont trouvés. Étant donné que cette variante de "sdd.dll" a également été identifiée comme un cheval de Troie sur VirusTotal, et que celle déposée par ua-parser-js était un voleur d'informations d'identification, les utilisateurs infectés doivent également considérer que leur appareil est entièrement compromis.
Le cheval de Troie voleur de mot de passe lancé par Rundll
De ce fait, ils doivent changer leurs mots de passe, clés et jetons d'actualisation, car ils ont probablement été compromis et envoyés à l'acteur de la menace. « Les utilisateurs des versions affectées (2.0.3 et plus) doivent rétrograder vers 2.0.2 dès que possible et vérifier leurs systèmes pour détecter toute activité suspecte. Voir ce numéro pour plus de détails au fur et à mesure. Tout ordinateur sur lequel ce paquet est installé ou en cours d'exécution doit être considéré comme entièrement compromis », ont déclaré jeudi les mainteneurs de la bibliothèque coa.
« Tous les secrets et les clés stockés sur cet ordinateur doivent être immédiatement transférés sur un autre ordinateur. Le paquet doit être supprimé, mais comme le contrôle total de la machine peut avoir été donné à une entité tierce, il n'y a aucune garantie que la suppression du paquet supprimera tous les logiciels malveillants résultant de son installation », ont-ils ajouté. Les conseils partagés dans la discussion originale sur GitHub incluent l'épinglage de la version npm à la version stable "2.0.2". Les instructions d'atténuation pour le paquet rc sont identiques aux précédentes. Les versions du paquet rc concernées sont 1.2.9, 1.3.9, et 2.3.9.
Les utilisateurs doivent rétrograder à la version 1.2.8 dès que possible et vérifier leurs systèmes pour toute activité suspecte. « À la suite d'enquêtes en cours, nous avons identifié en temps réel de multiples versions du paquet rc contenant des logiciels malveillants identiques à ceux du paquet coa. Les versions malveillantes de rc ont été immédiatement supprimées du registre et nous avons publié un avis », a déclaré l'équipe npm, qui attribue l'incident à un compte npm compromis et recommande aux responsables de paquets npm d'utiliser une authentification à deux facteurs pour prévenir de telles attaques.
Sources : Paquet "coa" (1,2), Paquet "rc" (1, 2)
Et vous ?
Quel est votre avis sur le sujet ?
Selon vous, pourquoi les paquets npm sont régulièrement détournés ?
Avez-vous été affecté par l'un de ces paquets compromis ? Si oui, comment vous en êtes-vous sorti ?
Voir aussi
Des logiciels malveillants ont été découverts dans le très populaire paquet npm "ua-parser-js", notamment un mineur de cryptomonnaie et un cheval de Troie
La spécification des nouvelles fonctionnalités de la norme ECMAScript 2021 est terminée. Tour d'horizon des nouveautés introduites dans cette nouvelle version
Un package npm malveillant ouvre des portes dérobées sur les ordinateurs des programmeurs, le code JavaScript douteux se faisant passer pour une bibliothèque liée à la plateforme Twilio
Quatre packages npm trouvés en train d'ouvrir des shells sur des systèmes Linux et Windows. Tout ordinateur avec l'un de ces packages installés « doit être considéré comme totalement compromis »