La bibliothèque populaire ‘coa’ NPM détournée pour voler les mots de passe des utilisateurs

npm

La bibliothèque npm populaire « coa » a été piratée aujourd’hui avec du code malveillant qui y a été injecté, ce qui a eu un impact éphémère sur les pipelines React dans le monde entier.

La bibliothèque ‘coa’, abréviation de Command-Option-Argument, reçoit environ 9 millions de téléchargements hebdomadaires sur npm et est utilisée par près de 5 millions de référentiels open source sur GitHub.

Quelques heures après cette découverte, un autre composant npm couramment utilisé « rc » s’est également avéré avoir été piraté. La bibliothèque ‘rc’ enregistre en moyenne 14 millions de téléchargements par semaine.

Code malveillant injecté dans les versions « coa »

Aujourd’hui, les développeurs du monde entier ont été surpris de remarquer de nouvelles versions de la bibliothèque npm « coa », un projet qui n’a pas été touché depuis des années, apparaissent de manière inattendue sur npm.

‘coa’ est un analyseur d’options de ligne de commande pour les projets Node.js. La dernière version stable 2.0.2 du projet est sortie en décembre 2018.

Mais, 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 il y a quelques heures, brisant les packages React qui dépendent de ‘coa’.

npm coa versions piratées
Versions piratées du package npm ‘coa’ (GitHub)

« Je ne sais pas pourquoi ni ce qui s’est passé, mais il y a 10 minutes, il y a eu une sortie (même si le dernier changement sur GitHub date de 2018). Quoi qu’ait fait cette sortie, elle a cassé Internet », mentionné Roberto Wesley Overdijk, un développeur React.

Un autre utilisateur GitHub avec poignée El Bidouilleur vu l’une de ces versions ‘coa’, 2.1.3 rupture leur construction :

npm ERR ! code ELIFECYCLE
npm ERR ! erreur 1
npm ERR ! préinstallation coa@2.1.3 : démarrez /B node compile.js & node compile.js
npm ERR ! État de sortie 1
npm ERR !
npm ERR ! Échec du script de préinstallation coa@2.1.3.
npm ERR ! Ce n’est probablement pas un problème avec npm. Il y a probablement une sortie de journalisation supplémentaire ci-dessus.
npm ERR ! Un journal complet de cette course peut être trouvé dans:
npm ERR ! /home/mboutin/.npm/_logs/2021-11-04T14_01_45_544Z-debug.log

Plusieurs développeurs ont rejoint la discussion, confirmant qu’ils rencontraient des problèmes avec leurs versions depuis que les nouvelles versions de « coa » ont frappé npm.

Peu de temps après la publication de cet article, EZpublish-france.fr a également découvert qu’une autre bibliothèque npm populaire, ‘rc’ a également été détourné, avec des versions malveillantes 1.2.9, 1.3.9 et 2.3.9 apparaissant sur npm.

Malware identique à ‘ua-parser-js’ piraté et aux faux paquets Noblox

Cet incident fait suite au piratage le mois dernier d’une autre bibliothèque npm populaire « ua-parser-js » qui est utilisée par Facebook, Microsoft, Amazon, Reddit et d’autres grandes entreprises technologiques.

Le malware contenu dans les versions ‘coa’ piratées, tel qu’analysé par EZpublish-france.fr, est pratiquement identique au code trouvé dans le piratage ua-parser-js versions, établissant potentiellement un lien entre les acteurs de la menace derrière les deux incidents.

Bien que les versions malveillantes « coa » aient été supprimées sur npm, en tant que chercheur en sécurité de Sonatype, j’ai pu récupérer des copies archivées du système de détection de logiciels malveillants automatisé de Sonatype.

Les versions 2.0.3, 2.1.3 et quelques autres semblent ne contenir rien d’autre que suspect préinstaller scripts, illustrés ci-dessous.

« preinstall »: « start /B node compile.js & node compile.js »

script de préinstallation npm
Le script de préinstallation sur la ligne 43 lance un fichier JavaScript malveillant (EZpublish-france.fr)

Mais c’est avec la 2.0.4 que l’on voit des codes malveillants introduits en plein essor. C’est dedans coa:2.0.4, que le « compile.js » référencé par le script de préinstallation existe réellement et est exécuté :

