Une campagne de logiciels malveillants sophistiquée et auto-réplicatrice a frappé l'écosystème npm, compromettant le populaire package Keyv et se propageant rapidement à au moins 868 packages répartis sur plus de 1 380 versions. Les chercheurs en sécurité estiment que les packages affectés représentent plus de deux milliards d'installations mensuelles. L'attaque a débuté lorsque des cybercriminels ont pris le contrôle du compte GitHub du mainteneur de Keyv (une bibliothèque de stockage clé-valeur largement utilisée, avec environ 127 millions de téléchargements hebdomadaires). Utilisant l'identité compromise, les attaquants ont injecté du code malveillant directement dans la branche principale de plusieurs dépôts gérés par ce même mainteneur, notamment Keyv, cacheable, flat-cache et file-entry-cache. Ils ont ensuite publié de nouvelles versions des packages via des flux de travail GitHub Actions légitimes. Comme les builds provenaient des pipelines officiels, les versions malveillantes comportaient des attestations de provenance valides, les faisant apparaître comme parfaitement légitimes aux yeux des contrôles automatisés de la chaîne d'approvisionnement.
Chaque paquet compromis a reçu deux nouveaux fichiers — setup.mjs et Math_Symbol.js — ainsi qu'une entrée silencieuse « preinstall): « node setup.mjs » dans package.json.
Lorsqu'un développeur ou un système d'intégration continue exécute `npm install` sur une version infectée, le hook de préinstallation s'exécute automatiquement. Il télécharge l'environnement d'exécution JavaScript officiel de Bun et l'utilise pour lancer la charge utile de la seconde étape. Le malware agit ensuite comme suit :
Récupère les identifiants cloud (AWS, GCP, Azure)
Dérobe des secrets d'infrastructure, des jetons HashiCorp Vault, des jetons de compte de service Kubernetes
Collecte les jetons d'authentification npm et GitHub
Cible les fichiers de configuration liés à l'IA et les portefeuilles crypto
Des mécanismes de persistance sont installés dans les répertoires .vscode et .claude afin que la charge utile puisse se réactiver lorsqu'un développeur ou un agent de codage IA ouvre le dépôt.
Une fois les identifiants obtenus, le ver les utilise pour se republier dans d'autres paquets appartenant au responsable compromis ou à des comptes nouvellement volés, permettant ainsi un déplacement latéral rapide à travers le registre. Des chercheurs d'Aikido, Upwind, Wiz, Socket et d'autres ont lié cette campagne à la famille de vers Shai-Hulud (également appelée ChainDrop dans certains rapports).
Ce que les développeurs et les organisations devraient faire immédiatement
Vérifier les fichiers de verrouillage pour les versions malveillantes listées ci-dessus (et toutes celles nouvellement signalées).
Épinglez des versions exactes connues pour fonctionner — évitez les plages de caret (^) ou de tilde (~).
Reconstruisez les fichiers de verrouillage et videz les caches npm locaux.
Pour les prochaines installations, utilisez l'option --ignore-scripts jusqu'à ce que la situation se stabilise.
Faites tourner tous les secrets potentiellement exposés : jetons npm, PAT GitHub, identifiants cloud, jetons Vault, secrets CI et identifiants d’agents d’IA.
Analysez les postes de travail des développeurs et les exécuteurs CI pour détecter la présence de fichiers setup.mjs, Math_Symbol.js ou de fichiers inattendus dans les répertoires .vscode / .claude.
Considérez comme compromise toute machine ayant installé une version malveillante, même si le paquet a depuis été supprimé.
La version malveillante de Keyv 6.0.0 n'est restée en ligne que quelques heures avant d'être retirée, mais la capacité du ver à se propager automatiquement a considérablement étendu la période d'exposition des dépendances transitives. Cet incident souligne une fois de plus la fragilité de la chaîne d'approvisionnement des logiciels libres. Même les paquets à la provenance légitime et téléchargés des millions de fois par semaine peuvent devenir des vecteurs d'infection lorsqu'un seul compte de mainteneur est compromis. Restez vigilants, renforcez la sécurité de vos dépendances et consultez les avis officiels d'Aikido, Socket, Wiz, Upwind et de l'équipe de sécurité npm pour les dernières mises à jour.








