Campagne Mini Shai-Hulud : TanStack, UiPath, Mistral AI et d'autres packages npm/PyPI compromis
🗓️ Contexte Le 11 mai 2026, Wiz publie une analyse technique détaillant une attaque coordonnée de supply chain menée par le groupe TeamPCP contre les écosystèmes npm et PyPI. Cette campagne, désignée Mini Shai-Hulud, représente une évolution des opérations précédentes du même acteur (SAP, Checkmarx, Bitwarden, Lightning, Intercom, Trivy). 🎯 Packages compromis Les namespaces et packages impactés incluent : @tanstack : dont @tanstack/react-router (~12 millions de téléchargements hebdomadaires) @uipath : outils d’automatisation enterprise (apollo-core, CLI, agent SDKs) @mistralai/mistralai : client TypeScript officiel de Mistral AI guardrails-ai (PyPI) : package Python de guardrails LLM mistralai (PyPI) Plusieurs dizaines d’autres packages npm (voir liste complète) 🔓 Vecteur d’infection TanStack (chaîne de 3 vulnérabilités GitHub Actions) L’attaquant crée un fork renommé du dépôt TanStack/router (zblgg/configuration) pour échapper aux recherches de forks Ouverture d’une pull request déclenchant un workflow pull_request_target qui exécute le code du fork et empoisonne le cache GitHub Actions (pnpm store) Lors de la fusion de PRs légitimes, le workflow de release restaure le cache empoisonné ; des binaires contrôlés par l’attaquant extraient des tokens OIDC directement depuis la mémoire du runner (/proc/<pid>/mem) Publication de versions malveillantes sans vol de credentials npm 🐛 Vecteurs d’infection dans les packages @tanstack : entrée optionalDependencies pointant vers un commit orphelin + fichier obfusqué router_init.js (~2,3 Mo) dans le tarball @uipath : script preinstall (node setup.mjs) téléchargeant le runtime Bun pour exécuter le payload — même mécanisme que le compromis SAP précédent PyPI : 13 lignes de code téléchargeant et exécutant git-tanstack[.]com/tmp/transformers.pyz 💀 Comportement du payload Le payload est un credential stealer auto-propagant (worm) ciblant : ...