Le 15 septembre, des chercheurs en sécurité ont signalé une attaque importante de la chaîne logistique visant l’écosystème des paquets npm.
L’incident impliquait une souche de maliciel auto-propagatif qui a compromis des paquets de code très utilisés, notamment @ctrl/tinycolor, dans le cadre d’une campagne plus vaste touchant plus de 180 paquets. L’attaque met en évidence les menaces persistantes qui pèsent sur les registres de paquets open source et leur importance dans les flux de développement logiciel modernes.
Vue d’ensemble de l’attaque
Le premier paquet identifié dans cette campagne, rxnt-authentication, a été mis à jour le 14 septembre, peu avant que d’autres compromissions ne soient détectées.
Les enquêteurs ont constaté que le maliciel exploitait un comportement semblable à celui d’un ver pour se propager via npm, ce qui en fait l’une des premières attaques auto-réplicatives documentées au sein de cet écosystème. En s’intégrant à des paquets légitimes, le maliciel représentait un risque pour les développeurs et les entreprises qui dépendent de npm pour distribuer leurs logiciels.
Fonctionnalités du maliciel
Le code malveillant suivait un processus en plusieurs étapes conçu pour récupérer des identifiants, exfiltrer des données et se propager davantage dans le registre npm :
- Collecte d’identifiants: Le maliciel analysait les systèmes infectés et les environnements d’intégration continue (CI) à la recherche de secrets, notamment des clés cloud, des jetons d’authentification et des variables d’environnement. Des outils tels que TruffleHog étaient utilisés pour localiser les informations sensibles.
- Exfiltration de données: Les informations dérobées, ainsi que les métadonnées relatives à l’hôte et au système, étaient déposées dans des dépôts GitHub publics sous des noms tels que Shai-Hulud, permettant aux attaquants de récupérer les données compromises.
- Exploitation de GitHub Actions: Le maliciel déployait un fichier de workflow malveillant (.github/workflows/shai-hulud-workflow.yml) afin d’extraire les secrets des dépôts et de les transmettre à des webhooks contrôlés par les attaquants.
- Auto-réplication: En récupérant les jetons d’authentification npm, le maliciel republiait d’autres paquets gérés par des développeurs compromis et y intégrait son code afin d’assurer sa propagation.
- Manipulation des dépôts: Les dépôts privés étaient rendus publics ou complétés par des workflows et des branches supplémentaires, élargissant la surface d’infection dans les environnements de développement.
Menaces visant la chaîne logistique
Cet incident fait suite à plusieurs compromissions très médiatisées dans l’écosystème npm, notamment des attaques contre des paquets liés aux cryptomonnaies et des frameworks de développement. Ces événements soulignent le risque systémique posé par les vulnérabilités de la chaîne logistique dans les systèmes de gestion des paquets.
npm, qui constitue le plus grand dépôt de paquets JavaScript au monde, est fréquemment ciblé en raison de son rôle critique dans le développement d’applications.
Mesures d’atténuation et recommandations
Examiner les comptes GitHub et les registres npm
Les entreprises devraient vérifier leurs comptes GitHub à la recherche d’activités suspectes, comme la création de dépôts non autorisés ou de branches portant le nom Shai-Hulud. Les développeurs devraient également examiner les registres npm pour repérer les versions de paquets non approuvées ou les contenus récemment publiés sous leurs comptes.
Identifier et supprimer les paquets compromis
Les paquets npm concernés sont retirés du registre par leurs mainteneurs. Les équipes de sécurité devraient vérifier les paquets touchés et les désinstaller des chaînes de développement et des terminaux. En cas d’infection avérée, il peut être nécessaire de purger les caches npm locaux et de réinstaller les dépendances afin d’éliminer le maliciel intégré.
Renouveler les secrets compromis
Les appareils exécutant des paquets contenant un cheval de Troie devraient être isolés jusqu’à la fin de la remédiation. Tous les identifiants exposés — notamment les clés cloud, les jetons d’API, les chaînes de connexion aux bases de données, les clés SSH et les secrets GitHub — devraient être renouvelés.
Même en l’absence de compromission confirmée, le renouvellement des secrets les plus sensibles dans les différents environnements peut réduire l’exposition potentielle.
Surveiller l’activité réseau
Les enquêteurs ont observé que le maliciel utilisait des connexions sortantes vers webhook[.]site pour vérifier la réussite de sa propagation. Les entreprises qui ne dépendent pas de ce service devraient envisager de bloquer le domaine afin d’empêcher les communications non autorisées.
La compromission de la chaîne logistique npm démontre la sophistication croissante des maliciels qui ciblent les écosystèmes open source.
En combinant le vol d’identifiants, l’exfiltration de données et l’auto-réplication, cette campagne met en évidence les risques inhérents aux plateformes décentralisées de gestion des paquets. L’audit proactif, le renouvellement des secrets et une surveillance vigilante restent essentiels pour protéger les environnements de développement contre les risques de la chaîne logistique émergents.

