Breaking
Markets
EUR/USD1.1612 0.07%GBP/USD1.3400 0.05%USD/JPY159.03 0.05%USD/CHF0.7886 0.14%AUD/USD0.7111 0.08%USD/CAD1.3749 0.05%USD/CNY6.8207 0.21%USD/INR96.65 0.11%USD/BRL5.0310 0.16%USD/ZAR16.69 0.25%USD/TRY45.59 0.04%Gold$4,548.60BTC$77,589 1.09%ETH$2,137 1.26%SOL$86.08 2.13%
Tech

Mini Shai-Hulud frappe à nouveau : 314 paquets npm compromis

Hacker Newsil y a 1 j
Un cadenas sur un clavier avec du code binaire en arrière-plan
Photo: Rafael Minguet Delgado / Pexels

Une attaque de la chaîne d'approvisionnement a été divulguée cette semaine sur npm, le gestionnaire de dépendances le plus utilisé par la communauté JavaScript. Selon l'entreprise de sécurité SafeDep, un groupe d'attaquants se faisant appeler Mini Shai-Hulud a placé des variantes malveillantes dans 314 paquets npm populaires. L'attaque ne visait pas un développeur indépendant isolé, mais les identifiants de publication des éditeurs d'origine de ces paquets.

Le nom renvoie à une campagne plus large baptisée Shai-Hulud, menée par le même groupe en 2024. L'attaque précédente exploitait une faille de pipeline CI/CD GitHub Actions et avait compromis environ 1 500 paquets. Mini Shai-Hulud est la version plus petite mais plus ciblée du même acteur — cette fois en entrant dans les comptes npm via l'hameçonnage des jetons d'accès des éditeurs.

Parmi les 314 paquets concernés figurent deux catégories populaires. L'un comprend des bibliothèques de manipulation de fichiers (plug-ins fs-extra, variantes glob) avec une base de téléchargements hebdomadaires d'environ 100 000. Le second comprend des bibliothèques de logs et de diagnostic, dont la base utilisateur est plus restreinte mais l'usage entreprise élevé. L'analyse de SafeDep a montré que la majorité des éditeurs concernés utilisait un mode d'authentification à jeton unique contournant la double authentification.

La technique d'attaque consistait en un hook « postinstall » ajouté discrètement au fichier package.json. Il s'exécute automatiquement lors de la commande npm install ; un petit script collecte ensuite les variables d'environnement du système de l'utilisateur — en particulier AWS_ACCESS_KEY, NPM_TOKEN, GITHUB_TOKEN et OPENAI_API_KEY — et les envoie à un serveur de commande et contrôle distant. La structure n'est pas sophistiquée mais efficace.

Selon SafeDep, la campagne a commencé vers minuit UTC le 17 mai et a été identifiée 18 heures plus tard. Pendant cet intervalle, les paquets compromis auraient reçu environ 2,8 millions de nouveaux téléchargements. La liste exacte des développeurs dont l'environnement personnel a été exfiltré n'est pas encore connue ; SafeDep a notifié GitHub le matin du 19 mai pour bloquer les adresses IP du serveur de commande et contrôle.

npm Inc. a confirmé l'incident et rétabli toutes les versions saines des paquets concernés. Dans le même temps, 23 comptes d'éditeurs ont été suspendus à titre temporaire, leurs détenteurs étant tenus de se ré-authentifier, d'activer la double authentification et de faire tourner les jetons utilisés au cours des trois derniers mois. Une mise à jour plus large de la politique à destination de l'ensemble des éditeurs npm est attendue, avec une proposition de rendre la double authentification obligatoire pour tous.

Les conseils pratiques à la communauté des développeurs se divisent en quatre catégories. Premièrement, faire tourner les variables d'environnement pour tout système ayant exécuté npm install ces 18 dernières heures. Deuxièmement, faire un diff manuel des fichiers package-lock.json pour repérer des scripts postinstall ajoutés. Troisièmement, en environnement entreprise, exécuter npm install dans un bac à sable. Quatrièmement, utiliser Snyk, GitHub Dependabot ou l'outil propre de SafeDep d'analyse de la chaîne d'approvisionnement.

La portée plus large de l'attaque tient aux problèmes structurels de sécurité de l'écosystème JavaScript. npm héberge 3,2 millions de paquets actifs ; si l'on admet qu'environ 14 % sont maintenus par un seul éditeur, la compromission d'un seul compte peut toucher une vaste base d'utilisateurs. Depuis que GitHub a officiellement absorbé npm sur sa plateforme l'an dernier, l'alignement des politiques de sécurité est mieux suivi, mais la sécurité structurelle dépend encore du choix de l'éditeur.

Du côté de la défense, un autre développement technique important est la signature de paquets, dont l'adoption a progressé sur les douze derniers mois. Depuis mars 2026, GitHub permet de vérifier les paquets à partir de la signature de l'éditeur ; environ 18 % des paquets npm utilisent ce dispositif aujourd'hui. Aucun des 314 paquets touchés par Mini Shai-Hulud n'était signé.

À terme, la fréquence croissante de ces incidents dans l'écosystème JavaScript — environ 30 à 40 attaques notables par an sur npm depuis trois ans — invite l'industrie à revoir le niveau de sécurité par défaut des gestionnaires de paquets. Les écosystèmes Python (PyPI), Ruby (rubygems) et Rust (crates.io) ont des politiques par défaut plus strictes. Comparée à eux, la politique historiquement ouverte de npm est jugée à la fois conviviale pour les développeurs et moins sûre.

Cet article est un résumé éditorial assisté par IA basé sur Hacker News. L'image est une photo d'archive de Rafael Minguet Delgado sur Pexels.