Back to all posts
Critical Malware

Axios npm Supply Chain Attack:
North Korean RAT Dropper via Compromised Maintainer

A compromised maintainer account pushed malicious axios versions to 300M+ weekly downloads, deploying cross-platform RATs attributed to North Korean state actors.

CyberXYZ Security Team Threat Intelligence
12 min read
Immediate Action Required

If you installed axios@1.14.1 or axios@0.30.4 between March 31 00:21 UTC and 03:15 UTC, your system may be compromised. Check for the file-system artifacts listed below and rotate all credentials on affected machines immediately.

What Happened

On March 31, 2026, attackers published two malicious versions of the axios npm package: 1.14.1 (tagged latest) and 0.30.4 (tagged legacy). Both versions introduced a new dependency on plain-crypto-js, a purpose-built malicious package that served as a cross-platform RAT dropper.

The attack was made possible by compromising the npm credentials of jasonsaayman, the lead axios maintainer, through a sophisticated social engineering campaign. The attacker impersonated a company founder, lured the maintainer into a fake Slack workspace, moved the conversation to a Microsoft Teams call with multiple apparent participants, and then prompted him to install what appeared to be a missing Teams component. That component was malware that gave the attacker full control of his machine, including npm authentication tokens, bypassing 2FA entirely.

Axios has roughly 100 million weekly downloads and 174,000 dependent npm packages, making this one of the highest-impact supply chain compromises in npm history. The malicious versions were live for approximately 3 hours before removal.

Why Traditional Scanners Missed This

The malicious code was not in axios itself. It was hidden inside a transitive dependency (plain-crypto-js) that executed via a postinstall hook. CVE-based scanners had no advisory to match against. Only behavioral analysis of install scripts and dependency injection patterns could catch this in real time.

Timeline of Events

The Payload: Cross-Platform RAT

The plain-crypto-js package contained a single postinstall hook that ran setup.js. The dropper used reversed Base64 encoding with padding character substitution and XOR encryption (key: OrDeR_7077) to evade static analysis. After execution, it deleted itself and replaced its own package.json with a clean version to evade forensic examination.

The dropper identified the target operating system and fetched a platform-specific second-stage payload from the C2 server:

macOS

Payload dropped to /Library/Caches/com.apple.act.mond, disguised as an Apple daemon. This was WAVESHAPER, a Mach-O binary RAT that uses AppleScript for execution. It beacons to C2 every 60 seconds and supports code injection, shell commands, filesystem enumeration, and process termination.

Windows

A VBScript downloader (system.bat) copies PowerShell to C:\ProgramData\wt.exe. The PowerShell RAT establishes registry persistence at HKCU\Software\Microsoft\Windows\CurrentVersion\Run\MicrosoftUpdate and beacons to C2 for command-and-control instructions.

Linux

A Python RAT deployed to /tmp/ld.py and spawned as an orphaned background process to survive session termination.

Indicators of Compromise

RAT Payload Hashes

PlatformSHA-256Context
macOS 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a WAVESHAPER (com.apple.act.mond)
Windows 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101 PowerShell RAT (6202033.ps1)
Linux fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf Python RAT (ld.py)

Network Indicators

TypeIndicatorContext
C2 Domain sfrclak[.]com Primary command-and-control server
C2 IP 142.11.206.73 Hostwinds AS54290, port 8000
User-Agent mozilla/4.0 (compatible; msie 8.0; windows nt 5.1; trident/4.0) Static UA string used by all RAT variants

File System Artifacts

PlatformPathContext
All node_modules/plain-crypto-js/setup.js Dropper script (self-deletes after execution)
macOS /Library/Caches/com.apple.act.mond WAVESHAPER binary disguised as Apple daemon
Windows C:\ProgramData\system.bat VBScript downloader (Stage 1)
Windows C:\ProgramData\wt.exe Renamed PowerShell binary for persistence
Windows HKCU\...\Run\MicrosoftUpdate Registry persistence key
Linux /tmp/ld.py Python RAT (orphaned process)
How to Check If You're Affected

1. Check your package-lock.json or yarn.lock for axios@1.14.1 or axios@0.30.4.

2. Search for plain-crypto-js in your node_modules directory.

3. Check for file system artifacts listed above on all machines that ran npm install during the exposure window (Mar 31, 00:21-03:15 UTC).

4. Search network logs for connections to sfrclak[.]com or 142.11.206.73 on port 8000.

5. If any indicators are found, treat the machine as fully compromised. Rotate all credentials, API keys, and tokens that were accessible from the affected system.

Supply-Chain Risk Analysis

MITRE ATT&CK Mapping

This attack maps to multiple MITRE ATT&CK techniques across the kill chain:

Attribution

Multiple threat intelligence teams have attributed this attack to North Korean state-sponsored actors:

Attribution confidence is HIGH based on the WAVESHAPER malware lineage, identical User-Agent strings across multiple campaigns, and overlapping Hostwinds infrastructure.

How CyberXYZ Detects This Class of Attack

Traditional SCA tools rely on published CVEs and advisories. In this case, no CVE existed during the 3-hour exposure window. By the time advisories were published, the RAT had already been deployed.

CyberXYZ's detection engine operates at the registry layer, monitoring for behavioral anomalies in real time. When a trusted package like axios suddenly introduces an unknown dependency, the engine flags it instantly. The CyberXYZ proxy, which sits between the developer and the registry, blocks the malicious tarball before it ever reaches node_modules. The package simply does not install.

Combined with downstream dependency graph analysis, every affected consumer is identified and notified within minutes. This attack would have been caught and blocked automatically at the proxy, without waiting for a human to file an advisory.

Recommended Actions

Immediate

Short-Term

Long-Term


References

  1. Socket Research Team, Supply Chain Attack on Axios
  2. Snyk Security, Axios npm Package Compromised
  3. Microsoft Threat Intelligence, Mitigating the Axios npm Supply Chain Compromise
  4. Google Cloud / GTIG, North Korea-Nexus Threat Actor Compromises Axios NPM Package
  5. Elastic Security Labs, Inside the Axios Supply Chain Compromise
  6. BleepingComputer, Hackers Compromise Axios npm Package
  7. CISA, Supply Chain Compromise Impacts Axios
  8. GitHub Advisory, GHSA-fw8c-xr5c-95f9
  9. CyberXYZ Security Team, CyberXYZ Analysis
👋

Let's Talk

Want to learn how CyberXYZ protects your supply chain? We'd love to hear from you.