Selon Aikido (blog Aikido.dev), une « seconde frappe » de la campagne Shai‑Hulud a été détectée le 24 novembre 2025, opportunément calée avant la révocation des « classic tokens » npm prévue le 9 décembre, alors que de nombreux éditeurs n’avaient pas encore migré vers Trusted Publishing.
• Nature de l’attaque: ver npm auto‑réplicant visant la chaîne d’approvisionnement. Une fois installé (pendant l’installation des dépendances), il cherche des secrets (API keys, tokens cloud, GitHub/npm) via TruffleHog, exfiltre vers des dépôts GitHub publics et tente de publier de nouveaux paquets npm infectés pour se propager. L’attaquant nomme cette vague « Second Coming » et a exposé environ 26,3k dépôts GitHub contenant des secrets avec la description « Sha1‑Hulud: The Second Coming ».
• Nouveautés par rapport à la première vague: le malware installe Bun via un fichier setup_bun.js, puis exécute le code malveillant bun_environment.js; il crée un dépôt GitHub aléatoire (au lieu d’un nom codé en dur); il tente d’infecter jusqu’à 100 paquets (contre 20 auparavant); s’il n’arrive pas à s’authentifier auprès de GitHub ou npm, il efface tous les fichiers du répertoire Home de l’utilisateur. Des erreurs d’empaquetage (absence ponctuelle de « bun_environment.js ») semblent toutefois avoir limité l’impact.
• Portée et cibles: 492 paquets compromis totalisant 132 M de téléchargements mensuels, dont des projets clés d’AsyncAPI, PostHog, Postman, ENS (Ethereum Name Service) et Zapier (la section d’impact cite également Browserbase). Des dépôts GitHub ont été compromis (ex. une branche d’AsyncAPI CLI ayant déployé « bun_environment.js » malveillant). Des reconnaissances publiques d’incident ont été faites par PostHog et Postman. Chronologie de détection: premiers paquets (go‑template et 36 paquets AsyncAPI) vers le 24/11/2025 03:16:26 UTC; PostHog à 04:11:55; Postman à 05:09:25.
• IOCs 🧭:
- Chaîne de description GitHub: “Sha1‑Hulud: The Second Coming”
- Fichiers: “setup_bun.js”, “bun_environment.js”
- Dépôt/chemin observé: https://github.com/asyncapi/cli/blob/2efa4dff59bc3d3cecdf897ccf178f99b115d63d/bun_environment.js
• TTPs 🔍:
- Propagation via scripts d’installation npm (postinstall) et publication de paquets infectés
- Exfiltration de secrets avec TruffleHog vers dépôts GitHub publics (nom aléatoire + description fixe)
- Escalade latérale en réutilisant des secrets pour compromettre d’autres dépôts/registries
- Environment preparation: installation de Bun puis exécution du payload via bun_environment.js
- Destruction conditionnelle: effacement du $HOME si échec d’auth GitHub/npm
• Mesures recommandées par l’article ✅:
- Auditer les dépendances et versions liées à Zapier/ENS (et plus largement les paquets listés)
- Rotations de tous les secrets GitHub, npm, cloud et CI/CD utilisés durant les installations
- Rechercher sur GitHub des dépôts suspects avec la description « Sha1‑Hulud: The Second Coming »
- Désactiver les scripts postinstall npm en CI lorsque possible
- Pinner les versions et imposer MFA sur GitHub et npm
- Utiliser des outils de blocage de paquets malveillants sur npm (ex. Safe‑Chain)
Article d’« analyse de menace » en cours, visant à documenter la nouvelle vague Shai‑Hulud, détailler l’ampleur, les TTPs, les IOCs, et relayer les actions immédiates proposées.
🧠 TTPs et IOCs détectés
TTP
[‘Propagation via scripts d’installation npm (postinstall) et publication de paquets infectés’, ‘Exfiltration de secrets avec TruffleHog vers dépôts GitHub publics’, ‘Escalade latérale en réutilisant des secrets pour compromettre d’autres dépôts/registries’, ‘Environment preparation: installation de Bun puis exécution du payload via bun_environment.js’, ‘Destruction conditionnelle: effacement du $HOME si échec d’auth GitHub/npm’]
IOC
[“Chaîne de description GitHub: ‘Sha1‑Hulud: The Second Coming’”, “Fichiers: ‘setup_bun.js’, ‘bun_environment.js’”, ‘Dépôt/chemin observé: https://github.com/asyncapi/cli/blob/2efa4dff59bc3d3cecdf897ccf178f99b115d63d/bun_environment.js’]
🔗 Source originale : https://www.aikido.dev/blog/shai-hulud-strikes-again-hitting-zapier-ensdomains