🔍 Contexte

PubliĂ© le 29 avril 2026 par Wiz (Benjamin Read, Merav Bar, Shay Berkovich, Gili Tikochinski), cet article documente une opĂ©ration de supply chain active baptisĂ©e “Mini Shai Hulud”, attribuĂ©e avec haute confiance au groupe TeamPCP.

🎯 MĂ©canisme d’attaque

Des versions malveillantes de packages npm lĂ©gitimes de l’Ă©cosystĂšme SAP ont Ă©tĂ© publiĂ©es avec un script preinstall injectant setup.mjs, exĂ©cutĂ© automatiquement lors de npm install. Ce dropper tĂ©lĂ©charge le runtime Bun puis exĂ©cute un payload obfusquĂ© (execution.js), permettant l’exĂ©cution de code attaquant avant la fin de l’installation.

💀 Payload de second stage

Le payload est un stealer de credentials et framework de propagation ciblant :

  • Tokens GitHub (PAT, OAuth, Actions secrets)
  • Credentials npm
  • Secrets cloud (AWS, Azure, GCP)
  • Tokens Kubernetes
  • Mots de passe de navigateurs (Chrome, Safari, Edge, Brave, Chromium) — nouveautĂ© par rapport aux opĂ©rations prĂ©cĂ©dentes

L’exfiltration s’effectue via des dĂ©pĂŽts GitHub publics contrĂŽlĂ©s par l’attaquant, utilisant l’API GraphQL (Ă©volution par rapport Ă  l’API REST utilisĂ©e dans l’opĂ©ration Bitwarden). Les payloads sont chiffrĂ©s avec une clĂ© publique RSA partagĂ©e entre les opĂ©rations TeamPCP.

🔄 Propagation

Si aucun token PAT/OAuth GitHub n’est trouvĂ© mais que GITHUB_REPOSITORY est dĂ©fini, le malware empoisonne le dĂ©pĂŽt GitHub en y dĂ©posant des fichiers ciblant les utilisateurs de Claude Code et VSCode (hooks SessionStart, tĂąches folderOpen).

đŸ›Ąïž Guardrail gĂ©ographique

Le malware vĂ©rifie les paramĂštres de locale et les variables d’environnement : si la langue commence par ‘ru’, le payload s’arrĂȘte sans exfiltrer de donnĂ©es.

📩 Packages affectĂ©s

  • @cap-js/sqlite v2.2.2
  • @cap-js/postgres v2.2.2
  • @cap-js/db-service v2.10.1
  • mbt v1.2.48

🔗 Attribution

Wiz attribue cette campagne Ă  TeamPCP sur la base d’une clĂ© RSA publique partagĂ©e, de routines d’encodage communes, de guardrails de rĂ©gion identiques, et du mĂȘme mĂ©canisme de hook npm — dĂ©jĂ  observĂ©s dans les compromissions Checkmarx et Bitwarden CLI.

📰 Type d’article

Publication de recherche technique avec IoCs, destinée à permettre la détection et la réponse à incident pour les équipes de sécurité exposées à ces packages.

🧠 TTPs et IOCs dĂ©tectĂ©s

Acteurs de menace

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1059.007 — Command and Scripting Interpreter: JavaScript (Execution)
  • T1555.003 — Credentials from Password Stores: Credentials from Web Browsers (Credential Access)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1552.004 — Unsecured Credentials: Private Keys (Credential Access)
  • T1567.001 — Exfiltration Over Web Service: Exfiltration to Code Repository (Exfiltration)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1497.001 — Virtualization/Sandbox Evasion: System Checks (Defense Evasion)
  • T1176 — Browser Extensions (Persistence)
  • T1053 — Scheduled Task/Job (Persistence)

