NPM : des paquets totalisant 2,6 milliards de téléchargements par semaine infectés par un malware
Un logiciel malveillant a été injecté dans des paquets NPM comptabilisant plus de 2,6 milliards de téléchargements par semaine. Pour y parvenir, les pirates ont compromis le compte d'un mainteneur de packages NPM. Voici ce que l'on sait sur cette attaque majeure.
Sommaire
Le scénario d'attaque : du phishing, comme souvent
L'attaque a débuté par un e-mail de phishing envoyé à plusieurs mainteneurs de packages sur NPM. Pour rendre leur e-mail crédible, les attaquants ont utilisé une adresse e-mail avec un nom de domaine similaire à celui du site officiel : support[@]npmjs[.]help. Le message menaçait de bloquer les comptes des développeurs à partir du 10 septembre 2025 s'ils ne mettaient pas à jour leur méthode de connexion pour l'authentification à deux facteurs (2FA).
"Dans le cadre de notre engagement permanent en faveur de la sécurité des comptes, nous demandons à tous les utilisateurs de mettre à jour leurs identifiants d'authentification à deux facteurs (2FA). Nos dossiers indiquent que votre dernière mise à jour de l'authentification à deux facteurs remonte à plus de 12 mois.", mentionnait notamment cet e-mail.
L'une des personnes ciblées, Josh Junon, alias "qix", a confirmé avoir été victime de cette campagne de phishing. En cliquant sur le lien, les victimes étaient redirigées vers une fausse page de connexion qui exfiltrait leurs identifiants vers une URL contrôlée par les attaquants. Une fois les précieuses informations entre leurs mains, les cybercriminels ont pu accéder au compte du mainteneur et publier de nouvelles versions infectées de plusieurs packages NPM.

La cible du logiciel malveillant : les cryptomonnaies
Après avoir pris le contrôle du compte de Josh Junon, les pirates ont injecté un code malveillant dans les paquets NPM. L'objectif étant d'intercepter des données directement côté navigateur. Ce malware, selon les analyses d'Aikido Security, est capable de :
- Surveiller les transactions et adresses de portefeuilles de cryptomonnaies pour de multiples devises (Ethereum, Bitcoin, Solana, etc.).
- Modifier les destinations des transactions en les remplaçant par des adresses de portefeuilles appartenant aux attaquants.
- Hijacker les transactions avant même qu'elles ne soient signées par l'utilisateur.
Autrement dit, ce malware ne modifie pas le comportement de l'application, mais il agit discrètement pour voler des cryptomonnaies. Le code malveillant s'injecte avec des hooks ciblant des fonctions JavaScript comme fetch et XMLHttpRequest, ainsi que les API des portefeuilles crypto (window.ethereum, Solana, etc.).
"Ce qui le rend dangereux, c'est qu'il opère à plusieurs niveaux : il modifie le contenu affiché sur les sites web, altère les appels d'API et manipule ce que les applications des utilisateurs croient être en train de signer.", précise Aikido Security.
Parmi les packages compromis, on trouve des noms très populaires et des briques essentielles de nombreux projets : ces paquets représentent 2,67 milliards de téléchargements par semaine ! Voici la liste des paquets compromis avec le nombre d'installations par semaine (en millions) :
- ansi-styles (371,41 M)
- debug (357,6 M)
- chalk (299,99 M)
- supports-color (287,1 M)
- strip-ansi (261,17 M)
- ansi-regex (243,64 M)
- wrap-ansi (197,99 M)
- color-convert (193,5 M)
- color-name (191,71 M)
- is-arrayish (73,8 M)
- slice-ansi (59,8 M)
- error-ex (47,17 M)
- color-string (27,48 M)
- simple-swizzle (26,26 M)
- supports-hyperlinks (19,2 M)
- has-ansi (12,1 M)
- chalk-template (3,9 M)
- backslash (0,26 M)
Andrew MacPherson, ingénieur principal en sécurité chez Privy, a indiqué à BleepingComputer que seuls certains scénarios précis pouvaient mener à une compromission :
- Une installation effectuée entre 15h00 - 17h30 en France, le 8 septembre 2025, soit la période durant laquelle les paquets ont été compromis,
- La génération d’un fichier package-lock.json au cours de ce laps de temps,
- La présence de paquets vulnérables dans les dépendances, qu’elles soient directes ou transitoires.
Paquets NPM : quelles sont les versions infectées ?
D'après le rapport de la société Aikido Security, les versions suivantes des paquets NPM sont infectés par le code malveillant :
| Package NPM | Version |
|---|---|
| backslash | 0.2.1 |
| chalk-template | 1.1.1 |
| supports-hyperlinks | 4.1.1 |
| has-ansi | 6.0.1 |
| simple-swizzle | 0.2.3 |
| color-string | 2.1.1 |
| error-ex | 1.3.3 |
| color-name | 2.0.1 |
| is-arrayish | 0.3.3 |
| slice-ansi | 7.1.1 |
| color-convert | 3.1.1 |
| wrap-ansi | 9.0.1 |
| ansi-regex | 6.2.1 |
| supports-color | 10.2.1 |
| strip-ansi | 7.1.1 |
| chalk | 5.6.1 |
| debug | 4.4.2 |
| ansi-styles | 6.2.2 |
Cet incident de sécurité est un bel exemple d'une attaque de la chaine d'approvisionnement.
Qu'en pensez-vous ?

