🎯 Contexte
Source : Tenable Research Special Operations (RSO), publiée le 21 mai 2026. L’article présente une FAQ détaillée sur la campagne Mini Shai-Hulud, quatrième génération d’un ver auto-propagant opéré par le groupe TeamPCP, actif depuis septembre 2025 dans les écosystèmes npm et PyPI.
🐛 Évolution du ver Shai-Hulud
Quatre générations ont été identifiées :
- Shai-Hulud (septembre 2025) : premier malware auto-réplicant observé dans npm, vol de tokens mainteneur
- SHA1-Hulud (novembre 2025) : fonctionnalité wiper et collecte de credentials améliorée
- SANDWORM_MODE (mars 2026) : ciblage adaptatif avec énumération des pipelines CI/CD
- Mini Shai-Hulud (avril 2026) : variante la plus destructrice, active au moment de la publication
⚙️ Capacités techniques de Mini Shai-Hulud
- Contournement des attestations SLSA Build Level 3 via Sigstore (première mondiale)
- Extraction de tokens OIDC depuis la mémoire du processus GitHub Actions runner
- Hooks de persistance ciblant les agents de codage IA et les IDEs développeurs
- Propagation cross-écosystème (npm et PyPI)
- Triple exfiltration redondante : serveur C2 dédié, réseau Session (décentralisé), dead drops via GitHub API
🔗 Trois chaînes d’attaque
- Vol de token + publication automatisée massive : hook preinstall téléchargeant le runtime Bun pour exécuter un payload obfusqué
- Hijack OIDC avec contournement de provenance (utilisé dans la vague TanStack) : extraction de token OIDC depuis la mémoire du runner, publication via le pipeline légitime avec attestation cryptographique valide
- Injection PyPI : dropper injecté dans le fichier d’initialisation du package, téléchargeant un payload depuis une infrastructure contrôlée par l’attaquant
🏛️ CVE associée
CVE-2026-45321 (CVSSv3 : 9.6, VPR : 9.2) : injection de code malveillant dans 42 packages @tanstack via trois failles chaînées dans la configuration GitHub Actions de TanStack. L’attaquant a créé un fork sous un compte renommé, ouvert une PR déclenchant un workflow pull_request_target, empoisonné le cache GitHub Actions, puis extrait des tokens OIDC pour publier 84 versions malveillantes en moins de six minutes avec des attestations SLSA valides.
🏢 Organisations compromises
- OpenAI (15 mai 2026) : deux appareils employés compromis, exfiltration de certificats de signature de code (macOS, Windows, iOS, Android)
- Mistral AI : système de gestion de codebase compromis, packages SDK contaminés, dépôts vendus sur forum cybercriminel (17 mai 2026)
- Commission Européenne (mars 2026, vague Trivy) : plus de 90 Go de données exfiltrées
- GitHub (19 mai 2026) : ~3 800 dépôts internes breachés via une extension VS Code trojanisée (Nx Console), elle-même compromise via la chaîne TanStack
📦 Ampleur de la campagne
- Plus de 170 packages npm et PyPI compromis
- Plus de 518 millions de téléchargements hebdomadaires cumulés
- Au moins 400 dépôts GitHub créés pour stocker des credentials volés
- Code source open-sourcé le 12 mai 2026 sur GitHub (licence MIT) avec concours à 1 000 $ sur BreachForums
- 4 packages copycats détectés par OX Security : chalk-tempalte, @deadcode09284814/axios-util, axois-utils, color-style-utils
- Ver concurrent PCPJack observé, évincant les infections TeamPCP tout en volant des credentials
🕵️ Attribution
TeamPCP : groupe cybercriminel à motivation financière, apparu fin 2025. Aliases : UNC6780 (Google TIG), DeadCatx3, PCPcat, ShellForce, CipherForce. Partenariat annoncé avec le groupe ransomware Vect.
📰 Nature de l’article
Article de type FAQ technique publiée par l’équipe RSO de Tenable, visant à documenter exhaustivement la campagne Mini Shai-Hulud pour les équipes CTI et sécurité, avec indicateurs de compromission, détail des vagues d’attaque et couverture produit Tenable One.
🧠 TTPs et IOCs détectés
Acteurs de menace
TTP
- T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
- T1554 — Compromise Client Software Binary (Persistence)
- T1528 — Steal Application Access Token (Credential Access)
- T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
- T1552.004 — Unsecured Credentials: Private Keys (Credential Access)
- T1059.007 — Command and Scripting Interpreter: JavaScript (Execution)
- T1053.006 — Scheduled Task/Job: Systemd Timers (Persistence)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
- T1567 — Exfiltration Over Web Service (Exfiltration)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1588.006 — Obtain Capabilities: Vulnerabilities (Resource Development)
- T1176 — Browser Extensions (Persistence)
- T1490 — Inhibit System Recovery (Impact)
IOC
- IPv4 :
83.142.209.194— AbuseIPDB · VT · ThreatFox - Domaines :
getsession.org— VT · URLhaus · ThreatFox - CVEs :
CVE-2026-45321— NVD · CIRCL - Fichiers :
gh-token-monitor - Chemins :
.vscode/tasks.json - Chemins :
~/.claude/settings.json - Chemins :
.aws/credentials - Chemins :
.npmrc - Chemins :
.kube/config - Chemins :
.docker/config.json
Malware / Outils
- Mini Shai-Hulud (other)
- Shai-Hulud (other)
- SHA1-Hulud (other)
- SANDWORM_MODE (other)
- PCPJack (other)
- chalk-tempalte (other)
- axois-utils (other)
- color-style-utils (other)
🟢 Indice de vérification factuelle : 67/100 (haute)
- ⬜ tenable.com — source non référencée (0pts)
- ✅ 20449 chars — texte complet (fulltext extrait) (15pts)
- ✅ 10 IOCs (IPs/domaines/CVEs) (10pts)
- ✅ 2/2 IOCs confirmés (AbuseIPDB, ThreatFox, URLhaus, VirusTotal) (12pts)
- ✅ 13 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ✅ acteur(s) identifié(s) : TeamPCP, UNC6780, Vect (5pts)
- ⬜ 0/1 CVE(s) confirmée(s) (0pts)
IOCs confirmés externellement :
83.142.209.194(ip) → AbuseIPDB (29% confiance, 6 signalements) + VT (21/91 détections) + ThreatFox (Cobalt Strike)getsession.org(domain) → ThreatFox (Unknown malware)
🔗 Source originale : https://www.tenable.com/blog/mini-shai-hulud-frequently-asked-questions