🎯 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>.js et 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.spawn détaché, variable __IS_DAEMON)
  • Évitement des systèmes russes : vérification de la locale ru via Intl.DateTimeFormat et 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 unique IfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner

🔗 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.comVT · URLhaus · ThreatFox
  • URLs : https://api.anthropic.com:443/v1/apiURLhaus
  • SHA256 : 88896d478986d453f5da79b311de39d9b4b1bea95c21af1d8ef181b0f4e52fe9VT · MalwareBazaar
  • SHA256 : 21b6409a7b84446310daca5409ad6112ac60a1e4bef97736e53fff5f63bfdef4VT · MalwareBazaar
  • SHA256 : ee262510cb246d2b904991aee7fc61162bdae34463439ec6383bd5356479d362VT · MalwareBazaar
  • SHA256 : ac2a2208e1726e008be6c73dc0872d9bba163319259dff1b62055ac933ca46b6VT · MalwareBazaar
  • SHA256 : 0dc06ecdaa63fe24859cfd955053c23245c536e4733480239d14bebf12688e35VT · 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