Une alerte de sécurité récente met l'accent sur une compromission persistante et généralisée de la chaîne d'approvisionnement affectant l'écosystème npm, un élément essentiel de la communauté JavaScript utilisé mondialement pour le développement logiciel. Cet incident implique le déploiement d'un ver auto-réplicateur sophistiqué, publiquement identifié comme « Shai-Hulud », qui a compromis plus de 500 paquets npm.
Les premières investigations indiquent qu'une fois que les cybercriminels ont obtenu l'accès au registre npm, ils ont déployé un logiciel malveillant conçu pour s'immiscer dans l'environnement de la victime. Ce logiciel malveillant visait spécifiquement à extraire des identifiants sensibles, notamment des jetons d'accès personnels GitHub (PAT) et des clés API de grands fournisseurs de services cloud tels qu'Amazon Web Services (AWS), Google Cloud Platform (GCP) et Microsoft Azure.
Suite à l'acquisition de ces identifiants, plusieurs opérations critiques ont été menées. Les identifiants collectés ont été exfiltrés vers un terminal contrôlé par les acteurs malveillants. Ils ont ensuite été téléchargés vers un dépôt GitHub public nommé Shai-Hulud via l'API GitHub/user/repos. Cette faille a facilité la propagation rapide du malware au sein de l'écosystème npm en s'authentifiant comme développeurs npm compromis. Ces attaquants ont ainsi pu injecter du code malveillant dans d'autres paquets et publier des versions corrompues dans le registre.
L'Agence de cybersécurité et de sécurité des infrastructures (CISA) a formulé des recommandations immédiates aux organisations utilisant des packages npm afin de détecter et d'atténuer les menaces posées par cette compromission importante. Ces recommandations incluent la réalisation d'analyses complètes des dépendances logicielles au sein de l'écosystème de packages npm et l'identification des packages concernés potentiellement imbriqués dans des arborescences de dépendances à l'aide de fichiers tels que package-lock.json ou yarn.lock.
Il est conseillé aux organisations d'examiner les versions archivées de ces packages dans les dépôts d'artefacts et les outils de gestion des dépendances. Une étape cruciale consiste à ancrer les versions des dépendances des packages npm aux versions fiables, notamment celles produites avant le 16 septembre 2025. De plus, les organisations doivent procéder immédiatement à la rotation de toutes les informations d'identification des développeurs et appliquer l'authentification multifacteur (MFA) résistante au phishing sur tous les comptes développeurs, en se concentrant sur les plateformes critiques telles que GitHub et npm.
La surveillance des comportements réseau inhabituels et le blocage des connexions sortantes vers des domaines suspects, notamment webhook.site, font partie des mesures défensives décrites. De plus, les organisations sont encouragées à analyser les journaux de pare-feu à la recherche de signes de connexions à des domaines suspects.
L'amélioration de la sécurité de GitHub implique la suppression des applications inutiles et la réalisation d'audits des webhooks et des secrets du référentiel, garantissant ainsi la mise en place de mesures de protection proactives telles que l'activation des règles de protection des branches, les alertes d'analyse des secrets GitHub et les mises à jour de sécurité de Dependabot.
Pour obtenir des conseils supplémentaires sur la navigation dans cette attaque de la chaîne d'approvisionnement, plusieurs ressources ont été citées, notamment des discussions de GitHub sur la sécurisation des chaînes d'approvisionnement npm, des analyses d'organisations de sécurité comme StepSecurity et Palo Alto Networks, et des informations d'entreprises de cybersécurité telles que Socket et ReversingLabs.
L’importance de ce compromis au sein de l’écosystème npm souligne la nature en constante évolution et sophistiquée des attaques de la chaîne d’approvisionnement et le besoin critique de pratiques de cybersécurité rigoureuses et de mesures proactives pour protéger les dépendances logicielles et l’infrastructure numérique au sens large.