The March 2026 Axios NPM Supply Chain Attack: Detection with ArmorCode

Blog March 31, 2026
Karan Bansal, AI Architect & Team Lead, ArmorCode
AI Architect & Team Lead, ArmorCode
ArmorCode Blog - The March 2026 Axios NPM Supply Chain Attack: Detection with ArmorCode

On March 30-31, 2026, the Axios NPM package was compromised in one of the most significant NPM supply chain attacks to date. With over 100 million weekly downloads, Axios is a foundational HTTP client used across the JavaScript ecosystem. An attacker hijacked the NPM account of the lead maintainer and published two malicious versions that deployed a cross-platform Remote Access Trojan (RAT) on any machine that ran npm install. This follows the September 2025 NPM supply chain attack that compromised 200+ packages, and shares the same underlying pattern: compromised maintainer credentials used to publish poisoned versions.

This post covers what happened, what makes this attack technically distinct, and how our ArmorCode customers can detect any exposure across their application portfolio.

The Attack: Account Hijack to RAT Deployment

The attacker compromised the NPM credentials of Axios maintainer jasonsaayman and changed the account email to ifstap@proton.me. Rather than modifying the Axios code directly, the attacker published two new versions that added a single phantom dependency:

  • axios@1.14.1 (1.x release line)
  • axios@0.30.4 (0.x legacy line)

Both versions inject plain-crypto-js@^4.2.1 into the dependency tree. This package was created by the attacker (staging account: nrwise@proton.me) and has no legitimate purpose. It is never imported or referenced anywhere in the Axios codebase. Its only function is to execute a postinstall script that drops a platform-specific RAT.

Advisory: GHSA-fw8c-xr5c-95f9

Timeline (UTC)

TimestampEvent
Mar 30, 05:57plain-crypto-js@4.2.0 published (clean decoy staging)
Mar 30, 23:59plain-crypto-js@4.2.1 published with postinstall RAT dropper
Mar 31, 00:05Automated malware detection flags plain-crypto-js (~6 minutes)
Mar 31, 00:21axios@1.14.1 published with malicious dependency
Mar 31, 01:00axios@0.30.4 published (39 min later, targeting legacy users)
Mar 31, ~03:15NPM removes both compromised Axios versions

The attack window was approximately 3-4 hours. Any project that ran npm install with caret ranges (e.g., ^1.14.0) during this window could have resolved to the compromised version.

How the Malware Works

The plain-crypto-js@4.2.1 package contains a setup.js dropper (4,209 bytes) that executes via NPM’s postinstall lifecycle hook. The dropper uses two-layer obfuscation: reversed Base64 combined with an XOR cipher (key derived from OrDeR_7077, constant 333). Sensitive Node.js modules (fs, os, child_process) are loaded dynamically at runtime to bypass static analysis.

Platform-specific payloads:

PlatformDeliveryArtifact PathTechnique
macOSAppleScript + Zsh/Library/Caches/com.apple.act.mondSpoofs Apple daemon name
WindowsVBScript + PowerShell%PROGRAMDATA%\wt.exeCopies PowerShell to evade EDR
Linuxcurl + nohup/tmp/ld.pyDetached Python process

The macOS RAT beacons to sfrclak.com:8000 every 60 seconds with system fingerprinting data. It supports remote command execution, directory enumeration, binary deployment with ad-hoc code signing, and process termination.

Anti-forensics: After executing, the dropper deletes setup.js and the malicious package.json, then renames a pre-staged clean package.md to package.json. This means inspecting node_modules/plain-crypto-js/ after installation shows version 4.2.0 metadata, while the 4.2.1 dropper has already executed. The node_modules/plain-crypto-js/ directory itself still persists, which makes it a stronger forensic artifact than the package metadata inside it.

What Made This Axios NPM Attack Different

Unlike the September 2025 attack (browser-only crypto-stealing malware via phishing), the Axios compromise deployed a full-featured RAT with system-level access. Key differences:

 September 2025 AttackMarch 2026 Axios Attack
