L’écosystème TanStack, très utilisé dans les projets JavaScript et React, a été l’une des cibles les plus visibles.
Le 11 mai 2026 entre 19:20 et 19:26 UTC, les attaquants ont publié 84 versions malveillantes réparties sur 42 paquets du namespace @tanstack/* sur npm.
Les analyses de sécurité ont montré que ces versions contenaient un malware conçu pour voler des identifiants dans les environnements de développement et les systèmes CI/CD.
Certains modules TanStack sont téléchargés des millions de fois par semaine dans l’écosystème JavaScript. Cela signifie qu’une version compromise peut rapidement se propager dans les postes de développeurs et les pipelines de build.
Mais l’incident TanStack n’était qu’une partie d’une campagne plus large. Les chercheurs ont identifié au total :
La plupart de ces publications ont eu lieu dans une fenêtre d’environ 48 heures, les 11 et 12 mai 2026.
Dans cette attaque, les identifiants npm des mainteneurs n’ont pas été volés directement. Les attaquants ont plutôt visé l’automatisation de publication.
Selon l’analyse post‑incident de TanStack, l’attaque combinait plusieurs faiblesses dans les workflows GitHub Actions :
pull_request_targetEn enchaînant ces techniques, du code contrôlé par l’attaquant a pu s’exécuter dans le pipeline de publication. Le pipeline légitime a ensuite publié les versions compromises sous l’identité officielle du projet.
Comme les paquets étaient générés par le pipeline officiel, ils pouvaient apparaître authentiques et signés, ce qui les rendait difficiles à distinguer d’une mise à jour normale.
Les paquets malveillants contenaient un code conçu pour fonctionner comme un ver de chaîne d’approvisionnement.
Lors de l’installation de la dépendance, des scripts étaient exécutés — par exemple via les hooks du cycle de vie npm — afin de télécharger un second payload et lancer un voleur d’identifiants.
Une fois actif, le malware tentait notamment de :
Cette stratégie permettait à l’attaque de se déplacer latéralement entre postes de développeurs, systèmes de build et projets open source.
Comme les gestionnaires de paquets exécutent souvent des scripts pendant l’installation, un simple npm install ou pip install d’une version compromise pouvait activer le malware.
Le malware ciblait principalement les secrets stockés dans les environnements de développement et d’infrastructure.
Les analyses montrent qu’il recherchait notamment :
Le malware parcourait de nombreux chemins système sur les postes développeur et les runners CI afin de récupérer ces informations sensibles.
Toute machine ayant installé une version compromise devait être considérée potentiellement exposée, avec rotation immédiate des secrets.
Étant donné que certaines bibliothèques affectées sont largement utilisées dans l’écosystème logiciel, des inquiétudes ont émergé quant à un possible impact sur des services en aval.
OpenAI a déclaré n’avoir trouvé aucune preuve que des données utilisateurs aient été consultées ou compromises à la suite de l’incident lié aux bibliothèques TanStack.
Cette déclaration visait à répondre aux spéculations selon lesquelles des services reposant sur ces dépendances auraient pu exposer des informations clients.
La campagne Mini Shai‑Hulud illustre plusieurs évolutions majeures dans les attaques de supply chain.
1. Le ciblage de l’automatisation plutôt que des comptes
Les attaquants ont contourné la nécessité de voler des identifiants en compromettant directement les pipelines de publication.
2. Des paquets malveillants mais signés
Comme les versions étaient publiées par les pipelines légitimes, elles pouvaient apparaître authentiques et validées.
3. Une propagation multi‑écosystèmes
La campagne a touché simultanément npm et PyPI, ce qui a considérablement élargi son impact potentiel.
4. Une propagation de type ver
Le malware tentait de voler des jetons pour compromettre automatiquement d’autres paquets et infrastructures.
Ces éléments en font l’un des incidents majeurs de sécurité dans l’open source en 2026.
L’incident a renforcé plusieurs recommandations pour sécuriser les chaînes d’approvisionnement logicielles modernes.
Considérer l’installation de dépendances comme de l’exécution de code
Installer une bibliothèque peut déclencher immédiatement des scripts ou du code malveillant.
Faire tourner les identifiants après une exposition potentielle
Toute machine ayant installé un paquet compromis doit régénérer ses secrets.
Durcir les workflows CI/CD
Les experts recommandent d’auditer les configurations GitHub Actions, de limiter les permissions des jetons et d’éviter les modèles risqués comme pull_request_target lorsque possible.
Auditer les versions de dépendances
Les équipes doivent vérifier qu’aucune version compromise publiée durant la fenêtre du 11–12 mai 2026 n’a été installée.
Surveiller les pipelines de build et de publication
Une activité réseau inhabituelle, des publications inattendues ou des installations suspectes peuvent indiquer une compromission.
La chaîne d’approvisionnement logicielle moderne repose sur des dépendances partagées et sur l’automatisation. L’attaque Mini Shai‑Hulud montre que ces mêmes mécanismes peuvent devenir des vecteurs de propagation extrêmement rapides lorsqu’ils sont compromis.
En ciblant les pipelines de build et l’infrastructure des développeurs, les attaquants peuvent distribuer du malware via des canaux de confiance et atteindre des milliers de projets en quelques heures.
C’est pourquoi de nombreuses organisations considèrent désormais les environnements de développement, la gestion des dépendances et les pipelines CI/CD comme des frontières de sécurité critiques, au même titre que les systèmes de production.