🔍 Contexte
Publié le 1er septembre 2026 par Kunal Singh sur le blog de SafeDep, cet article présente une analyse technique approfondie d’une chaîne de livraison de malware via l’écosystème npm, détectée en juin 2026 et référencée sous l’advisory MAL-2026-6672.
🎯 Mécanisme d’attaque : une chaîne de dépendances transitives
L’attaque repose sur trois packages npm imbriqués :
- ioredis-xyz (Layer 1) : typosquat de
ioredis, un client Redis légitime. La version 5.11.2 ajouteredis-type-xyzcomme dépendance inutilisée. - redis-type-xyz (Layer 2) : typosquat de Redis OM, sans code exécutable. La version 1.10.6 ajoute
ulid-xyzcomme dépendance. - ulid-xyz (Layer 3) : typosquat de
ulidx, contient le payload malveillant de 467 Ko déclenché via un scriptpostinstall.
Le payload n’était pas présent lors de la publication initiale d’ioredis-xyz : il a été injecté 19 minutes plus tard via la mise à jour d’une dépendance transitive, rendant la détection initiale impossible.
⚙️ Fonctionnement du payload
- Le script
postinstalllancedist/node/utils.jsen processus détaché, qui exécutedist/node/payload.js. - Le payload décode une configuration obfusquée (XOR + Base64) et établit une connexion WebSocket vers un serveur de commande.
- Il s’installe en persistance sous le nom MicrosoftSystem64 :
- Windows : tâche planifiée
\MicrosoftSystem64+MicrosoftSystem64.vbs - macOS : LaunchAgent
com.launchkeeper.MicrosoftSystem64.plist - Linux : unité systemd
MicrosoftSystem64.service
- Windows : tâche planifiée
- Capacités exposées :
ping,get_system_info,list_drives,list_dir,deploy_binary(permet le déploiement d’un second stage),remove_agent. - Le launcher évite les machines avec moins de 4 processeurs pour échapper aux environnements d’analyse.
🌐 Infrastructure C2
- Serveur C2 initial (17 juin 2026) :
65.21.30.171:8010(WebSocket + HTTP) - Serveur C2 mis à jour (29 juin 2026) :
95.216.232.162:8010 - Les deux adresses sont hébergées chez Hetzner Online GmbH, Allemagne.
- Clé XOR :
5A 3C 7E 12 9F 4B 6D 8A
🏴 Attribution à FAMOUS CHOLLIMA (DPRK)
Quatre éléments relient cette campagne au cluster FAMOUS CHOLLIMA (alias Contagious Interview) :
- Même nom de persistance MicrosoftSystem64 et même design multi-OS.
- Même port C2 8010 (précédemment observé sur
195.201.194.107:8010). - Même hébergeur Hetzner pour toutes les adresses C2.
- Le persona whisdev, tracé par JFrog via
copilot-ai.whisdev.org, possède deux des 28 dépôts GitHub utilisés pour la distribution.
📦 Vecteur de distribution : 28 dépôts GitHub factices
L’opérateur a créé 28 dépôts GitHub artificiels (non compromis) dans des thématiques attractives (fintech, trading, IA, crypto, sports betting) pour promouvoir ioredis-xyz. Ces dépôts affichent des centaines d’étoiles et de forks artificiels.
📋 Type d’article
Analyse technique détaillée publiée par une équipe de recherche en sécurité, visant à documenter une campagne de supply chain active, fournir des IoCs exploitables et établir une attribution à un acteur étatique nord-coréen.
🧠 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)
- T1546.004 — Event Triggered Execution: Unix Shell Configuration Modification (Persistence)
- T1053.005 — Scheduled Task/Job: Scheduled Task (Persistence)
- T1543.001 — Create or Modify System Process: Launch Agent (Persistence)
- T1543.002 — Create or Modify System Process: Systemd Service (Persistence)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1497.001 — Virtualization/Sandbox Evasion: System Checks (Defense Evasion)
- T1071.002 — Application Layer Protocol: File Transfer Protocols (Command and Control)
- T1102 — Web Service (Command and Control)
- T1105 — Ingress Tool Transfer (Command and Control)
- T1082 — System Information Discovery (Discovery)
- T1083 — File and Directory Discovery (Discovery)
- T1608.001 — Stage Capabilities: Upload Malware (Resource Development)
IOC
- IPv4 :
65.21.30.171— AbuseIPDB · VT · ThreatFox - IPv4 :
95.216.232.162— AbuseIPDB · VT · ThreatFox - Domaines :
ufiwi.space— VT · URLhaus · ThreatFox - Domaines :
ufiwi.site— VT · URLhaus · ThreatFox - URLs :
http://65.21.30.171:8010— URLhaus - URLs :
ws://65.21.30.171:8010— URLhaus - URLs :
http://95.216.232.162:8010— URLhaus - URLs :
ws://95.216.232.162:8010— URLhaus - SHA256 :
a3c28435295fed4babdeefedcefdd0ed037ff24ed3ff363a49d080c2768d07f2— VT · MalwareBazaar - SHA256 :
3a9089e9db3650dd6d1584fae709022002dc34854b961abfb014a90f0a7c6a50— VT · MalwareBazaar - SHA256 :
aa01a83c7a420c22a719b02ec327451ddd751ab5b189fd0127824ea43533b96a— VT · MalwareBazaar - Emails :
iloiyxo643@ufiwi.space - Emails :
qmtijao982@ufiwi.site - Fichiers :
utils.js - Fichiers :
payload.js - Fichiers :
MicrosoftSystem64.vbs - Fichiers :
com.launchkeeper.MicrosoftSystem64.plist - Fichiers :
MicrosoftSystem64.service - Fichiers :
.pkg-agent.lock - Chemins :
dist/node/utils.js - Chemins :
dist/node/payload.js - Chemins :
~/Library/LaunchAgents/com.launchkeeper.MicrosoftSystem64.plist - Chemins :
~/.config/systemd/user/MicrosoftSystem64.service
⚠️ À propos de ces IOC — ils sont extraits automatiquement de l’article original le 1 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
- MicrosoftSystem64 (rat)
- ulid-xyz payload (loader)
🟡 Indice de vérification factuelle : 60/100 (moyenne)
- ⬜ safedep.io — source non référencée (0pts)
- ✅ 12826 chars — texte complet (fulltext extrait) (15pts)
- ✅ 23 IOCs dont des hashes (15pts)
- ⬜ 0/10 IOCs confirmés externellement (0pts)
- ✅ 14 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ✅ acteur(s) identifié(s) : FAMOUS CHOLLIMA (5pts)
- ⬜ pas de CVE à vérifier (0pts)
🔗 Source originale : https://safedep.io/ulid-xyz-transitive-dependency-delivery-chain/