🎯 Contexte
Le 1er juin 2026, l’équipe de recherche de Socket a publié une analyse technique détaillée d’une campagne de compromission de la chaîne d’approvisionnement logicielle ciblant le namespace npm officiel @redhat-cloud-services. L’article est classé comme une publication de recherche avec analyse technique approfondie.
🦠 Nature de l’attaque
La campagne, qualifiée de « mini Shai-Hulud », reprend les tactiques fondamentales du framework d’attaque Shai-Hulud rendu open source par le groupe TeamPCP (promu via un concours BreachForums). L’attribution reste incertaine en raison de la disponibilité publique des outils. Au total, 95 versions de packages ont été publiées le 1er juin 2026 entre 10h54 et 14h25 UTC, détectées par Socket entre 11h00 et 15h21 UTC.
⚙️ Mécanisme technique
Le payload s’exécute via un hook preinstall dans package.json ("preinstall": "node index.js"), avant même que le développeur n’importe le package. La chaîne d’exécution comprend :
- Obfuscation stage 1 : tableau de char-codes avec transformation Caesar/ROT +
eval - Déchiffrement AES-128-GCM de deux blobs embarqués : un helper Bun (
_b) et le payload principal (_p) - Écriture en
/tmp/p<random>.jset exécution via Bun (téléchargé silencieusement depuis GitHub si absent) - Suppression du fichier temporaire après exécution
- Daemonisation sur les postes développeurs (via
child_process.spawndétaché, variable__IS_DAEMON) - Évitement des systèmes russes : vérification de la locale
ruviaIntl.DateTimeFormatet variables d’environnement
🔍 Capacités de collecte
Le payload cible de manière exhaustive :
- Tokens GitHub CLI (
gh auth token), GitHub Actions (GITHUB_TOKEN,ACTIONS_RUNTIME_TOKEN) - Tokens npm, credentials AWS/Azure/GCP/Vault/Kubernetes
- Clés SSH, credentials Git, fichiers
.npmrc,.netrc,.pypirc - Mémoire des runners GitHub Actions (mode « aggressive »)
- Fichiers de wallets crypto (
~/.bitcoin/wallet.dat,~/.ethereum/keystore/*) - L’intégralité des variables d’environnement du processus
📡 Exfiltration
- Canal principal : POST HTTPS chiffré (AES-256-GCM + RSA-OAEP) vers
https://api.anthropic.com:443/v1/api - Canal de repli : commits GitHub API de fichiers JSON chiffrés (
results-<timestamp>-<counter>.json) avec message de commit contenant la chaîne uniqueIfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner
🔗 Propagation potentielle
Le payload inclut une logique de modification de workflows GitHub Actions (.github/workflows/codeql.yml, .github/setup.js, .claude/settings.json) et peut injecter des payloads malveillants dans des dépôts via les tokens volés, permettant une propagation downstream de la supply chain.
📋 Type d’article
Publication de recherche technique par Socket Research Team, visant à documenter la campagne, fournir des IoCs exploitables et des recommandations de remédiation pour les équipes de sécurité.
🧠 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)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1027.010 — Obfuscated Files or Information: Command Obfuscation (Defense Evasion)
- T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
- T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
- T1552.004 — Unsecured Credentials: Private Keys (Credential Access)
- T1552.007 — Unsecured Credentials: Container API (Credential Access)
- T1528 — Steal Application Access Token (Credential Access)
- T1082 — System Information Discovery (Discovery)
- T1083 — File and Directory Discovery (Discovery)
- T1005 — Data from Local System (Collection)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
- T1567.001 — Exfiltration Over Web Service: Exfiltration to Code Repository (Exfiltration)
- T1036 — Masquerading (Defense Evasion)
- T1497.001 — Virtualization/Sandbox Evasion: System Checks (Defense Evasion)
- T1543 — Create or Modify System Process (Persistence)
- T1608.003 — Stage Capabilities: Install Digital Certificate (Resource Development)
IOC
- Domaines :
api.anthropic.com— VT · URLhaus · ThreatFox - URLs :
https://api.anthropic.com:443/v1/api— URLhaus - SHA256 :
88896d478986d453f5da79b311de39d9b4b1bea95c21af1d8ef181b0f4e52fe9— VT · MalwareBazaar - SHA256 :
21b6409a7b84446310daca5409ad6112ac60a1e4bef97736e53fff5f63bfdef4— VT · MalwareBazaar - SHA256 :
ee262510cb246d2b904991aee7fc61162bdae34463439ec6383bd5356479d362— VT · MalwareBazaar - SHA256 :
ac2a2208e1726e008be6c73dc0872d9bba163319259dff1b62055ac933ca46b6— VT · MalwareBazaar - SHA256 :
0dc06ecdaa63fe24859cfd955053c23245c536e4733480239d14bebf12688e35— VT · MalwareBazaar - Fichiers :
index.js - Fichiers :
tmp.0987654321.lock - Fichiers :
b.zip - Chemins :
/tmp/p*.js - Chemins :
/tmp/b-*/b.zip - Chemins :
/tmp/b-*/bun - Chemins :
/tmp/b-*/bun.exe
Malware / Outils
- Shai-Hulud (framework)
- Bun runtime loader (loader)
🟢 Indice de vérification factuelle : 80/100 (haute)
- ✅ socket.dev — source reconnue (liste interne) (20pts)
- ✅ 37622 chars — texte complet (fulltext extrait) (15pts)
- ✅ 14 IOCs dont des hashes (15pts)
- ⬜ 0/5 IOCs confirmés externellement (0pts)
- ✅ 18 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ✅ acteur(s) identifié(s) : TeamPCP (5pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://socket.dev/blog/mini-shai-hulud-campaign-hits-red-hat-cloud-services-npm-packages