Le 4 août 2026, un pirate a pris le contrôle du compte GitHub du responsable de keyv, une bibliothèque de mise en cache clé-valeur enregistrant environ plusieurs centaines de millions de téléchargements hebdomadaires sur npm, et a injecté un ver destiné à voler des identifiants dans l'ensemble de la famille de paquets gérée par ce responsable, notamment cacheable, flat-cache, file-entry-cache et cache-manager. Baptisé « ChainDrop », ce ver s'est propagé à des centaines d'autres paquets totalisant plus de deux milliards d'installations mensuelles.
Ce qui rend cette attaque dangereuse, ce n’est pas le nombre de téléchargements, mais la manière dont le code malveillant a réussi à gagner la confiance des utilisateurs. L’attaquant a publié les versions via le pipeline de publication automatisé du projet lui-même ; les versions corrompues disposaient donc d’une provenance valide : une preuve signée attestant qu’un paquet avait été compilé par le pipeline officiel à partir de la source authentique. Cette preuve est censée constituer un gage de sécurité. Dans ce cas précis, elle était authentique, car c’est le pipeline lui-même qui avait été compromis. Pour un développeur, ou pour un outil de sécurité vérifiant la signature, la version malveillante semblait tout à fait authentique.
ChainDrop constitue la dernière vague d'une campagne que les chercheurs suivent depuis septembre 2025 : Shai-Hulud 1.0 (septembre 2025), 2.0 (novembre 2025) et Mini Shai-Hulud, quatrième vague (mai 2026). Chacune de ces vagues a connu une escalade, les variantes ultérieures se caractérisant par une propagation plus agressive et des exploits touchant une partie plus large de la chaîne d'approvisionnement.
Ce que nous savons à ce jour (6 août 2026)
- Date : « keyv@6.0.0 » est la date de début confirmée, publiée le 4 août 2026.
- Point d'entrée: l'attaque a commencé par le piratage du compte GitHub d'un responsable de maintenance, et la version malveillante a été diffusée via le pipeline de publication officiel du projet.
- Ampleur : les chiffres varient selon les sources, mais tous les rapports s'accordent à dire qu'il s'agissait d'un incident de très grande ampleur affectant la chaîne d'approvisionnement de npm. StepSecurity avait initialement fait état de 435 paquets et 1 557 versions, tandis que les rapports d'Aikido et d'autres sources ultérieures ont revu ce total à la hausse, certaines estimations faisant état de plus de 1 300 paquets et d'environ 2 milliards de téléchargements mensuels.
- Charge utile : il existe un chemin de préinstallation via le fichier setup.mjs, qui télécharge Bun et lance une charge utile volumineuse et obfusquée destinée à voler des identifiants.
- Origine : les chercheurs le classent dans la famille de logiciels malveillants Shai-Hulud.
Un système fiable utilisé contre lui-même
Ce qui rend ChainDrop particulièrement inquiétant, c'est qu'il ne s'est pas appuyé sur une faille spectaculaire ni sur un faux site de téléchargement. Il a au contraire tiré parti de la chaîne logistique logicielle habituelle, c'est-à-dire du même processus de publication et d'installation de paquets que celui utilisé par des millions de développeurs.
Concrètement, cela signifie qu’un paquet peut paraître légitime tout en contenant discrètement un code malveillant qui s’active lors de l’installation. Selon les équipes de sécurité, ce logiciel malveillant a été conçu pour voler des informations confidentielles sur les machines des développeurs et dans les systèmes CI/CD, notamment des jetons GitHub, des identifiants npm, des clés AWS, des secrets Kubernetes et d’autres données d’accès.
Le risque global ne se limite pas aux développeurs. Toute organisation utilisant les paquets concernés peut être indirectement affectée par cette faille via ses systèmes de compilation, ses dépendances et ses pipelines de publication automatisés.
ChainDrop nous rappelle que les dépendances open source constituent un risque pour l'entreprise, et ne concernent pas uniquement les développeurs.
Un risque pour l'entreprise, pas seulement pour les développeurs
Pour toute organisation qui s'appuie sur JavaScript et Node.js, ChainDrop nous rappelle que les dépendances open source constituent un risque pour l'entreprise, et ne sont pas seulement une préoccupation pour les développeurs.
Un paquet compromis peut être introduit indirectement par le biais des dépendances et des systèmes de compilation, et peut entraîner le vol d’identifiants, un accès non autorisé à l’infrastructure cloud, ainsi que des opérations de rotation des secrets et de gestion des incidents à grande échelle. Lorsque l’intégrité des logiciels, le contrôle d’accès et les risques liés aux tiers relèvent de votre environnement de contrôle, comme c’est le cas dans le cadre des normes PCI DSS, DORA, NIS2 et CMMC, cette exposition a également des répercussions directes sur la conformité et la gouvernance.
Mesures immédiates recommandées
Si vous avez installé un paquet concerné à partir du 4 août 2026 :
- Analysez vos dépendances : générez une SBOM et comparez vos dépendances aux versions connues pour être malveillantes
- Image avant la révocation : image des systèmes concernés avant la rotation des jetons. Le logiciel malveillant surveille la révocation des identifiants et peut déclencher une routine de gestion si vous procédez d'abord à la rotation.
- Rouler les identifiants sensibles : effectuer la rotation de tous les identifiants accessibles (jetons npm, PAT GitHub, clés SSH, identifiants de cloud) et imposer l'authentification à deux facteurs (MFA)
- Vérifier la version exacte, et non le nom : rechercher la version exacte (après résolution), et non le nom du paquet ; les balises du registre ont été modifiées pendant l'incident
- Supprimez les hooks au niveau du dépôt : vérifiez les fichiers .claude/settings.json et .vscode/tasks.json, et pas seulement node_modules
- Audit CI/CD : effectuez un audit de CI/CD et de GitHub Actions afin de détecter d'éventuelles publications inattendues ou de nouveaux workflows
Identifier vos vulnérabilités grâce à une SBOM
La difficulté réside dans la détection : les versions corrompues se nichent au plus profond des arborescences de dépendances et semblent authentiques. Lorsque nous avons analysé les paquets concernés à l'aide de SBOM dans MetaDefender ™ Software Supply Chain, les versions compromises ont été signalées, au lieu d'être considérées comme fiables en raison de leur provenance.



La leçon à en tirer est que la meilleure défense contre ce type d'attaque consiste à vérifier le contenu d'un composant, plutôt que de se fier à sa provenance.
Principaux enseignements
- La provenance atteste de l'origine, mais pas de l'intégrité. Une signature valide sur un pipeline compromis produit tout de même un paquet malveillant signé. Vérifiez le contenu, et pas seulement les attestations.
- L'installation n'est plus le seul déclencheur. Les hooks de l'IDE et de l'agent au niveau du référentiel peuvent s'exécuter à l'ouverture. Étendez votre vérification au-delà de la commande « npm install ».
- Cette campagne est toujours en cours. ChainDrop s'inscrit dans la dernière vague d'une série d'attaques qui ne cesse de s'intensifier depuis septembre 2025. Considérer chaque incident isolé comme résolu, sans s'attaquer aux failles sous-jacentes du pipeline et à la gestion des identifiants, revient à laisser la porte ouverte à la prochaine attaque.
Protégez votre chaîne d'approvisionnement grâce à MetaDefender Software Supply Chain
