🗓️ Contexte

Analyse technique publiée le 31 mars 2026 sur opensourcemalware.com, portant sur une attaque de chaîne d’approvisionnement ciblant le paquet npm axios, l’un des plus téléchargés au monde avec plus de 40 millions de téléchargements hebdomadaires.

🎯 Vecteur d’attaque initial

L’attaquant a procédé en deux temps :

  • Création préalable du paquet malveillant plain-crypto-js (versions 4.2.0 et 4.2.1) via le compte npm nrwise (nrwise@proton.me), conçu pour imiter le légitime crypto-js
  • Compromission des comptes npm et GitHub du mainteneur jasonsaayman (email modifié en ifstap@proton.me), permettant la publication de axios@1.14.1 et axios@0.30.4 avec plain-crypto-js comme dépendance malveillante

La preuve forensique clé est l’absence de provenance OIDC sur les versions malveillantes, publiées via npm CLI avec des credentials volés, contrairement aux versions légitimes publiées via GitHub Actions.

⚙️ Mécanisme d’infection

Le paquet plain-crypto-js exploite le hook postinstall de npm pour exécuter automatiquement setup.js à l’installation. Ce script utilise une obfuscation multi-couches (Base64 + inversion de chaîne + double XOR avec la clé OrDeR_7077) pour dissimuler son comportement.

Une fois déobfusqué, le script :

  1. Détecte le système d’exploitation (Windows, macOS, Linux)
  2. Contacte le C2 sfrclak.com:8000 pour télécharger un RAT spécifique à la plateforme
  3. Exécute le RAT en arrière-plan
  4. S’auto-supprime (setup.js + package.json remplacé par package.md)

🖥️ Payloads par plateforme

  • Windows : Script PowerShell (11 KB) avec persistance via clé de registre HKCU\...\Run\MicrosoftUpdate, injection réflective de DLL .NET en mémoire, fichiers system.bat et wt.exe dans %PROGRAMDATA%
  • Linux : Script Python (13 KB) déposé dans /tmp/ld.py, avec reconnaissance système, énumération de processus et exécution de code arbitraire
  • macOS : Binaire natif Mach-O universel (643 KB, x86_64 + arm64) déposé dans /Library/Caches/com.apple.act.mond

📡 Infrastructure C2 et protocole

  • Domaine : sfrclak.com | IP : 142.11.206.73 | Port : 8000 (HTTP)
  • User-Agent : mozilla/4.0 (compatible; msie 8.0; windows nt 5.1; trident/4.0)
  • Identifiant de campagne : /6202033
  • Balises initiales (FirstInfo) : inventaire du système de fichiers (Documents, Desktop, .ssh, .aws)
  • Balises périodiques (BaseInfo) : toutes les 60 secondes, liste complète des processus, infos matérielles
  • Commandes supportées : kill, peinject, runscript, rundir

⏱️ Chronologie

  • 30 mars 2026 05:57 UTC : Création de plain-crypto-js@4.2.0 par nrwise
  • 30 mars 2026 18:15 UTC : Dernière activité légitime de jasonsaayman
  • 31 mars 2026 00:21 UTC : Publication de axios@1.14.1 (malveillant)
  • 31 mars 2026 01:00 UTC : Publication de axios@0.30.4 (malveillant)
  • 31 mars 2026 03:40 UTC : Suppression des versions malveillantes par l’administration npm
  • Fenêtre d’attaque totale : ~3h19min

📋 Type d’article

Analyse technique approfondie d’un incident de supply chain npm, visant à documenter les TTPs, fournir les IOCs et les règles de détection (YARA, Snort, osquery) à la communauté de sécurité.

🧠 TTPs et IOCs détectés

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1586.001 — Compromise Accounts: Social Media Accounts (Resource Development)
  • T1059.001 — Command and Scripting Interpreter: PowerShell (Execution)
  • T1059.006 — Command and Scripting Interpreter: Python (Execution)
  • T1546.003 — Event Triggered Execution: Windows Management Instrumentation (Persistence)
  • T1547.001 — Boot or Logon Autostart Execution: Registry Run Keys / Startup Folder (Persistence)
  • T1055.001 — Process Injection: Dynamic-link Library Injection (Defense Evasion)
  • 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)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
  • T1082 — System Information Discovery (Discovery)
  • T1083 — File and Directory Discovery (Discovery)
  • T1057 — Process Discovery (Discovery)
  • T1041 — Exfiltration Over C2 Channel (Exfiltration)

IOC

  • IPv4 : 142.11.206.73
  • Domaines : sfrclak.com
  • URLs : http://sfrclak.com:8000/6202033
  • Emails : ifstap@proton.me
  • Emails : nrwise@proton.me
  • Fichiers : setup.js
  • Fichiers : plain-crypto-js
  • Fichiers : system.bat
  • Fichiers : wt.exe
  • Fichiers : ld.py
  • Fichiers : stage2-product0-macos.bin
  • Chemins : %PROGRAMDATA%\system.bat
  • Chemins : %PROGRAMDATA%\wt.exe
  • Chemins : %TEMP%\6202033.vbs
  • Chemins : %TEMP%\6202033.ps1
  • Chemins : /tmp/ld.py
  • Chemins : /Library/Caches/com.apple.act.mond

Malware / Outils

  • plain-crypto-js (loader)
  • axios RAT (Windows PowerShell) (rat)
  • axios RAT (Linux Python) (rat)
  • axios RAT (macOS Mach-O) (rat)

🔗 Source originale : https://opensourcemalware.com/blog/axios-compromised