Compromised axios Releases 1.14.1 and 0.30.4 Threaten npm Builds

Step by step
How the attack unfolded
Click a phase for details – or let the animation play through.
PHASE 1/7 · Maintainer Account Compromise

Via a social-engineering campaign with malware, an attacker took over the npm account of the axios lead maintainer.

T1566 – Phishing T1078 – Valid Accounts
  • Targeted social-engineering campaign against the lead maintainer (Jason Saayman)
  • Attributed to a North Korea-nexus actor (UNC1069) per Google Threat Intelligence
  • Compromised account allowed publishing outside the regular process
PHASE 2/7 · Supply-Chain Poisoning

The attacker published two malicious axios versions that pulled in a malicious dependency.

T1195.002 – Compromise Software Supply Chain T1204.003 – Malicious Image / Package
  • axios@1.14.1 at 00:21 UTC and axios@0.30.4 around 01:00 UTC on 2026-03-31
  • Both pulled in plain-crypto-js@4.2.1 as an added dependency
  • Pre-version plain-crypto-js@4.2.0 planted unobtrusively on 2026-03-30
  • Roughly three-hour delivery window, an estimated ~600,000 downloads affected
PHASE 3/7 · Silent Execution on Install

A postinstall hook automatically launched an obfuscated dropper during installation.

T1195.002 – Compromise Software Supply Chain T1059.007 – JavaScript T1027 – Obfuscated Files or Information
  • postinstall hook in package.json ran setup.js without user interaction
  • Dropper obfuscated with XOR and Base64, detected the operating system
  • Second stage downloaded from http://sfrclak[.]com:8000
  • Affected: developer machines, CI/CD runners, build servers, container builds
PHASE 4/7 · Persistence and Remote Access (RAT)

The second stage WAVESHAPER.V2 installed a cross-platform remote access trojan with persistence.

T1547.001 – Registry Run Keys / Startup Folder T1059.001 – PowerShell T1543 – Create or Modify System Process
  • macOS: Mach-O at /Library/Caches/com.apple.act.mond
  • Windows: PowerShell variant, persistence via %PROGRAMDATA%\system.bat and Run key MicrosoftUpdate
  • Linux: Python script at /tmp/ld.py
  • RAT enables remote control of the infected system
PHASE 5/7 · Defense Evasion

The dropper deleted itself and restored a clean package.json.

T1070.004 – File Deletion T1027 – Obfuscated Files or Information
  • Self-deletion of setup.js after execution
  • Replacing the tampered package.json with a clean version
  • Complicates later forensic checks – clean systems don't rule out infection
PHASE 6/7 · Command and Control

All variants beaconed regularly to a C2 server and awaited commands.

T1071.001 – Web Protocols T1132.001 – Standard Encoding
  • Beacon every 60 seconds via HTTP POST with Base64-encoded JSON
  • C2 indicator: domain sfrclak[.]com and IP 142.11.206.73 on port 8000
  • Capabilities: system recon, file listing, arbitrary command execution, loading further payloads
PHASE 7/7 · Impact: Data Exposure

On infected build hosts, credential exposure and host compromise were the likely impact.

T1552 – Unsecured Credentials T1005 – Data from Local System
  • Affected hosts often hold cloud, Git, SSH and deployment credentials
  • Assume possible secret exfiltration and full host compromise
  • CISA/TuxCare recommend rotating credentials and remediating systems
Short & clear answers
Frequently asked questions about this incident
As a website operator, am I affected by the axios incident?
Website visitors and running websites in the browser are not affected, because the malicious code only executed during the npm installation process. Potentially affected are your development machines, CI/CD runners, build servers and container builds if they ran an npm install, npm update or build with axios@1.14.1 or axios@0.30.4 on March 31, 2026 between roughly 00:21 and 03:29 UTC. The most important term to search for is the injected dependency plain-crypto-js.
How do I check whether the malicious packages were installed?
Search your lockfiles with the command grep -E "axios@(1\.14\.1|0\.30\.4)|plain-crypto-js" package-lock.json yarn.lock and use npm ls axios plain-crypto-js --all to display installed versions. Also search package caches and artifact repositories for axios@1.14.1, axios@0.30.4 and plain-crypto-js@4.2.1. Note: a system that looks clean today does not rule out a past infection, since the malicious code attempted to erase its own traces.
Which axios version is safe and what should I do now?
According to axios and CISA, the safe fallback versions are axios@1.14.0 and axios@0.30.3. The malicious versions were already removed from npm on March 31, 2026. First define your investigation scope, check lockfiles, caches and network data, and switch to a verified, uncompromised version with locked resolution.
How can I detect an actual infection on my build server?
The key network indicator is the domain sfrclak[.]com or the IP address 142.11.206.73 on port 8000; check historical DNS, proxy, firewall and EDR data for such connections. The malware WAVESHAPER.V2 drops OS-specific files, such as /Library/Caches/com.apple.act.mond (macOS), %PROGRAMDATA%\system.bat with the MicrosoftUpdate autostart entry (Windows), or /tmp/ld.py (Linux). It beacons to its command-and-control server every 60 seconds via HTTP POST.
What should I do if my system was infected?
Since this is a remote access trojan, you should assume a host compromise and possible leakage of credentials, because build and development machines often hold cloud, Git, SSH and deployment secrets. Therefore rotate all affected credentials and follow the cleanup and hardening steps in the official CISA alert of April 20, 2026. No public, verified overall figures on affected companies are available, so when in doubt, investigate thoroughly.
More security news
You might also be interested in
Critical Elementor Pro Flaw: Attackers Can Fully Take Over WordPress Sites
A file upload bug in Elementor Pro up to 4.2.1 allows RCE without login. Version 4.2.2 fixes the flaw – update now!
Pods Plugin: Critical Flaw Enables Admin Takeover, No Login
A critical flaw in the WordPress plugin Pods lets attackers overwrite admin passwords without login. Over 100,000 sites are affected.
miniOrange SAML SSO: Critical Bypass Turns Attackers Into Admins
Two critical auth bypasses in the miniOrange SAML SSO plugin allow forged SAML assertions—up to full WordPress admin access.