🔍 Contexte

PubliĂ© le 25 juin 2026 par Yair Benamou (JFrog Security Research), cet article documente une nouvelle vague de la campagne Shai-Hulud, dĂ©signĂ©e Hades, ciblant l’Ă©cosystĂšme npm Leo/RStreams — une plateforme de streaming d’Ă©vĂ©nements AWS-native utilisĂ©e dans des pipelines serverless et CI/CD.

🎯 Packages ciblĂ©s

20 packages npm légitimes ont été compromis, dont :

  • leo-sdk, leo-auth, leo-aws, leo-logger, leo-config
  • rstreams-metrics, rstreams-shard-util
  • serverless-leo, serverless-convention
  • Packages @immobiliarelabs/backstage-plugin-gitlab-backend, @immobiliarelabs/backstage-plugin-gitlab, @immobiliarelabs/backstage-plugin-ldap-auth-backend, @immobiliarelabs/backstage-plugin-ldap-auth

Ces packages totalisaient environ ~127K tĂ©lĂ©chargements dans le mois prĂ©cĂ©dant l’analyse.

⚙ Technique de livraison

Le payload exploite une technique d’Ă©vasion via binding.gyp : en l’absence de script install explicite dans package.json, npm dĂ©clenche automatiquement node-gyp rebuild, qui exĂ©cute des commandes shell embarquĂ©es dans des expressions <!(...) >. Cela permet l’exĂ©cution du payload Ă  l’installation tout en contournant les scanners inspectant uniquement les lifecycle scripts npm.

🩠 Comportement du payload

Le payload appartient à la lignée Shai-Hulud et conserve les comportements suivants :

  • Vol de credentials : fichiers, variables d’environnement, historique shell, tokens GitHub CLI, credentials cloud, tokens de package managers, environnements CI/CD
  • Exfiltration via GitHub dead-drop : crĂ©ation de dĂ©pĂŽts sous un token GitHub valide, dĂ©pĂŽt de fichiers chiffrĂ©s sous results/results-<timestamp>-<counter>.json
  • Persistance sur npm, PyPI, RubyGems, JFrog/Artifactory, GitHub Actions, outils IA
  • Dead-man switch gh-token-monitor
  • Dump de secrets GitHub Actions via VARIABLE_STORE et format-results.txt
  • Mouvement latĂ©ral SSH via ai_setup.sh et ai_init.js
  • Camouflage rĂ©seau utilisant api.anthropic.com/v1/api comme hĂŽte leurre

🔄 Changements par rapport aux vagues prĂ©cĂ©dentes

  • Marqueur de campagne : “Alright Lets See If This Works” (remplace “Miasma - The Spreading Blight” et “Hades - The End for the Damned”)
  • Marqueur de token relay : “RevokeAndItGoesKaboom” (remplace “IfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner”)
  • Ajout d’un chemin SEED_PAT conditionnel : activĂ© uniquement si la variable GITHUB_REPOSITORY contient “Seeder”, suggĂ©rant un mĂ©canisme de bootstrap opĂ©rateur
  • 414 dĂ©pĂŽts GitHub publics identifiĂ©s avec le nouveau marqueur au moment de l’analyse

📋 Type d’article

Publication de recherche technique Ă  visĂ©e CTI, documentant une nouvelle itĂ©ration d’une campagne active de supply chain attack npm avec extraction complĂšte des IOCs et indicateurs comportementaux.

🧠 TTPs et IOCs dĂ©tectĂ©s

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1552.007 — Unsecured Credentials: Container API (Credential Access)
  • T1567.001 — Exfiltration Over Web Service: Exfiltration to Code Repository (Exfiltration)
  • T1547 — Boot or Logon Autostart Execution (Persistence)
  • T1021.004 — Remote Services: SSH (Lateral Movement)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1553 — Subvert Trust Controls (Defense Evasion)

IOC

  • URLs : https://api.anthropic.com/v1/api — URLhaus
  • URLs : https://github.com/oven-sh/bun/releases/download/bun-v1.3.13/ — URLhaus
  • URLs : https://github.com/oven-sh/bun/releases/download/bun-v1.3.14/ — URLhaus
  • Fichiers : binding.gyp
  • Fichiers : index.js
  • Fichiers : ai_setup.sh
  • Fichiers : ai_init.js
  • Fichiers : gh-token-monitor.sh
  • Fichiers : update.py
  • Fichiers : format-results.txt
  • Chemins : /tmp/p*.js
  • Chemins : /tmp/b-*/bun
  • Chemins : /tmp/b-*/b.zip
  • Chemins : /tmp/.bun_ran
  • Chemins : ~/.config/gh-token-monitor/
  • Chemins : ~/.config/gh-token-monitor/token
  • Chemins : ~/.config/gh-token-monitor/handler
  • Chemins : ~/.local/bin/gh-token-monitor.sh
  • Chemins : ~/.config/systemd/user/gh-token-monitor.service
  • Chemins : ~/Library/LaunchAgents/com.user.gh-token-monitor.plist
  • Chemins : ~/.local/share/updater/update.py
  • Chemins : ~/.local/share/updater/
  • Chemins : ~/.config/index.js
  • Chemins : .cursor/rules/setup.mdc
  • Chemins : .gemini/settings.json
  • Chemins : .cursorrules
  • Chemins : .windsurfrules
  • Chemins : .github/copilot-instructions.md
  • Chemins : mcp.json
  • Chemins : .aider.conf.yml

Malware / Outils

  • Shai-Hulud/Hades payload (stealer)
  • gh-token-monitor (tool)
  • node-gyp (other)

🟡 Indice de vĂ©rification factuelle : 50/100 (moyenne)

  • ⬜ research.jfrog.com — source non rĂ©fĂ©rencĂ©e (0pts)
  • ✅ 12031 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 30 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ 0/3 IOCs confirmĂ©s externellement (0pts)
  • ✅ 9 TTPs MITRE identifiĂ©es (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommĂ© (0pts)
  • ⬜ pas de CVE Ă  vĂ©rifier (0pts)

🔗 Source originale : https://research.jfrog.com/post/shai-hulud-miasma-alright-lets-see-if-this-works/