# CVE-2026-45321 : TanStack npm : 84 versions piégées via un trusted-publisher OIDC

> 84 versions malveillantes publiées sur 42 paquets @tanstack/* en six minutes, via le vol du jeton OIDC trusted-publisher de GitHub Actions. Le payload : un voleur d'identifiants. Premier maillon de la campagne Mini Shai-Hulud.

- Page canonique : https://kreomnisvigie.com/cve/cve-2026-45321-tanstack-npm-supply-chain
- Sévérité : Critique · CVSS 9.6
- CISA KEV (exploitation observée) : oui
- Produits : @tanstack/* (84 versions malveillantes sur 42 paquets)
- Correctif disponible : non · PoC public : non · Exploitée : oui
- Publiée le 31 mai 2026 · Kreomnis
- Mots clés : supply-chain, npm, tanstack, malicious-package, oidc, kev

## Le contexte

Cette CVE est le **premier maillon** de la campagne baptisée *Mini Shai-Hulud*, attribuée au groupe TeamPCP, ajoutée au KEV de la CISA le 27 mai aux côtés de [CVE-2026-48027 (Nx Console)](/cve/cve-2026-48027-nx-console-vscode-supply-chain) et [CVE-2026-8398 (DAEMON Tools Lite)](/cve/cve-2026-8398-daemon-tools-lite-installeur-trojanise). Les trois illustrent trois vecteurs distincts d'attaque sur la supply chain et **se chaînent entre elles**.

Le 11 mai, entre ~19h20 et 19h26 UTC, des attaquants ont publié **84 versions malveillantes** réparties sur **42 paquets** `@tanstack/*` (deux versions piégées par paquet, publiées à quelques minutes d'intervalle).

## La mécanique

Le mode opératoire est instructif (CWE-506, code malveillant embarqué) : les attaquants ont abusé du binding **trusted-publisher OIDC** de GitHub Actions associé au dépôt `TanStack/router`.

Concrètement, une mauvaise configuration de `pull_request_target`, combinée à un empoisonnement de cache et au **vol du jeton OIDC** depuis la mémoire du runner, leur a permis de publier sous l'identité npm légitime de TanStack. Les artefacts portaient donc une **signature de confiance** alors qu'ils provenaient de code contrôlé par l'attaquant. Le payload était un voleur d'identifiants.

## Remédiation

Une simple disparition de la version piégée d'un lockfile **ne suffit pas**. Il faut :

1. une analyse de composition logicielle (SCA) **complète** pour identifier tous les composants embarquant les versions affectées ;
2. purger les caches d'artefacts (npm, CI, miroirs internes) ;
3. reconstruire les builds en aval ;
4. présumer **toute machine ayant résolu ces versions** comme potentiellement compromise (rotation des secrets atteignables).

## Ce qu'il faut retenir

L'identité trusted-publisher npm est un canal de confiance : compromise, elle signe du code malveillant qui passe tous les contrôles de réputation. La détection ne peut pas reposer sur la signature ou la provenance : seule une SCA exhaustive sur la fenêtre du 11 mai, suivie d'une purge de caches et d'une rotation de secrets, ferme réellement l'incident.

- Kreomnis

## Références

- [NVD : CVE-2026-45321](https://nvd.nist.gov/vuln/detail/CVE-2026-45321) (nvd)
- [CISA KEV](https://www.cisa.gov/known-exploited-vulnerabilities-catalog) (cisa)
- [GitHub Advisory Database](https://github.com/advisories) (research)

Source : Kreomnis Vigie, https://kreomnisvigie.com/cve/cve-2026-45321-tanstack-npm-supply-chain. Analyse à usage défensif uniquement.
