🎯 Contexte
Le 11 juillet 2026, l’équipe de recherche de Socket a publié une analyse technique détaillée d’une attaque de supply chain ciblant le package npm jscrambler, un outil populaire de protection de code JavaScript utilisé dans les pipelines de build. L’article documente la compromission de plusieurs versions publiées ce même jour.
🔍 Déroulement de l’attaque
La version malveillante 8.14.0 a été publiée le 11 juillet 2026 et détectée par Socket 6 minutes après sa publication. L’attaquant a utilisé des credentials npm volés appartenant à Jscrambler pour publier les releases compromises.
Au total, cinq versions malveillantes ont été publiées sur une période d’environ trois heures :
8.14.0,8.16.0,8.17.0: dropper via hookpreinstall8.18.0,8.20.0: dropper injecté directement dansdist/index.jsetdist/bin/jscrambler.js(exécution à l’import ou via CLI, contournant--ignore-scripts)
Les versions 8.18.0 et 8.20.0 déclarent également une auto-dépendance sur ^8.17.0, propageant la compromission de manière transitive.
🛠️ Analyse technique
Le package compromis introduit deux fichiers malveillants dans dist/ :
setup.js: loader exécuté via le hook preinstallintro.js: conteneur binaire (~7,8 Mo) avec un header custom\x1bCSI\x01, contenant trois exécutables natifs compressés (gzip) :- Linux x86-64 ELF
- Windows x86-64 PE32+
- macOS arm64 Mach-O
Le loader sélectionne le binaire correspondant à la plateforme, le décompresse dans un fichier caché aléatoire dans le répertoire temp système, le rend exécutable et le lance en arrière-plan (detached: true, stdio: 'ignore').
Les binaires sont écrits en Rust et leurs chaînes sensibles sont chiffrées individuellement avec ChaCha20-Poly1305 (nonce 12 octets, AAD vide). Socket a récupéré ~2 421 chaînes déchiffrées.
🎯 Capacités du malware (infostealer)
L’infostealer cible spécifiquement les environnements développeurs et cloud :
Cryptomonnaies :
- Extensions navigateur : MetaMask, Trust Wallet, Coinbase Wallet, Phantom
- Wallet Exodus (déchiffrement des vaults via paramètres scrypt)
Outils IA et MCP :
- Claude Desktop, Cursor, Windsurf, Factory, Zed, VS Code
Cloud :
- GCP (metadata, Secret Manager), AWS (ECS metadata, Secrets Manager, SSM), Azure (IMDS)
Messagerie : Discord, Slack, Telegram Desktop
Navigateurs : Chrome, Edge, Brave, Firefox, Opera, Vivaldi
Autres : Steam, KDE KWallet, variables d’environnement, tokens CI/CD
Persistance : systemd units, crontab, macOS LaunchAgents
Exfiltration : POST multipart/form-data via TLS (rustls) vers un serveur de collecte
📊 Impact
Le package reçoit environ 15 800 téléchargements hebdomadaires. L’exécution se déclenche à l’installation sans nécessiter d’import, exposant workstations développeurs, systèmes CI/CD et pipelines de build.
📄 Type d’article
Analyse technique et rapport d’incident publiés par Socket Research Team, documentant une attaque de supply chain active avec extraction complète des IoCs et des capacités du malware.
🧠 TTPs et IOCs détectés
TTP
- T1195.002 — Supply Chain Compromise: Compromise Software Supply Chain (Initial Access)
- T1059.007 — Command and Scripting Interpreter: JavaScript (Execution)
- T1027 — Obfuscated Files or Information (Defense Evasion)
- T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
- T1543.002 — Create or Modify System Process: Systemd Service (Persistence)
- T1053.003 — Scheduled Task/Job: Cron (Persistence)
- T1543.001 — Create or Modify System Process: Launch Agent (Persistence)
- T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
- T1555.003 — Credentials from Password Stores: Credentials from Web Browsers (Credential Access)
- T1082 — System Information Discovery (Discovery)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
- T1548.003 — Abuse Elevation Control Mechanism: Sudo and Sudo Caching (Privilege Escalation)
- T1036 — Masquerading (Defense Evasion)
- T1608.001 — Stage Capabilities: Upload Malware (Resource Development)
IOC
- SHA256 :
a742de963f14a92d24ebcbc7b44ac867e23a20d31d1b0094a13a4f83287f4e60— VT · MalwareBazaar - SHA256 :
a41a523ef9517aab37ed6eea0ec881821bdcb7aefcb5c5f603adc7907f868c86— VT · MalwareBazaar - SHA256 :
bba32ddeab075a5e5015eec50f5d2af364c95b848732c714aea6b6baf78f49f0— VT · MalwareBazaar - SHA256 :
fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bd— VT · MalwareBazaar - SHA256 :
b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903— VT · MalwareBazaar - SHA256 :
c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fd— VT · MalwareBazaar - Fichiers :
setup.js - Fichiers :
intro.js - Fichiers :
dist/setup.js - Fichiers :
dist/intro.js - Fichiers :
dist/index.js - Fichiers :
dist/bin/jscrambler.js
Malware / Outils
- jscrambler infostealer (Linux ELF) (stealer)
- jscrambler infostealer (Windows PE) (stealer)
- jscrambler infostealer (macOS Mach-O) (stealer)
🟢 Indice de vérification factuelle : 87/100 (haute)
- ✅ socket.dev — source reconnue (liste interne) (20pts)
- ✅ 14343 chars — texte complet (fulltext extrait) (15pts)
- ✅ 12 IOCs dont des hashes (15pts)
- ✅ 2/3 IOCs confirmés (MalwareBazaar, ThreatFox, VirusTotal) (12pts)
- ✅ 14 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 :
a742de963f14a92d…(sha256) → VT (24/75 détections)a41a523ef9517aab…(sha256) → VT (19/75 détections)
🔗 Source originale : https://socket.dev/blog/jscrambler-supply-chain-attack