Le 4 août 2026, vers 9:00 UTC, une intrusion a transformé des paquets npm très utilisés en vecteurs de vol de credentials. L’attaque a touché 444 paquets et 1 381 versions, cumulant plus de 2 milliards d’installations mensuelles.
Compromission initiale du compte GitHub derrière keyv et cacheable
La brèche a commencé par l’accès au compte GitHub du mainteneur principal, qui gère keyv, cacheable et plusieurs utilitaires de cache. L’attaquant a poussé des modifications directement sur la branche main, puis publié des versions piégées.
Les paquets ciblés comprennent notamment keyv (≈127 millions de téléchargements hebdomadaires), flat-cache (≈565 millions/mois) et file-entry-cache (≈557 millions/mois). Ces chiffres expliquent l’ampleur immédiate de l’impact.
La mise à jour malveillante a ajouté deux fichiers, setup.mjs et Math_Symbol.js, plus un script preinstall exécuté lors de npm install. Toute intégration automatique exposait environnements et tokens.
Des témoins du milieu signalent que la propagation a été active dès la première heure, rendant la mitigation initiale complexe pour les équipes de sécurité et les registries.
Le mécanisme du voleur : Bun, preinstall et collecte de tokens
Le code injecté utilisait un dropper setup.mjs fortement obfusqué qui téléchargeait le runtime Bun depuis une release GitHub, puis exécutait le payload principal Math_Symbol.js. L’approche assurait compatibilité et rapidité d’exécution.
Le payload de 728 ko était conçu pour aspirer un large spectre de secrets : fichiers .npmrc, tokens GitHub CLI, identifiants AWS, tokens Vault, configurations Kubernetes et portefeuilles de cryptomonnaies.
Par construction, le code se lançait automatiquement avant l’installation finale, ce qui signifie que CI/CD, postes développeurs et environnements serveurs pouvaient être compromis lors d’un simple npm install.
La nature modulaire du dropper et l’utilisation d’un runtime autonome rendent la détection par règles statiques plus difficile et facilitent la fuite de grandes quantités de données.
Signatures valides : contournement des vérifications cryptographiques
Point particulièrement troublant, les paquets compromis portaient une provenance npm valide, signée par des exécutions GitHub Actions. Les vérifications cryptographiques habituelles ont donc été satisfaites, réduisant les alertes automatisées.
La signature valide implique soit l’usurpation des credentials d’un workflow, soit une compromission d’un token d’action. Dans les deux cas, la confiance de la chaîne d’approvisionnement a été exploitée.
Les équipes d’infrastructure ont constaté que les artefacts signés traversaient les contrôles SLSA et autres vérifications d’intégrité sans erreur, rendant nécessaire une revue manuelle des commits et des workflows affectés.
Cette tactique illustre combien la sécurité des pipelines et des secrets GitHub Actions est devenue centrale pour la protection des ecosystems npm.
Étendue et conséquences : 444 paquets, 1 381 versions, plus de 2 milliards d’installations
Au moins 444 paquets ont été infectés, répartis sur 1 381 versions, pour un total dépassant 2 milliards d’installations mensuelles cumulées. Ces ordres de grandeur expliquent le risque systémique pour la chaîne logicielle.
Les paquets de la famille ont une large diffusion dans des projets open source, applications internes et pipelines CI. Une seule installation dans une CI exposée pouvait entraîner une fuite de tokens valides.
Des mainteneurs et entreprises signalent des incidents secondaires : réutilisation de tokens, accès indésirables à des dépôts privés et actions non autorisées sur des infrastructures cloud.
Les autorités et registries ont pris des mesures d’urgence : retrait des versions compromises, révocation des tokens d’action suspects et notification aux mainteneurs affectés.
| Paquet | Téléchargements | Période |
|---|---|---|
| keyv | 127M | hebdomadaire |
| flat-cache | 565M | mensuel |
| file-entry-cache | 557M | mensuel |
Réponses immédiates et pistes de remédiation pour équipes techniques
Les gestes prioritaires sont la rotation des tokens GitHub Actions, la révocation des clés cloud AWS potentiellement exposées et l’analyse forensique des workflows affectés. Les maintainers doivent auditer les commits et restaurer des versions saines avec signatures régénérées.
Du côté des consommateurs, vérifier l’intégrité des dépendances, utiliser des caches privés signés et limiter les droits des tokens CI sont des mesures concrètes. La segmentation des secrets réduit le blast radius en cas d’exfiltration.
Plusieurs registries envisagent de renforcer la vérification des provenance en combinant signatures et politiques heuristiques sur les changements de dépendances et les modifications de workflows.
Sur le plan légal et réglementaire, les incidents de cette ampleur alimenteront les discussions sur la responsabilité des plateformes et la nécessité d’obligations minimales pour les pipelines automatisés.
