Axios NPM Distribution Compromised in Supply Chain Attack

A compromised axios maintainer account led to malicious npm releases that propagated across environments. Learn how to assess impact, detect compromise, and secure your development workflows.

Overview

On March 31, 2026 (at 00:21 UTC for v1.14.1 and 01:00 UTC for v0.30.4), an unknown threat actor compromised the npm account of an axios maintainer and published two malicious versions of the npm package (v1.14.1, v0.30.4), which introduced a dependency on plain-crypto-js, a newly created malicious package. Although the malicious versions were removed within a few hours, axios’s widespread usage - present in ~80% of cloud and code environments and downloaded ~100 million times per week - enabled rapid exposure, with observed execution in 3% of affected environments. Organizations are strongly advised to audit their environments for potential execution of these versions (tracked as GHSA-fw8c-xr5c-95f9 and MAL-2026-2306).

Technical Details

The malicious versions of axios differed from legitimate releases by including a dependency on plain-crypto-js, a trojanized package. These versions were published directly via a compromised maintainer account and later removed from npm following disclosure. Due to the short exposure window but high prevalence of axios, even limited availability resulted in measurable execution across environments.

The malicious package includes a dropper (setup.js) that downloads and executes platform-specific second-stage payloads from sfrclak.com:8000, and then self-cleans by deleting itself and restoring a clean package.json. The second-stage payloads function as lightweight remote access trojans (RATs) and beacon to the C2 server every 60 seconds, transmitting system inventory and awaiting commands.

All three variants implement similar capabilities, including remote shell execution, binary injection, directory browsing, process listing, and system reconnaissance, while differing by operating system. On macOS, the payload is a C++ compiled Mach-O universal binary, and is capable of self-signing injected payloads via codesign. On Windows, the payload is a PowerShell script that establishes persistence via a registry Run key (MicrosoftUpdate) and a re-download batch file. On Linux, the payload is delivered as a Python script.

Which actions should security teams take?

  1. Audit axios usage: Identify whether the affected versions (1.14.1, 0.30.4) were downloaded or executed in your environment. Immediately remove any malicious artifacts from endpoints, build systems, and production workloads.

  2. Rotate exposed credentials: If there is any indication that the malicious packages were executed, assume credential compromise. Scan affected systems for secrets (e.g., environment variables, API keys, tokens) and rotate them accordingly.

  3. Investigate potential compromise paths: Review build pipelines and developer machines for signs of unauthorized access or persistence, as the malware executes during installation and may enable upstream supply chain compromise.

  4. Monitor for suspicious activity: Detect and investigate outbound connections to sfrclak.com:8000, and analyze logs for beaconing behavior, anomalous HTTP POST requests, or unexpected process execution related to package installation.

How can Wiz help?

Wiz customers can refer to the advisory in the Wiz Threat Center for ongoing guidance, pre-built queries, and references to relevant detections they can use to assess the risk in their environment and detect the presence of the malicious package or past executions.

Worried you’ve been impacted? Connect with the Wiz Incident Response team.

References

Appendix - Indicators of compromise (IOCs)

CategoryIndicatorDetailsHash
Filecom.apple.act.mondStage 2 (macOS), Mach-O binarySHA256: 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
Filestage2.ps1Stage 2 (Windows), PowerShell scriptSHA256: 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101
Fileld.pyStage 2 (Linux), Python scriptSHA256: fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
Filesetup.jsDropper scriptSHA256: e10b1fa84f1d6481625f741b69892780140d4e0e7769e7491e5f4d894c2e0e09
Filesystem.batWindows persistence scriptSHA256: f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cd
Filesystem.batWindows persistence script (variant)SHA256: e49c2732fb9861548208a78e72996b9c3c470b6b562576924bcc3a9fb75bf9ff
File6202033.ps1PowerShell scriptSHA256: ed8560c1ac7ceb6983ba995124d5917dc1a00288912387a6389296637d5f815c
Packageaxios@1.14.1Malicious packageSHA1: 2553649f232204966871cea80a5d0d6adc700ca
Packageaxios@0.30.4Malicious packageSHA1: d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71
Packageplain-crypto-js@4.2.1Trojanized packageSHA1: 07d889e2dadce6f3910dcbc253317d28ca61c766
Domainsfrclak[.]comC2 domain-
Domaincallnrwise[.]comC2 domain (pivot)-
IP142.11.206[.]73C2 IP-
URLhxxp://sfrclak.com:8000/6202033C2 URL-
NetworkPort 8000C2 port-
Network/6202033Campaign path-
File Path/Library/Caches/com.apple.act.mondmacOS persistence path-
File Path/tmp/.XXXXXX.scptmacOS temporary script-
File Path/private/tmp/.*macOS temp files-
File Path%PROGRAMDATA%\wt.exeWindows artifact-
File Path%PROGRAMDATA%\system.batWindows persistence-
File Path%TEMP%\6202033.vbsWindows script-
File Path%TEMP%\6202033.ps1Windows script-
File Path%TEMP%.ps1Windows script (variable name)-
File Path/tmp/ld.pyLinux script-
RegistryHKCU\Software\Microsoft\Windows\CurrentVersion\RunPersistence key-
RegistryMicrosoftUpdateRun key name-
Registry%PROGRAMDATA%\system.batRun key value-
Package@shadanai/openclawVersions: 2026.3.28-2; 2026.3.28-3; 2026.3.31-1; 2026.3.31-2-
Package@qqbrowser/openclaw-qbotVersion: 0.0.130-
Accountnpm:jasonsaaymanCompromised maintainer (ifstap@proton.me)-
Accountnpm:nrwisePublished plain-crypto-js (nrwise@proton.me)-
Emailnrwise@proton[.]meThreat actor email-
Emailifstap@proton[.]meThreat actor email-

Continuer la lecture

Obtenez une démo personnalisée

Prêt(e) à voir Wiz en action ?

"La meilleure expérience utilisateur que j’ai jamais vue, offre une visibilité totale sur les workloads cloud."
David EstlickRSSI
"Wiz fournit une interface unique pour voir ce qui se passe dans nos environnements cloud."
Adam FletcherChef du service de sécurité
"Nous savons que si Wiz identifie quelque chose comme critique, c’est qu’il l’est réellement."
Greg PoniatowskiResponsable de la gestion des menaces et des vulnérabilités