VectorMaintainer phishing (200+ accounts)Single account credential theft
PayloadBrowser-only crypto address replacementCross-platform RAT with full system control
Scope27+ packages, billions of downloads1 package (Axios), 100M+ weekly downloads
ExecutionRuntime (in browser)Install-time (postinstall hook)
PersistenceNone (in-memory only)RAT with C2 beaconing every 60 seconds
Detection signalModified code in the package sourcePhantom dependency never imported in code

A critical detection signal: the legitimate axios@1.14.0 was published via GitHub Actions with OIDC Trusted Publishing. The malicious 1.14.1 was published manually using a stolen NPM token with no corresponding GitHub tag, release, or repository commit. This publishing-method mismatch is a strong indicator of compromise that automated systems can check.

Security researchers identified two additional packages distributing the same RAT payload through vendored dependencies:

  • @shadanai/openclaw (v2026.3.31-1, v2026.3.31-2)
  • @qqbrowser/openclaw-qbot (v0.0.130)

These use the same setup.js dropper and C2 infrastructure, suggesting a broader campaign beyond just Axios.

Detecting the Axios Supply Chain Attack with ArmorCode

ArmorCode provides three ways to check your exposure to this attack. All three have been updated with out-of-the-box support for this specific attack, requiring no manual configuration.

1. Ask Anya

The fastest way to check your exposure is to ask Anya, ArmorCode’s virtual security champion built-in the ArmorCode Agentic AI Platform. A default prompt is already available:

“Am I vulnerable to the Axios supply chain attack?”

Anya will surface affected findings with direct links to drill down, highlight which applications in your portfolio contain the compromised components, and provide risk context with severity classification.

2. Findings Page: Saved View

A pre-built saved view called “Axios Supply Chain Attack” is available on the Findings page. Open it to instantly see all findings matching the compromised packages across your connected scanners.

The view uses this query:

(componentAffectedVersion IN ('1.14.1', '0.30.4') AND componentName IN ('axios'))
OR (componentAffectedVersion IN ('4.2.1') AND componentName IN ('plain-crypto-js'))

This surfaces findings from all your integrated tools, including SCA scanners, dependency analyzers, and any source that reports component-level vulnerability data.

3. SBOM Page: Saved Views

Two saved views are available under the “Axios Supply Chain Attack” folder on the SBOM (Assets) page:

  • Axios Affected Versions: shows all assets containing axios@1.14.1 or axios@0.30.4
  • Plain-Crypto-JS Affected Version: shows all assets containing plain-crypto-js@4.2.1

These SBOM views show which applications and repositories have the compromised components in their software bill of materials, even before any scanner has flagged a specific vulnerability finding. This is particularly useful for catching transitive dependencies where Axios is pulled in by another package.

Packages and Versions to Look For

PackageVersionRisk
axios1.14.1Compromised: pulls in RAT via plain-crypto-js
axios0.30.4Compromised: pulls in RAT via plain-crypto-js
plain-crypto-js4.2.1Malware payload: RAT dropper with postinstall hook

Finding plain-crypto-js in any application is a stronger indicator of active compromise than the Axios versions alone. This package was created entirely by the attacker and has no legitimate use in any project.

Indicators of Compromise

If your scanners or SBOM data show any of the above packages, check for these artifacts on machines where npm install was run:

IndicatorValue
C2 Domainsfrclak.com
C2 IP142.11.206.73
C2 Port8000
macOS artifact/Library/Caches/com.apple.act.mond
Windows artifacts%PROGRAMDATA%\wt.exe, %TEMP%\6202033.*
Linux artifact/tmp/ld.py
NPM directorynode_modules/plain-crypto-js/ (persists after self-cleanup)

If any RAT artifacts are found, assume full system compromise. Rotate all credentials accessible from that machine: NPM tokens, AWS keys, SSH keys, CI/CD secrets, database passwords, and API keys.

Protecting Your Organization Going Forward

For a detailed guide on long-term NPM supply chain defenses, including lockfile enforcement, SemVer range hardening, dependency cooldowns, and trusted publishing, see our companion post: Defending Against NPM Supply Chain Attacks: A Practical Guide.

ArmorCode helps security teams respond to NPM supply chain incidents in seconds. Anya, Findings saved views, and SBOM saved views are available now with no additional setup required.

See how Anya, ArmorCode’s agentic AI framework for enterprises can keep applications safe from supply chain attacks in this demo video

References