Le 4 août 2026, des attaquants ont compromis le compte GitHub du mainteneur de keyv et injecté un worm voleur de credentials dans tout l'écosystème de packages associé, totalisant 1,2 milliard de téléchargements hebdomadaires exposés.
En bref
- Le 4 août 2026, le compte GitHub du mainteneur de keyv (127 millions de téléchargements/semaine npm) a été compromis, permettant l'injection d'un worm voleur de credentials dans toute la famille de packages associée.
- Packages affectés : keyv, cacheable (29 M/sem.), flat-cache (565 M/sem.), file-entry-cache (557 M/sem.) — total : 1,2 milliard de téléchargements hebdomadaires. CVE associée : CVE-2026-45321.
- Action requise : identifier si un build npm a été exécuté entre le 4 et le 7 août 2026 dans un environnement avec des secrets, effectuer une rotation complète des credentials concernés, et mettre à jour vers les versions saines publiées après le 7 août.
Les faits
Le 4 août 2026, la communauté open source a découvert l'une des attaques de supply chain les plus dévastatrices de l'année. Des attaquants ont compromis le compte GitHub du mainteneur unique derrière keyv, une bibliothèque de stockage clé-valeur pour Node.js affichant environ 127 millions de téléchargements hebdomadaires sur npm. Après prise de contrôle du compte, les attaquants ont directement pushé des fichiers malveillants sur la branche main du dépôt avant de déclencher immédiatement la publication d'une nouvelle version via GitHub Actions. Cette manœuvre a signé la version empoisonnée avec une provenance GitHub Actions techniquement valide — rendant inopérants les mécanismes standard de vérification de provenance.
La particularité de cette attaque réside dans son effet de contagion massif. Le même mainteneur est également responsable de plusieurs autres packages npm à fort volume. Liste des packages directement compromis : cacheable (29 millions de téléchargements/semaine), flat-cache (565 millions de téléchargements/semaine), file-entry-cache (557 millions de téléchargements/semaine), et plusieurs utilities de caching moins connus. Total : plus d'1,2 milliard de téléchargements hebdomadaires exposés via un seul compte GitHub compromis.
La charge malveillante est un worm conçu pour voler des credentials silencieusement. Son mode de fonctionnement : lire les variables d'environnement du processus Node.js en cours d'exécution (fréquemment peuplées de tokens AWS, GCP, Azure, clés API, secrets CI/CD) puis exfiltrer ces données vers une infrastructure C2 externe via une unique requête HTTPS encodée, passant inaperçue dans les logs réseau. La CVE associée, CVE-2026-45321, est documentée par Tenable avec une complexité d'exploitation faible et un impact élevé sur la confidentialité.
L'attaque s'inscrit dans la campagne Shai-Hulud, documentée par GitGuardian et Aikido Security : une opération coordonnée ayant compromis plus de 170 packages npm et PyPI représentant collectivement plus de 518 millions de téléchargements hebdomadaires cumulés. Le vecteur keyv/flat-cache est le plus critique de cette campagne en raison des dépendances transitives : flat-cache et file-entry-cache sont des dépendances d'ESLint, intégré dans Webpack, Create React App, Angular CLI et la majorité des boilerplates JavaScript modernes. Un projet utilisant ESLint intègre donc flat-cache sans nécessairement en avoir conscience.
Le vecteur d'entrée exact pour compromettre le compte GitHub du mainteneur n'est pas encore confirmé publiquement. Les hypothèses avancées par Aikido Security et Unit 42 (Palo Alto Networks) incluent le phishing ciblé, le vol d'un token OAuth GitHub via un environnement de développement compromis, ou l'exploitation d'une session persistante dans un navigateur infecté. Ce qui est certain : l'attaquant a agi dans les minutes suivant la prise de contrôle du compte pour minimiser la fenêtre de détection.
La détection de la compromission a été réalisée par Aikido Security le même jour, grâce à des systèmes de surveillance en temps réel des publications npm détectant les comportements anormaux : appels réseau inattendus, accès aux variables d'environnement en dehors du flux normal d'une bibliothèque de caching. L'alerte a été propagée via GitHub Security, le NHS England Digital (Cyber Alert CC-4781), et les équipes de réponse aux incidents des grands fournisseurs cloud. npm a suspendu les versions empoisonnées dans les heures suivant la détection. Des versions saines ont été republiées à partir du 7 août 2026 après audit communautaire.
La mécanique de la compromission illustre une limite fondamentale des défenses actuelles : la signature de provenance via Sigstore était techniquement valide — l'attaquant avait réellement déclenché le workflow GitHub Actions depuis le compte compromis. La chaîne de confiance cryptographique était intacte à tous les niveaux ; c'était sa source humaine qui était corrompue. Aucun mécanisme technique de vérification de provenance ne peut se substituer à la sécurité du compte du mainteneur humain.
Selon les analyses de Group-IB et Palo Alto Networks publiées courant 2026, six groupes distincts opèrent activement contre npm et PyPI, dont plusieurs acteurs étatiques à motivation financière. Leurs techniques progressent : ciblage des mainteneurs plutôt que des registres, exploitation des dépendances transitives pour maximiser l'impact, utilisation de signatures valides pour contourner les mécanismes de confiance. La campagne Shai-Hulud s'inscrit dans cette tendance d'industrialisation des attaques supply chain.
La fenêtre d'exposition effective — du 4 au 7 août 2026 — est courte mais suffisante. Des millions de pipelines CI/CD exécutent quotidiennement des builds intégrant ESLint et ses dépendances. Toute organisation ayant lancé un npm install ou npm ci sans lockfile strict pendant ces trois jours dans un environnement avec des secrets configurés est susceptible d'avoir exposé ces credentials.
Impact et exposition
L'impact concerne toute organisation dont les pipelines CI/CD ou environnements de développement ont exécuté npm install entre le 4 et le 7 août 2026 avec des secrets présents dans l'environnement. Les plus exposés : runners GitHub Actions avec tokens cloud d'organisation, pipelines Jenkins ou GitLab CI avec credentials d'infrastructure, machines de développement avec fichiers .env contenant des credentials de production. L'investigation forensique recommandée par Tenable et Aikido Security considère tout secret présent dans un environnement de build pendant cette fenêtre comme potentiellement exfiltré.
Recommandations
- Audit des dépendances — Inspecter vos package-lock.json pour identifier si des versions de keyv, flat-cache, cacheable ou file-entry-cache publiées entre le 4 et le 7 août 2026 ont été installées.
- Rotation des secrets — Si un build npm s'est exécuté pendant la fenêtre d'exposition dans un environnement avec des credentials, procéder à la rotation complète : tokens AWS/GCP/Azure, clés API, secrets CI/CD, certificats.
- Mise à jour vers les versions saines — Mettre à jour vers les versions publiées après le 7 août 2026 pour tous les packages affectés.
- Audit des logs CI/CD — Examiner les logs des pipelines exécutés pendant la fenêtre pour détecter des requêtes réseau vers des domaines non reconnus.
- Pinning strict des dépendances — Implémenter des lockfiles versionnés dans git et des processus d'update contrôlés (Dependabot/Renovate avec revue humaine).
Alerte critique
Si votre pipeline CI/CD a exécuté npm install entre le 4 et le 7 août 2026, vos secrets cloud et credentials d'infrastructure doivent être considérés comme compromis. La rotation immédiate des tokens AWS, GCP, Azure et clés API prime sur le patch lui-même : l'attaquant a peut-être déjà exfiltré des credentials actifs pendant ces trois jours d'exposition.
Comment vérifier rapidement si mon projet était exposé pendant la fenêtre du 4-7 août ?
Exécutez npm ls keyv flat-cache file-entry-cache cacheable dans votre dépôt et comparez les versions installées avec votre package-lock.json versionné dans git. Si le lockfile indique une version publiée entre le 4 et le 7 août 2026 pour l'un de ces packages, votre build était potentiellement exposé. Consultez également les logs de vos runners CI/CD pour des connexions sortantes vers des IPs ou domaines inconnus pendant les phases de build — une seule requête HTTPS vers un domaine non référencé dans votre baseline est un signal fort de compromission.
Votre infrastructure est-elle exposée ?
Ayi NEDJIMI réalise des audits de sécurité supply chain pour identifier vos dépendances à risque et sécuriser vos pipelines CI/CD.
Demander un auditÀ 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
Baylor Genetics expose 310 000 dossiers médicaux génétiques
Baylor Genetics notifie 310 000 personnes après une intrusion survenue en juin 2026 ayant exposé résultats génétiques, données médicales et numéros de sécurité sociale.
Truffle Security : 768 clés AWS admin exposées en ligne
Truffle Security révèle que 768 clés AWS corporate avec accès administrateur complet sont toujours actives et exposées publiquement en ligne, dont 526 root keys.
Head Mare infecte les réunions TrueConf avec PhantomCore
La CISA a ajouté au KEV deux failles critiques de TrueConf Server exploitées par Head Mare pour diffuser PhantomCore aux participants des réunions d'entreprise.
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