Attaque de la chaîne d’approvisionnement NPM : La deuxième vague de Sha1-Hulud compromet plus de 25 000 dépôts

Du 21 au 24 novembre 2025, une seconde vague massive de l’attaque sur la chaîne d’approvisionnement Sha1-Hulud a compromis plus de 600 paquets npm appartenant à de grandes organisations, notamment Zapier, ENS Domains, PostHog, AsyncAPI et Postman. L’attaque a touché plus de 25 000 dépôts, avec une moyenne d’environ 1 000 nouveaux dépôts compromis toutes les 30 minutes au plus fort de l’activité. Ces paquets représentent au total 132 millions de téléchargements mensuels, créant une exposition extrêmement large au sein de l’écosystème JavaScript.

Date26-11-2025 17:26:49

Résumé technique

L’attaque représente une évolution significative par rapport à la campagne Shai-Hulud de septembre 2025, introduisant plusieurs nouvelles capacités dangereuses. Les attaquants ont compromis les comptes de mainteneurs pour publier des versions trojanisées qui s’exécutent durant la phase de pré-installation, garantissant leur exécution sur les serveurs de build et contournant les outils d’analyse statique.

La charge utile malveillante utilise une approche en deux étapes :

  • Durant la phase de pré-installation, setup_bun.js installe ou localise le runtime Bun
  • bun_environment.js exécute ensuite la charge utile malveillante principale

Principales capacités malveillantes :

  • Vol automatique d’identifiants utilisant TruffleHog pour scanner les jetons npm, les identifiants cloud et les variables d’environnement
  • Enregistrement automatique de runners GitHub auto-hébergés avec des workflows malveillants pour l’exécution de commandes
  • Exfiltration croisée entre victimes, où les secrets d’une victime sont envoyés vers le dépôt d’une autre
  • Mécanisme d’auto-régénération via recherche GitHub pour récupérer si les dépôts sont supprimés
  • Propagation automatique infectant jusqu’à 100 paquets pour chaque jeton compromis
  • Fonctionnalité de suppression destructrice qui efface l’intégralité du répertoire personnel de l’utilisateur en cas d’échec de l’exfiltration
  • Escalade de privilèges sur Linux via Docker pour obtenir un accès root

Paquets compromis et versions associées : Les paquets suivants (492 au total) ont été confirmés comme compromis lors de cette vague. Les principaux paquets touchés incluent :

Organisation Principaux paquets compromis
AsyncAPI @asyncapi/cli, @asyncapi/generator, @asyncapi/parser
PostHog posthog-node, posthog-js, @posthog/cli
Postman @postman/secret-scanner-wasm, @postman/csv-parse
ENS Domains @ensdomains/ensjs, @ensdomains/ui, @ensdomains/thorin
Zapier @zapier/zapier-sdk, zapier-platform-core, zapier-platform-cli

[La liste complète des 492 paquets]

@asyncapi/diff
@asyncapi/nodejs-ws-template
go-template
(liste complète omise par souci de brièveté)

Recommandations

  1. Confinement immédiat : Scanner tous les projets à la recherche des paquets listés ci-dessus et supprimer immédiatement les versions compromises. Nettoyer les caches npm/yarn/pnpm et réexaminer les fichiers package-lock.

  2. Rotation des identifiants : Considérer que tous les identifiants sont compromis. Effectuer immédiatement une rotation des :

  • Jetons NPM (surtout avant la révocation des jetons “classic” de npm prévue pour le 9 décembre)
  • Identifiants des fournisseurs cloud (AWS, GCP, Azure)
  • Jetons d’accès personnel et jetons OAuth GitHub
  • Tout autre secret stocké dans les environnements de développement
  1. Audit des dépôts : Vérifier tous les dépôts GitHub pour :
  • Dépôts publics inattendus avec des noms aléatoires de 18 caractères
  • Fichiers de workflow suspects dans .github/workflows/
  • Runners auto-hébergés inattendus nommés “SHA1HULUD”
  • Descriptions de dépôts contenant “Sha1-Hulud: The Second Coming”
  1. Renforcement de la chaîne d’approvisionnement :
  • Imposer un épinglage strict des dépendances et l’utilisation de fichiers de verrouillage (lock files)
  • Implémenter l’analyse automatique des dépendances avec notifications
  • Migrer vers la publication sécurisée (trusted publishing) de npm avant l’échéance du 9 décembre
  • Activer la 2FA avec des clés matérielles pour tous les comptes de mainteneurs
  1. Réponse aux incidents : Assumer la compromission de tout système ayant exécuté ces paquets. Mener une analyse forensique complète des systèmes de build et des stations de travail des développeurs potentiellement exposés.

[Callforaction-THREAT-Footer]

Leave a Reply

Your email address will not be published. Required fields are marked *