Le 8 septembre, une attaque significative de la chaîne d'approvisionnement logicielle a été découverte au sein de l'écosystème NPM, affectant plusieurs bibliothèques JavaScript largement utilisées. L'incident a été porté à l'attention du public lorsque Charles Guillemet, directeur de la technologie de Ledger, a émis un avertissement selon lequel le compte Node Package Manager d'un développeur de confiance avait été compromis. Les premières évaluations suggéraient que plus d'un milliard de téléchargements étaient exposés à un logiciel malveillant caché conçu pour voler des cryptomonnaies. Des enquêtes ultérieures ont cependant révélé que les packages compromis représentent collectivement plus de 2,6 milliards de téléchargements hebdomadaires.

Attaque de la chaîne d'approvisionnement expose plus de 2 milliards
Attaque de la chaîne d'approvisionnement expose plus de 2 milliards
L'attaque a ciblé le compte d'un développeur connu sous le nom de « qix », qui maintient plusieurs bibliothèques JavaScript populaires. Celles-ci incluent chalk, strip-ansi, color-convert et debug, toutes utilisées dans d'innombrables projets, tant dans les environnements côté serveur que côté client. Les attaquants ont eu accès au compte via un faux e-mail de support et ont poussé des mises à jour malveillantes vers environ 18 packages. En raison des installations de dépendances automatisées, le malware s'est propagé rapidement en quelques heures après la violation.
Guillemet a expliqué que le code malveillant était conçu pour remplacer silencieusement les adresses de portefeuille de cryptomonnaie pendant les transactions. Cela a exposé les utilisateurs qui dépendent des portefeuilles logiciels au risque de perdre des fonds s'ils approuvaient des transactions sans remarquer que l'adresse du destinataire avait été modifiée.
Malware Crypto Clipper et MetaMask
Les chercheurs en sécurité ont identifié le malware comme un type de « crypto clipper ». Il fonctionne en remplaçant les adresses de portefeuille à différentes étapes d'une transaction. Dans les cas où aucun portefeuille n'est détecté, le malware modifie les données sortantes au sein des applications décentralisées en se connectant aux fonctions du navigateur telles que fetch et XMLHttpRequest. Cela lui permet de scanner et de modifier les adresses au sein des données de l'application.
Si une extension de portefeuille telle que MetaMask est détectée, le malware devient plus direct en interceptant la transaction avant qu'elle ne soit signée. Il modifie l'adresse du portefeuille en mémoire de sorte que lorsque l'utilisateur examine la transaction, l'adresse frauduleuse est déjà en place. Le malware s'appuie sur l'algorithme de Levenshtein, qui génère des adresses qui ressemblent étroitement à l'original. Cette similitude rend moins probable que les utilisateurs identifient l'altération.

Attaque de la chaîne d'approvisionnement expose plus de 2 milliards
Premiers signes de l'attaque
Les développeurs ont rencontré les premiers signes de l'attaque lorsque les systèmes de build ont renvoyé un message d'erreur inattendu. Une inspection plus approfondie d'une dépendance appelée error-ex a révélé un code obfusqué qui contenait une fonction suspecte nommée checkethereumw, indiquant un ciblage des portefeuilles Ethereum. Les analystes ont ensuite confirmé que le malware contenait des références à des adresses de portefeuille sur plusieurs blockchains, y compris Bitcoin, Ethereum, Solana, Tron, Litecoin et Bitcoin Cash.
Parmi les packages affectés figuraient certains des plus largement utilisés dans l'écosystème JavaScript. Chalk reçoit à lui seul plus de 300 millions de téléchargements hebdomadaires, debug plus de 350 millions et strip-ansi plus de 260 millions. Au total, les bibliothèques compromises sont collectivement téléchargées plus de 2,6 milliards de fois chaque semaine, ce qui souligne l'ampleur de l'impact sur la communauté des développeurs.
Portefeuilles matériels vs logiciels
Bien que de nombreuses bibliothèques infectées ne soient pas directement liées à des projets de cryptomonnaie, leur intégration dans les chaînes de dépendances signifie que même des applications non liées peuvent avoir été exposées. Les projets qui interagissent avec des portefeuilles de cryptomonnaie et des applications décentralisées sont considérés comme présentant le niveau de risque le plus élevé.
Selon Guillemet, les utilisateurs de portefeuilles matériels avec des fonctions de signature claire restent en sécurité car ces appareils leur permettent de vérifier chaque transaction avant approbation. En revanche, les utilisateurs de portefeuilles logiciels sont plus exposés et sont invités à faire preuve d'une extrême prudence jusqu'à ce que les dépendances aient été entièrement examinées et sécurisées.
Trouver l'attaquant et les fonds volés
Les adresses de cryptomonnaie de l'attaquant ont été identifiées et sont activement surveillées grâce à la transparence des blockchains publiques. Une adresse Ethereum principale liée à l'opération est 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976, ainsi que plusieurs autres adresses de secours. Au moment de la rédaction de ce rapport, les fonds volés n'avaient pas été déplacés. Cette surveillance offre une opportunité d'analyse continue, bien que l'étendue totale des actifs volés reste incertaine.

Attaque de la chaîne d'approvisionnement expose plus de 2 milliards
JavaScript et rôle de la communauté
Les communautés JavaScript et web3 ont agi rapidement pour contenir l'incident. Les versions malveillantes des packages compromis ont été largement supprimées du registre, mais des risques subsistent pour les projets qui pourraient encore dépendre de versions obsolètes dans leurs lockfiles. Les développeurs sont invités à auditer leurs dépendances, à verrouiller des versions sûres et à réinstaller des builds propres pour éviter une exposition supplémentaire.
Les professionnels de la sécurité recommandent également aux développeurs de renouveler leurs identifiants, d'appliquer l'authentification à deux facteurs sur des comptes tels que NPM et GitHub, et d'utiliser des méthodes d'installation déterministes comme npm ci pour maintenir un contrôle de version strict. De plus, les utilisateurs sont invités à vérifier attentivement toutes les transactions de cryptomonnaie, en particulier s'ils dépendent de portefeuilles logiciels.
Réflexions finales
Cet incident a été décrit comme l'une des violations les plus étendues à affecter l'écosystème NPM. Bien que la réponse de la communauté ait été relativement rapide, l'attaque souligne la fragilité des chaînes d'approvisionnement logicielles modernes et les risques créés par la dépendance généralisée aux composants open source.
Comme l'a souligné Guillemet, l'examen de chaque transaction avant de signer reste essentiel. La violation rappelle que même de petites bibliothèques profondément intégrées dans l'infrastructure des applications peuvent devenir des vecteurs d'attaque importants lorsqu'elles sont compromises. Pour les développeurs comme pour les utilisateurs, une vigilance continue est désormais un élément essentiel du maintien de la sécurité dans les écosystèmes web3 et de développement logiciel.