IOC

  • SHA256 : 1d9e4ece8e13c8eaf94cb858470d1bd8f81bb58f62583552303774fa1579edee — VT · MalwareBazaar
  • SHA256 : eb6eb4154b03ec73218727dc643d26f4e14dfda2438112926bb5daf37ae8bcdb — VT · MalwareBazaar
  • SHA256 : 258257560fe2f1c2cc3924eae40718c829085b52ae3436b4e46d2565f6996271 — VT · MalwareBazaar
  • SHA256 : a1da198bb4e883d077a0e13351bf2c3acdea10497152292e873d79d4f7420211 — VT · MalwareBazaar
  • SHA256 : 6f933d00b7d05678eb43c90963a80b8947c4ae6830182f89df31da9f568fea95 — VT · MalwareBazaar
  • SHA256 : 86282ebcd3bebf50f087f2c6b00c62caa667cdcb53558033d85acd39e3d88b41 — VT · MalwareBazaar
  • SHA256 : 80a3d2877813968ef847ae73b5eeeb70b9435254e74d7f07d8cf4057f0a710ac — VT · MalwareBazaar
  • SHA256 : 4066781fa830224c8bbcc3aa005a396657f9c8f9016f9a64ad44a9d7f5f45e34 — VT · MalwareBazaar
  • SHA256 : 14eb4ce01dd4307759887ff819359b70d7d9ff709ecde039a5ab — VT · MalwareBazaar
  • SHA256 : 927387d0cfac1118df4b383decc2ea6ba49c9d2f98b47098bcbc — VT · MalwareBazaar
  • SHA1 : e80824a19f48d778a746571bb15279b5679fd61c — VT · MalwareBazaar
  • SHA1 : ca4a5bb85778ffcd2153ace88fe2d882c8ceeb23 — VT · MalwareBazaar
  • SHA1 : 4b04304f6d51392e3f43856c94ca95800518a694 — VT · MalwareBazaar
  • SHA1 : 7b6a28e92149637e5d7c7f4a2d3e54acd507c929 — VT · MalwareBazaar
  • SHA1 : bc95cc5dda788295aa0c9456791520599ef99526 — VT · MalwareBazaar
  • SHA1 : 0af7415d65753f6aede8c9c0f39be478666b9c12 — VT · MalwareBazaar
  • SHA1 : 6bc859aaee1f8885eec2a3016226e877e5adba08 — VT · MalwareBazaar
  • SHA1 : 307d0fa7407d40e67d14e9d5a4c61ac5b4f20431 — VT · MalwareBazaar
  • SHA1 : ff7ed7a0fa1c43eed01809d076feedbaed464fc7 — VT · MalwareBazaar
  • SHA1 : 7b0278216ac31ec18eca9eb8bc1c1261a1b26f6c — VT · MalwareBazaar
  • MD5 : e32eaf0c3cde9616831a1e92d42b0058 — VT · MalwareBazaar
  • MD5 : b523a69b27064d1715d1f0aaffcfae63 — VT · MalwareBazaar
  • MD5 : d468f16eafccbc54a994f3d675ace8ae — VT · MalwareBazaar
  • MD5 : 8cd683f78735c9bfc32600c73d3d9abe — VT · MalwareBazaar
  • MD5 : 6fb87d243b011b5445f379f80e1a6b4d — VT · MalwareBazaar
  • MD5 : 04d8a99447b16f6839fff3b978f88d7e — VT · MalwareBazaar
  • MD5 : 45dc9c02f82b4370ca92785282d43a86 — VT · MalwareBazaar
  • MD5 : 35baf8316645372eea40b91d48acb067 — VT · MalwareBazaar
  • MD5 : 00ca0c04d247ef09f2b2acc452029345 — VT · MalwareBazaar
  • MD5 : dbb9b09957113463bbeb420c2c4108b5 — VT · MalwareBazaar
  • Fichiers : setup.mjs
  • Fichiers : execution.js
  • Fichiers : settings.json
  • Fichiers : tasks.json
  • Chemins : .claude/execution.js
  • Chemins : .claude/setup.mjs
  • Chemins : .claude/settings.json
  • Chemins : .vscode/setup.mjs
  • Chemins : .vscode/tasks.json

Malware / Outils

  • Mini Shai Hulud (stealer)
  • execution.js (stealer)
  • setup.mjs (loader)

🟱 Indice de vĂ©rification factuelle : 88/100 (haute)

  • ✅ wiz.io — source reconnue (liste interne) (20pts)
  • ✅ 10658 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 39 IOCs dont des hashes (15pts)
  • ✅ 1/3 IOC(s) confirmĂ©(s) (MalwareBazaar, ThreatFox, VirusTotal) (8pts)
  • ✅ 10 TTPs MITRE identifiĂ©es (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ✅ acteur(s) identifiĂ©(s) : TeamPCP (5pts)
  • ⬜ pas de CVE Ă  vĂ©rifier (0pts)

IOCs confirmés externellement :

  • eb6eb4154b03ec73
 (sha256) → VT (4/76 dĂ©tections)

🔗 Source originale : https://www.wiz.io/blog/mini-shai-hulud-supply-chain-sap-npm