Une nouvelle vague de logiciels malveillants Shai-hulud arme discrètement des paquets npm de confiance afin de dérober des secrets multicloud et de constituer des portes dérobées dans les écosystèmes de développement à grande échelle.
La campagne, baptisée Shai-hulud 2.0, automatise le vol d’identifiants et la compromission de la chaîne logistique d’une manière susceptible de se répercuter bien au-delà d’un seul mainteneur ou projet.
Le logiciel malveillant est « … capable de dérober des identifiants et des secrets sur les principales plateformes cloud et les services de développement, tout en automatisant l’installation de portes dérobées dans les paquets npm maintenus par les victimes », ont déclaré les chercheurs de Trend Micro.
Au cœur de l’attaque
Shai-hulud 2.0 se propage par l’intermédiaire d’un paquet npm malveillant qui abuse du hook de cycle de vie preinstall et déclenche son exécution dès que la victime lance npm install.
L’attaquant modifie le fichier package.json afin que le processus d’installation lance setup_bun.js, un script chargeur chargé de préparer l’environnement.
Ce chargeur vérifie d’abord si l’environnement d’exécution JavaScript Bun est installé et, dans le cas contraire, l’installe discrètement à l’aide du script d’installation officiel bun.sh — ce qui donne à l’opération une apparence légitime.
Après l’installation, il recharge le PATH système et utilise Bun pour exécuter la charge utile principale, bun_environment.js.
Une fois la charge utile exécutée, le logiciel malveillant inspecte son environnement d’exécution pour déterminer avec quelle agressivité il peut opérer.
Dans les pipelines CI/CD, il s’exécute immédiatement afin de maximiser l’accès aux secrets de compilation. Sur les postes de travail des développeurs, en revanche, Shai-hulud 2.0 adopte une approche plus furtive.
Il lance un processus en arrière-plan détaché afin que la commande npm install s’achève normalement, permettant au vol d’identifiants et à la compromission du système de se poursuivre à l’insu de l’utilisateur.
La charge utile lance ensuite une vaste phase de collecte d’identifiants. Elle extrait les jetons npm des fichiers .npmrc et les vérifie via l’API npm whoami.
Elle collecte les identifiants GitHub et les utilise pour créer un nouveau dépôt contrôlé par l’attaquant et enregistrer un runner GitHub Actions auto-hébergé, formant ainsi un canal de commande et de contrôle (C2) furtif.
Le logiciel malveillant récupère également les variables d’environnement et les fichiers de configuration cloud afin de dérober les identifiants AWS, GCP et Azure, puis les utilise pour interroger AWS Secrets Manager, GCP Secret Manager et Azure Key Vault à la recherche de tous les secrets disponibles.
Pour approfondir la compromission, il télécharge et exécute automatiquement TruffleHog afin d’analyser le système de fichiers de la victime à la recherche de secrets codés en dur, tels que des clés d’API, des jetons et des chaînes de configuration sensibles.
Si Shai-hulud 2.0 ne parvient pas à obtenir de jetons npm ou GitHub valides — ce qui signifie que l’attaquant ne peut pas se propager ni exfiltrer efficacement les données — il adopte un comportement destructeur.
Dans ces cas, le logiciel malveillant tente d’effacer entièrement le répertoire personnel de la victime, transformant une compromission infructueuse en incident de destruction de données.
Comment Shai-hulud 2.0 installe des portes dérobées dans les paquets npm à grande échelle
L’une des capacités les plus dangereuses de Shai-hulud 2.0 est son système entièrement automatisé d’installation de portes dérobées dans les paquets npm, qui permet une propagation rapide, semblable à celle d’un ver, dans toute la chaîne logistique logicielle.
Le logiciel malveillant commence par répertorier tous les paquets npm gérés par le compte développeur compromis, en interrogeant le registre npm et en donnant la priorité à ceux qui enregistrent les plus gros volumes de téléchargements afin de maximiser l’impact en aval.
Après avoir identifié ses cibles, il télécharge l’archive tar de chaque paquet, en extrait le contenu et y injecte un script preinstall malveillant conçu pour déclencher la même chaîne d’infection setup_bun.js et bun_environment.js utilisée lors de la compromission initiale.
Ainsi, tout développeur qui installe le paquet mis à jour exécutera le logiciel malveillant à son insu avant même que le code légitime du paquet ne soit lancé.
Une fois les modifications terminées, Shai-hulud 2.0 reconditionne le module altéré et le republie dans le registre npm à l’aide du propre jeton d’authentification de la victime, ce qui donne à la mise à jour une apparence légitime et digne de confiance.
Pour éviter d’éveiller les soupçons, le logiciel malveillant augmente le numéro de version d’un seul niveau de correctif, imitant une correction de bug ou une mise à jour de maintenance courante.
Cela crée un mécanisme de diffusion fluide : les utilisateurs en aval ou les pipelines CI récupèrent automatiquement la nouvelle version, déclenchant l’infection en silence.
Comme chaque mainteneur nouvellement infecté peut voir ses propres paquets automatiquement modifiés et republiés, le logiciel malveillant acquiert un caractère propagatif.
Chaque compte compromis devient un nouveau nœud de propagation, permettant à Shai-hulud 2.0 de se répandre de manière exponentielle dans l’écosystème npm et d’atteindre potentiellement des milliers de développeurs, d’applications et d’organisations par l’intermédiaire de mises à jour de paquets de confiance.
Comment se défendre contre les attaques de la chaîne logistique de type Shai-hulud
Shai-hulud 2.0 montre comment la compromission d’un seul compte de mainteneur peut déclencher l’installation généralisée de portes dérobées dans les paquets, le vol de secrets cloud et l’infiltration des environnements CI/CD.
Les mesures suivantes contribuent à réduire l’exposition et à renforcer la résilience face à ce type de campagne.
- Imposer une MFA résistante au phishing, des clés matérielles et un accès à privilèges minimaux pour toutes les identités npm, GitHub et cloud.
- Surveiller les workflows GitHub Actions non autorisés, les runners auto-hébergés, la création inhabituelle de dépôts et les portées trop larges des jetons de workflow.
- Restreindre et renouveler fréquemment les jetons d’accès, les secrets et les identifiants cloud tout en réduisant au minimum les données sensibles stockées dans les variables d’environnement ou les fichiers de configuration.
- Auditer npm pour détecter les changements soudains des hooks de cycle de vie, les installateurs ajoutés ou les scripts preinstall malveillants, et tenir à jour une liste d’autorisation interne pour les paquets critiques.
- Surveiller les gestionnaires de secrets cloud afin de détecter les énumérations anormales, les requêtes interrégionales ou l’accès massif à des secrets susceptibles d’indiquer une compromission.
- Renforcer les environnements des développeurs et les environnements CI/CD avec EDR, une surveillance de l’exécution des scripts et un contrôle strict des modifications de package.json ou des workflows.
- Segmenter les rôles des développeurs, de la CI/CD et du cloud afin de limiter les déplacements latéraux et de réduire l’ampleur de l’impact en cas de compromission d’un mainteneur ou d’un compte machine.
Comme le montre Shai-hulud 2.0, les attaquants ciblent de plus en plus le tissu conjonctif du développement moderne — identités, automatisation et écosystèmes de paquets — plutôt que des vulnérabilités individuelles.
La menace grandissante qui pèse sur les pipelines logiciels modernes
Shai-hulud 2.0 rappelle avec force que les acteurs modernes de la menace ne ciblent plus seulement les terminaux : ils s’attaquent au cœur de la conception et du déploiement des logiciels — les identités des développeurs, les pipelines d’automatisation et les coffres de secrets cloud.
La leçon est claire : la sécurité de la chaîne logistique ne consiste pas simplement à analyser les dépendances ; elle exige de comprendre que n’importe quel mainteneur ou paquet de confiance peut devenir du jour au lendemain un canal de distribution contrôlé par un attaquant.
À mesure que les campagnes comme Shai-hulud gagnent en automatisation et en agressivité, les organisations qui ne sécurisent pas les identités des développeurs et ne renforcent pas l’infrastructure CI/CD risquent de voir une simple installation npm devenir le point d’entrée d’une compromission complète du cloud.
C’est pourquoi le zero trust, qui met l’accent sur une validation stricte plutôt que sur une confiance implicite, est devenu de plus en plus essentiel à la défense de la chaîne logistique logicielle.