Le fichier « compile.js » contient du code JavaScript obscurci, comme vu par EZpublish-france.fr :

code obscurci de compile.js
Code JavaScript obscurci dans compile.js (EZpublish-france.fr)

Ce fichier JavaScript lance en outre un fichier Batch, « compile.bat » inclus dans l’archive npm « coa ».

Le script Batch est encore une fois obscurci, mais dans le style des faux typosquats Noblox npm capturés la semaine dernière qui installeraient des ransomwares et des voleurs d’informations d’identification sur les machines infectées. Il s’appuie sur un concept connu sous le nom de expansion variable pour l’obscurcissement :

fichier compile.bat obscurci
Fichier batch obscurci compile.bat (EZpublish-france.fr)

Et ce fichier batch télécharge et exécute un « sdd.dll » de pasteurcryptographe[.]at, qui n’est pas identique au « sdd.dll » abandonné par le détourné ua-parser-js versions.

Et le « sdd.dll » supprimé par les versions malveillantes de « rc » est encore différent (en termes de somme de contrôle) que ces deux. Mais toutes les DLL plantent essentiellement le même malware.

Une copie désobscurcie du fichier batch, illustré ci-dessous, a été partagée avec EZpublish-france.fr par _LesEmpereurs_.

script batch désamorcé
Script Batch désobscurci, compile.bat, trouvé dans les versions ‘coa’ piratées (EZpublish-france.fr)

Sur la base de notre analyse et des informations vues jusqu’à présent, le malware est probablement le cheval de Troie Danabot voleur de mots de passe pour Windows.

Lorsqu’il est chargé via regsvr32.exe, il finira par se relancer à l’aide de rundll32.exe avec divers arguments pour effectuer différents comportements malveillants.

Cheval de Troie voleur de mot de passe lancé par Rundll
Cheval de Troie voleur de mot de passe lancé par Rundll

Une fois chargé, Danabot effectuera les différentes activités malveillantes, notamment :

  • Volez des mots de passe à partir de divers navigateurs Web, notamment Chrome, Firefox, Opera, Internet Explorer et Safari.
  • Volez les mots de passe de diverses applications, y compris VNC, les applications de casino en ligne, les clients FTP et les comptes de messagerie.
  • Voler les cartes de crédit stockées.
  • Prenez des captures d’écran des écrans actifs.
  • Enregistrer les frappes.

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.

Que doivent faire les utilisateurs de COA et RC ?

En raison de l’impact généralisé 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 leurs projets à la recherche de logiciels malveillants.

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 « sdd.dll » a également été identifiée comme un cheval de Troie sur VirusTotal, et que celle abandonnée par « ua-parser-js » était un voleur d’informations d’identification, les utilisateurs infectés doivent également considérer que leur appareil est complètement compromis et modifier leurs mots de passe, clés , et actualisez les jetons, car ils ont probablement été compromis et envoyés à l’auteur de la menace.

« NPM a supprimé les versions compromises et, si je comprends bien, a bloqué temporairement la publication de nouvelles versions tout en récupérant l’accès au package », explique Overdijk.

« Aucun correctif ne devrait être nécessaire car les versions affectées ont été supprimées. Mais je laisse ce que j’ai écrit initialement au cas où quelque chose se reproduirait à nouveau. Pour l’instant, je vous conseillerais d’épingler la version comme décrit ci-dessous jusqu’à ce que cela soit résolu définitivement. »

Les astuces partagées dans la discussion GitHub originale incluent épinglage la version npm vers la version stable « 2.0.2 »:

« résolutions »: { « coa »: « 2.0.2 » },

Pour ‘rc’, une version sûre à utiliser serait la 1.2.8.

« Suite à des enquêtes en cours, nous avons identifié en temps réel plusieurs versions du package ‘rc’ contenant des logiciels malveillants identiques au package ‘coa’. Les versions malveillantes de ‘rc’ ont été immédiatement supprimées du registre et nous avons publié un avis. États npm, qui a imputé l’incident à un compte npm compromis et a recommandé aux responsables de npm d’utiliser une authentification à deux facteurs pour empêcher de telles attaques.

Mise à jour, 5 novembre, 01:47 ET: Des parties mises à jour de l’article pour inclure la bibliothèque npm ‘rc’ ont également été détournées. Ajout de la déclaration de npm.