Le 4 août 2026, un ver npm a compromis 444 paquets JavaScript en exploitant le compte GitHub du mainteneur de keyv, exfiltrant tokens et clés privées depuis les pipelines CI/CD du monde entier.
En bref
- Un ver npm a compromis 444 paquets de l'écosystème keyv/cacheable le 4 août 2026, publiant 2 234 versions malveillantes en moins de 24 heures.
- Les paquets touchés représentent plus de 1,2 milliard de téléchargements mensuels ; tokens GitHub, clés AWS, connexions de bases de données et clés privées SSH étaient la cible.
- Des hooks VS Code et Claude Code ont été déposés dans les dépôts source pour exécuter la charge utile sans même lancer
npm install.
Comment un seul compte GitHub a intoxiqué un milliard de dépendances JavaScript
Le 4 août 2026, les équipes de SafeDep, Aikido Security, Snyk, Wiz et Datadog Security Labs ont déclenché leurs alertes dans un intervalle de quelques heures : un ver de type supply chain venait de s'introduire au cœur de l'un des sous-systèmes de cache les plus utilisés de l'écosystème Node.js. En moins de vingt-quatre heures, 2 234 versions malveillantes étaient publiées sur le registre npm, couvrant 444 noms de paquets distincts selon les mesures les plus larges. La cause initiale : la compromission du compte GitHub du mainteneur principal derrière la bibliothèque keyv, un moteur de stockage clé-valeur universel affiché à 127 millions de téléchargements hebdomadaires selon les statistiques npm au moment de l'incident.
Le même développeur étant responsable de l'ensemble de l'écosystème gravitant autour de keyv — notamment cacheable (29 millions de téléchargements/mois), flat-cache (565 millions/mois) et file-entry-cache (557 millions/mois) — l'attaquant a pu, depuis un seul point d'entrée, propager le ver à l'ensemble des dépôts connexes contrôlés par ce compte. Le mécanisme est simple mais redoutable : une fois en possession des accès GitHub, l'intrus pousse directement des fichiers malveillants sur la branche principale, déclenche immédiatement une nouvelle release, et le workflow GitHub Actions signe automatiquement la version empoisonnée avec une provenance valide. Le registre npm reçoit alors un paquet techniquement légitime aux yeux de tous les outils de vérification de provenance standard, y compris ceux conformes au cadre SLSA.
Sur le plan technique, le ver s'appuie sur un script preinstall injecté dans le manifeste package.json. Ce script est exécuté par le gestionnaire de paquets avant l'installation du code du projet lui-même, lors de tout npm install ou npm ci. La charge utile cible un spectre large de secrets présents dans l'environnement de build ou sur le poste du développeur : tokens GitHub et GitLab, credentials AWS et GCP, tokens de registres privés npm, PyPI et Maven, chaînes de connexion à des bases de données PostgreSQL, MySQL et MongoDB, ainsi que clés privées SSH et PGP stockées dans les répertoires standard. Toutes ces données sont exfiltrées vers un serveur de commande et contrôle externe avant que l'installation ne reprenne normalement, rendant la compromission quasi invisible lors de l'exécution du pipeline de build.
La caractéristique la plus préoccupante de cette attaque réside dans ses mécanismes de persistance secondaire. En parallèle des scripts preinstall, l'attaquant a committé des fichiers de hooks pour VS Code et Claude Code directement dans les dépôts source compromis. Ces fichiers sont lus par les IDE au moment de l'ouverture du projet, sans qu'aucun npm install ne soit nécessaire. Un développeur qui clone le dépôt affecté et ouvre simplement son éditeur active la charge utile avec ses propres privilèges système. Ce vecteur secondaire transforme une attaque classique de supply chain en un risque persistant qui touche les workstations de développement elles-mêmes, bien au-delà des serveurs CI/CD.
Les chiffres définitifs varient selon les firmes d'analyse. SafeDep, dont les données sont les plus citées par la communauté, confirme 353 versions empoisonnées dans 79 noms de paquets sur npm au moment de son rapport initial du 4 août 2026. Aikido Security rapporte une empreinte plus large : au moins 868 paquets distincts touchés, couvrant 1 381 versions au total. Wiz estime que les seuls paquets du namespace keyv au sens strict sont présents dans plusieurs dizaines de millions de projets Node.js actifs à différentes profondeurs de leur arbre de dépendances, ce qui rend l'impact potentiel considérable même si tous les projets n'ont pas effectué une installation des versions malveillantes dans la fenêtre de compromission.
La réaction de la communauté a été rapide. npm a commencé à dépublier les versions malveillantes en soirée du 4 août, quelques heures après les premières alertes coordonnées des firmes de sécurité. Le mainteneur légitime a repris le contrôle de son compte GitHub, régénéré l'ensemble de ses tokens d'accès et publié des versions saines portant la mention patched dans le changelog avant minuit. GitHub a de son côté activé des mesures de protection supplémentaires sur le compte compromis et notifié les projets ayant forké les dépôts touchés.
Les chercheurs de Snyk recommandent de considérer comme potentiellement compromise toute machine ayant effectué un npm install d'une version affectée entre le 4 et le 5 août 2026. La priorité absolue est la rotation de l'ensemble des secrets d'environnement présents sur ces machines et dans les pipelines CI/CD correspondants : tokens GitHub, clés cloud, mots de passe de bases de données, tokens d'API. Selon Wiz, il faut également auditer les fichiers de configuration d'IDE dans tous les projets clonés depuis ces dépôts durant la période de compromission, notamment les répertoires .vscode/ et .claude/.
L'incident rappelle de façon troublante l'attaque sur xz-utils de 2024, qui avait failli introduire une backdoor dans OpenSSH via un mainteneur manipulé sur plusieurs mois. Ici, la technique est différente — compromission directe de compte plutôt qu'ingénierie sociale longue durée — mais la surface d'impact est bien plus large en raison de la concentration extrême du graphe de dépendances JavaScript autour d'un nombre très restreint de mainteneurs individuels. La nature de ver, qui s'est propagé automatiquement à l'ensemble des espaces de noms contrôlés par le même compte, constitue également une évolution notable par rapport aux attaques de supply chain npm précédentes, qui ciblaient généralement un ou deux paquets isolés.
Pourquoi cet incident redéfinit la surface d'attaque des pipelines CI/CD modernes
L'attaque keyv s'inscrit dans une tendance structurelle qui préoccupe depuis plusieurs années les équipes de sécurité DevSecOps : la concentration des écosystèmes open source autour d'un nombre restreint de mainteneurs individuels crée des points de défaillance unique à l'échelle de l'industrie. Selon les données de l'OpenSSF, une part significative des paquets npm les plus téléchargés est maintenue par une seule personne, souvent bénévolement. La compromission d'un seul compte utilisateur devient ainsi une arme de destruction massive silencieuse, capable d'atteindre simultanément des milliers d'équipes de développement dans le monde entier sans aucune interaction de leur part.
La CISA et l'ANSSI ont toutes deux insisté, dans leurs guides 2025 sur la sécurité de la chaîne d'approvisionnement logicielle, sur la nécessité pour les organisations de mettre en place des politiques de verrouillage des dépendances par hash dans les lockfiles, d'audit automatisé des scripts preinstall, et de scan continu des artefacts de build. Cet incident démontre que ces mesures, si elles avaient été généralisées, auraient limité mécaniquement la propagation : un pipeline dont le package-lock.json est engagé et vérifié en intégrité cryptographique ne télécharge pas automatiquement une version supérieure empoisonnée publiée après la dernière validation.
Le vecteur IDE est particulièrement problématique pour les environnements d'entreprise. Les politiques de sécurité des endpoints se concentrent traditionnellement sur les navigateurs et les clients de messagerie comme principales surfaces d'entrée. Les hooks d'IDE, exécutés avec les privilèges complets de l'utilisateur connecté, représentent un angle mort dans la plupart des architectures EDR actuelles. Cette attaque devrait conduire les équipes de sécurité à revoir leurs politiques de configuration des environnements de développement, à activer les restrictions d'exécution de code dans VS Code via le paramètre workspace.trust, et à auditer les fichiers de configuration des outils d'assistance IA intégrés aux IDEs.
Sur le plan réglementaire, le règlement européen CRA (Cyber Resilience Act), dont les exigences principales entrent progressivement en vigueur en 2026-2027, impose aux fabricants de produits numériques de documenter et surveiller leur chaîne de dépendances logicielles. Les entreprises qui distribuent des logiciels s'appuyant sur keyv ou ses dérivés et qui n'ont pas de processus d'inventaire SBOM (Software Bill of Materials) opérationnel seront en difficulté pour démontrer leur conformité et leur réactivité en cas d'audit post-incident.
Ce qu'il faut retenir
- Toute machine ayant exécuté
npm installavec une version affectée de keyv, cacheable, flat-cache ou file-entry-cache entre le 4 et le 5 août 2026 doit être considérée compromise — rotation immédiate de tous les secrets d'environnement. - Les hooks IDE déposés dans les dépôts permettent l'exécution de la charge utile sans npm install ; auditer les répertoires
.vscode/et.claude/dans tous les projets clonés depuis ces dépôts durant la période de compromission. - Mettre en place un pinning de dépendances par hash dans tous les pipelines CI/CD et activer l'audit automatisé des scripts preinstall via des outils tels que Socket.dev, Snyk ou Wiz.
Comment savoir si mon projet a été touché par le ver npm Keyv ?
Vérifiez votre package-lock.json ou yarn.lock pour identifier si des versions publiées entre le 4 et le 5 août 2026 de keyv, cacheable, flat-cache, file-entry-cache ou d'autres paquets du même namespace sont présentes. Utilisez les outils Socket.dev, SafeDep ou Snyk pour scanner l'arbre de dépendances complet. En cas de match, considérez le poste de build et toutes ses credentials comme compromis et procédez à une rotation intégrale immédiate.
Besoin d'un accompagnement expert ?
Ayi NEDJIMI vous accompagne sur vos projets cybersécurité et IA.
Prendre contactÀ propos de l'auteur
Ayi NEDJIMI
Auditeur Senior Cybersécurité & Consultant IA
Expert Judiciaire — Cour d'Appel de Paris
Habilitation Confidentiel Défense
[email protected]
Ayi NEDJIMI est un vétéran de la cybersécurité avec plus de 25 ans d'expérience sur des missions critiques. Ancien développeur Microsoft à Redmond sur le module GINA (Windows NT4) et co-auteur de la version française du guide de sécurité Windows NT4 pour la NSA.
À la tête d'Ayi NEDJIMI Consultants, il réalise des audits Lead Auditor ISO 42001 et ISO 27001, des pentests d'infrastructures critiques, du forensics et des missions de conformité NIS2 / AI Act.
Conférencier international (Europe & US), il a formé plus de 10 000 professionnels.
Domaines d'expertise
Ressources & Outils de l'auteur
Articles connexes
INC Ransomware : 885 victimes via SonicWall SMA 1000 zero-days
Le groupe INC Ransomware accélère ses attaques en août 2026 en chaînant deux zero-days CVSS 10 sur les appliances SonicWall SMA 1000, comptabilisant 885 victimes dans le monde entier sur son site de fuite.
GPT-5.6 Luna : OpenAI ouvre l'IA illimitée au grand public
Depuis le 6 août 2026, OpenAI déploie GPT-5.6 Luna comme modèle par défaut pour tous les utilisateurs gratuits de ChatGPT, avec des conversations texte illimitées et une fiabilité factuelle améliorée de 62 %.
CVE-2026-65400 : faille Screen Sharing corrigée dans macOS
Apple a publié macOS Tahoe 26.6.1, Sequoia 15.7.9 et Sonoma 14.8.9 le 7 août 2026 pour corriger CVE-2026-65400, une faille d'authentification Screen Sharing exploitable à distance sur le réseau sans credentials.
Un projet cybersécurité ? Parlons-en.
Pentest, conformité NIS 2, ISO 27001, audit IA, RSSI externalisé… nos experts répondent sous 24h pour évaluer votre besoin et vous proposer un accompagnement sur mesure.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Laisser un commentaire