🗓️ Contexte
Analyse technique publiée le 31 mars 2026 par Mend.io, documentant une attaque de chaîne d’approvisionnement ciblant la bibliothèque npm axios (50 millions de téléchargements hebdomadaires). La campagne est suivie sous l’identifiant MSC-2026-3522.
🎯 Vecteur d’attaque initial
L’attaquant a obtenu les credentials d’un compte npm mainteneur d’axios et a publié directement via le CLI npm deux versions malveillantes (1.14.1 et 0.30.4) sans passer par GitHub. Aucun tag git ne correspond à ces versions. L’adresse email du compte mainteneur a été modifiée en ifstap@proton.me après la compromission pour verrouiller le propriétaire légitime.
🔗 Chaîne d’infection
Les deux versions malveillantes introduisent une nouvelle dépendance plain-crypto-js@4.2.1 qui contient :
- Un hook postinstall déclenchant
setup.js, un dropper JavaScript obfusqué (~3KB) - Le dropper identifie l’OS, contacte le C2
http://sfrclak.com:8000/6202033et télécharge un payload de second stade spécifique à la plateforme - macOS : binaire Mach-O RAT déposé dans
/Library/Caches/com.apple.act.mond - Windows : PowerShell copié en
%PROGRAMDATA%\wt.exe, exécution via VBScript caché - Linux : script Python téléchargé dans
/tmp/ld.py
Après exécution, le dropper s’auto-détruit et remplace package.json par une copie propre sans hook postinstall, rendant toute inspection post-infection non concluante.
🧬 Obfuscation du dropper
Toutes les valeurs sensibles (modules Node.js, chemins, URL C2, identifiants OS) sont encodées dans un tableau de 18 entrées via : inversion de chaîne → restauration du padding base64 → décodage base64 → chiffrement XOR avec la clé OrDeR_7077 et la constante 333.
🖥️ RAT macOS (second stade)
Binaire Mach-O x86_64 signé en ad-hoc (codesign --force --deep --sign -), lié contre libcurl et nlohmann JSON.
- SHA256 :
92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a - Beacon initial : fingerprint système complet (hostname, username, version OS, liste de processus, arborescence fichiers) envoyé en JSON encodé Base64
- User-Agent :
mozilla/4.0 (compatible; msie 8.0; windows nt 5.1; trident/4.0) - Polling C2 toutes les 60 secondes
- Capacités opérateur :
peinject(injection binaire arbitraire),runscript(exécution shell/AppleScript),rundir(énumération filesystem),kill
📅 Chronologie
- 27 mars 2026 : Publication légitime d’axios v1.14.0
- 30-31 mars 2026 : Publication des versions malveillantes, changement de l’email du compte npm
- 31 mars 2026 01:38 UTC : Merge de la PR #10591 (workflow de dépréciation)
- 31 mars 2026 03:00 UTC : Issue #10604 déposée publiquement
- 31 mars 2026 : C2 sfrclak.com:8000 mis hors ligne, dépréciation en cours
📄 Type d’article
Analyse technique détaillée produite par Mend.io, visant à documenter la chaîne d’attaque complète, fournir les IOCs et permettre la détection et la remédiation pour les équipes de sécurité.
🧠 TTPs et IOCs détectés
TTP
- T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
- T1078 — Valid Accounts (Initial Access)
- T1059.002 — Command and Scripting Interpreter: AppleScript (Execution)
- T1059.001 — Command and Scripting Interpreter: PowerShell (Execution)
- T1059.006 — Command and Scripting Interpreter: Python (Execution)
- T1059.005 — Command and Scripting Interpreter: Visual Basic (Execution)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1070.004 — Indicator Removal: File Deletion (Defense Evasion)
- T1036.005 — Masquerading: Match Legitimate Name or Location (Defense Evasion)
- T1553.002 — Subvert Trust Controls: Code Signing (Defense Evasion)
- T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
- T1105 — Ingress Tool Transfer (Command and Control)
- T1082 — System Information Discovery (Discovery)
- T1083 — File and Directory Discovery (Discovery)
- T1057 — Process Discovery (Discovery)
- T1129 — Shared Modules (Execution)
- T1546.004 — Event Triggered Execution: Unix Shell Configuration Modification (Persistence)
IOC
- IPv4 :
142.11.206.73 - Domaines :
sfrclak.com - URLs :
http://sfrclak.com:8000/6202033 - SHA256 :
92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a - SHA1 :
13ab317c5dcab9af2d1bdb22118b9f09f8a4038e - MD5 :
7a9ddef00f69477b96252ca234fcbeeb - Emails :
ifstap@proton.me - Fichiers :
setup.js - Fichiers :
plain-crypto-js - Fichiers :
com.apple.act.mond - Fichiers :
wt.exe - Fichiers :
ld.py - Chemins :
/Library/Caches/com.apple.act.mond - Chemins :
/tmp/6202033 - Chemins :
/private/tmp/ - Chemins :
%PROGRAMDATA%\wt.exe - Chemins :
/tmp/ld.py
Malware / Outils
- plain-crypto-js (dropper) (loader)
- axios macOS RAT (com.apple.act.mond) (rat)
- setup.js (loader)
🔗 Source originale : https://www.mend.io/blog/poisoned-axios-npm-account-takeover-50-million-downloads-and-a-rat-that-vanishes-after-install/