📅 Source : Aikido Security (blog.aikido.dev), publié le 7 septembre 2026 par Charlie Eriksen.

Contexte

Le 19 mai 2026, une attaque de chaîne d’approvisionnement baptisée Shai-Hulud avait compromis des comptes mainteneurs npm pour publier 639 versions malveillantes de packages @antv en l’espace d’une heure. Le payload avait été rapidement analysé et fingerprinted par la communauté de sécurité npm.

Réactivation après 111 jours

Le 7 septembre 2026, quatre nouveaux packages npm ont été publiés par le même compte npm, portant le hash SHA256 identique (e37e3ddeeaaa9e0c4fdbcb829b4895a6521031c80053fc436625b61e6ee5b1a6) au payload original :

  • feishu-docx-mcp@0.3.2
  • bmc-i18n-extract-cli@1.1.1
  • blueai-cli@0.7.0
  • bmc-translate-utils@1.1.1

Cela représente un gap de dormance de 111 jours, le plus long observé pour ce payload selon Aikido.

Contournement du scan npm

En juillet 2026, npm avait déployé un système de scan antimalware à la publication (délai de 5 à 15 minutes). Or, ce payload n’avait subi aucune modification — même hash, même fichier — et a néanmoins été publié sans être bloqué. Aikido souligne qu’une correspondance de hash exact constitue le cas le plus simple à détecter.

Comportement du malware

  • 📄 Script preinstall exécutant bun run index.js
  • 🔁 Cycle : téléchargement de tarball → injection de payload → bump de version → republication
  • 🌐 Appels de validation sortants vers le registre npm avec des tokens volés
  • 💾 Persistance via .vscode/tasks.json et .claude/settings.json
  • 🐙 Création massive de dépôts GitHub avec nommage thématique Dune et chaînes “Shai-Hulud” inversées dans les descriptions

Nature de l’article

Article d’analyse technique et d’alerte de sécurité, visant à documenter la réactivation d’un payload connu et à signaler une défaillance du scan publish-time de npm.

🧠 TTPs et IOCs détectés

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1554 — Compromise Client Software Binary (Persistence)
  • T1053 — Scheduled Task/Job (Persistence)
  • T1078 — Valid Accounts (Defense Evasion)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
  • T1176 — Browser Extensions (Persistence)

IOC

  • Domaines : t.m-kosche.comVT · URLhaus · ThreatFox
  • SHA256 : e37e3ddeeaaa9e0c4fdbcb829b4895a6521031c80053fc436625b61e6ee5b1a6VT · MalwareBazaar
  • Fichiers : index.js
  • Chemins : .vscode/tasks.json
  • Chemins : .claude/settings.json

⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 10 septembre 2026 et n’ont pas fait l’objet d’une vérification externe. Un indicateur peut avoir été réattribué depuis : une IP de C2 peut redevenir un service légitime, un domaine sinkholé peut changer de propriétaire. Aucune garantie d’exactitude ni d’actualité — contrôlez leur validité avant tout usage opérationnel, en particulier avant de les injecter dans une blocklist ou un SIEM.

Malware / Outils

  • Shai-Hulud (other)

🟢 Indice de vérification factuelle : 87/100 (haute)

  • ✅ aikido.dev — source reconnue (Rösti community) (20pts)
  • ✅ 7435 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 5 IOCs dont des hashes (15pts)
  • ✅ 2/2 IOCs confirmés (MalwareBazaar, ThreatFox, URLhaus, VirusTotal) (12pts)
  • ✅ 6 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

IOCs confirmés externellement :

  • e37e3ddeeaaa9e0c… (sha256) → VT (29/76 détections)
  • t.m-kosche.com (domain) → VT (20/89 détections)

🔗 Source originale : https://www.aikido.dev/blog/shai-hulud-npm-resurfaces