Axios npm Supply Chain Compromise: How A Trusted Dependency Became A Cross-Platform Backdoor

An in-depth analysis of the axios npm supply chain compromise, how the malicious dependency executed, why it spread fast, and the key IOCs to track.

Isolate Compromised Dependencies Fast
  • April 1, 2026

One of the most popular HTTP client libraries in use, Axios, with more than 100 million weekly downloads from npm, was compromised and utilized as a distribution channel for a cross-platform remote access trojan (RAT) on March 30, 2026.

The attacker was able to gain access to the npm account associated with the lead maintainer and released two malicious versions, targeting both the actively maintained 1.x and previously maintained 0.x lines in a short time. The attacker did not modify Axios; instead, a backdoor was added in the form of a dependency, which was only meant to distribute persistent malware targeting macOS, Windows, and Linux. After executing, the malware deleted itself, making it challenging to investigate.

What Happened When axios Was Backdoored

An attacker used compromised publisher access to push two backdoored axios releases: axios@1.14.1 (tagged latest) and axios@0.30.4 (tagged legacy). The backdoored packages included the addition of a new dependency, plain-crypto-js@4.2.1, intended to run a post-install routine and stage the cross-platform remote access tool.

The attacker changed the maintainer account email to a proton[.]me address and published the package using the long-lived token instead of the OIDC publishing method. The nuance is important because, in the presence of OIDC and a token, the token is given precedence, and this is an important factor in explaining the failure modes of “secure publishing” mechanisms.

Incident Execution Timeline

Supply chain infiltration and remediation stages.

Timestamp (UTC)
Event Description
March 30, 2026 05:57
Staging Phase: Initial release of plain-crypto-js@4.2.0. Published as a clean decoy via the “nrwise” account to establish registry history.
March 30, 2026 23:59
Weaponization: Malicious update v4.2.1 deployed. Payload activated via a malicious "node setup.js" postinstall script.
March 31, 2026 00:05
Early Detection: Automated npm security scanners successfully flag the package as malware just six minutes after publication.
March 31, 2026 00:21
Critical Poisoning: Malicious axios@1.14.1 published through the compromised “jasonsaayman” account to initiate the supply chain breach.
March 31, 2026 01:00
Legacy Attack: Expansion of the attack surface by poisoning the legacy axios@0.30.4 branch, targeting older enterprise dependencies.
March 31, 2026 ~03:30
Remediation: npm administration intervenes to purge all compromised versions and revoke associated security tokens.

Supply Chain Indicator – OIDC Metadata Mismatch

Why This Three-Hour Window Created Outsized Risk

The reason why this escalated so rapidly is that axios is not an edge case library, and its use is widespread throughout JavaScript applications, both client-side and server-side. This means that even a temporary malicious version can rapidly disseminate through automated build and deploy processes.

Timing also contributed to why this instance was so damaging. The first instance was seen just a minute and a half after one version of this malicious axios went live. This means, effectively, that the perpetrator did not even have to trick individuals into opening files, as the standard behavior of updating versions would disseminate them rapidly throughout the ecosystem.

The overall takeaway here, however, is that supply chain attacks are increasingly similar to third-party attacks in terms of overall risk and damage potential. Third-party involvement in breaches double from 15% to 30% over the course of the last year, and a median of 94 days to remediate leaked secrets discovered in a GitHub repository.

How The Malicious Dependency Turned Installs Into Remote Access

While the package name and versions were specific, the method used was again familiar. This time, it was “install time execution.” Once plain-crypto-js@4.2.1 was added as part of the dependency list, the post-install script ran a script setup.js, using layered obfuscation. Therefore, it would not be immediately clear what the script was doing.

In the technical details, the method used was described as a two-part decoding process using reversed Base64 and an XOR cipher with the key “OrDeR_7077.” Once decoded, the installer-stage code reached out to the command and control and pulled down the payloads. This same dependency could be used to attack macOS, Windows, and Linux systems.

macOS

  • Execution Vector: AppleScript dropper
  • C2 Communication: packages.npm.org/product0
  • Payload Location: /Library/Caches/com.apple.act.mond (masquerading as Apple cache)
  • Execution: Background execution via /bin/zsh with modified permissions (chmod 770)
  • Evasion: Self-deleting dropper to reduce forensic artifacts

Windows

  • Execution Vector: VBScript PowerShell multi-stage chain
  • C2 Communication: packages.npm.org/product1
  • Masquerading: PowerShell binary copied to %PROGRAMDATA%\wt.exe
  • Execution: Hidden PowerShell invocation with execution policy bypass
  • Payload Delivery: In-memory execution via dynamically retrieved script (fileless)
  • Persistence Artifact: %PROGRAMDATA%\wt.exe

Linux

  • Execution Vector: Direct Python RAT deployment
  • C2 Communication: packages.npm.org/product2
  • Payload Location: /tmp/ld.py
  • Execution: Detached execution via nohup
  • Evasion: Traffic disguised to resemble npm-related activity

Another network behavior, which seems intentional, is that it “blends in.” The HTTP POST bodies seem designed to look like strings from a registry, with different strings depending on the OS. The infrastructure uses a constant path (/6202033) as a campaign identifier, while the beacon uses an intentionally out-of-date user-agent string across all OS. These things matter because they suggest an operator thought about scale, noise, and repeatability, rather than just trying some one-off stunt.

MITRE ATT&CK® Matrix Mapping
ID
Technique
Observed Behavior & Description
T1195.001
Supply Chain Compromise
Compromised software dependencies via backdoored Axios releases, introducing the phantom dependency plain-crypto-js.
T1078.004
Valid Accounts: Cloud
The attacker used a compromised npm maintainer account to publish malicious axios@1.14.1 and axios@0.30.4 directly to the registry.
T1098
Account Manipulation
The maintainer account’s email was changed to an attacker-controlled address to retain persistence and control.
T1059.007
Interpreter: JavaScript
The malicious dependency’s postinstall hook executed node setup.js during package installation.
T1027.013
Obfuscated Files
setup.js used reversed Base64 plus XOR to encode strings holding module names, commands, and C2 details.
T1059.002
Interpreter: AppleScript
On macOS, the dropper wrote an AppleScript to a temp file to download the Mach-O RAT via curl.
T1059.001
Interpreter: PowerShell
Windows payload retrieved as a PowerShell script and executed with hidden window and policy-bypass parameters.
T1071.001
Application Layer Protocol
Implants and staging logic used HTTP POST beacons to sfrclak[.]com:8000 with OS-specific bodies.
T1547.001
Boot Autostart Execution
Windows persistence via HKCU\...\Run value MicrosoftUpdate pointing to a malicious batch file.
T1036.005
Masquerading
Used benign-looking names (e.g., wt.exe, com.apple.*) to blend into legitimate system processes.

Why Supply-Chain Attacks Keep Scaling In Open Source Ecosystems

The attacker is targeting a distribution chokepoint, not a particular organization. If an attacker can publish to a high-dependency package, he can reach countless downstream builds in parallel. Developer workstations and CI systems are especially appealing because they are often close to secrets, signing keys, and deployment paths.

Last year, over 454,600 new malicious packages were detected, bringing the cumulative total to over 1.233 million malicious packages across major registries. Additionally, the same system also revealed that “trillions of downloads are consumed annually, and the rate is growing fast year over year.” These numbers help illustrate why these supply chain attacks continue to prove successful: the distribution surface area is vast, and the cost to attempt such an attack is low.

The history of actual attacks demonstrates that this is not an isolated incident and that this is not a one-library or one-year problem. The event-stream incident, included malicious code that was introduced through a dependency that was added by a new maintainer, and this incident was targeting a particular downstream application environment. The ua-parser-js incident included malicious versions that were published to npm and later documented in the GitHub Advisory Database. Thus, the axios incident is an escalation, especially regarding its speed and cross-platform nature, but it is not an isolated incident.

Indicators Of Compromise For The axios npm Supply Chain Compromise

Threat Intelligence Report
axios npm Supply Chain Compromise

Detailed investigation into malicious package injections and multi-platform exfiltration techniques.

Affected Packages
• axios@1.14.1 MALICIOUS
• axios@0.30.4 MALICIOUS
• plain-crypto-js@4.2.1 DEP
• plain-crypto-js@4.2.0 PRE-STAGE
Publisher Info
Maintainer Email ifstap@proton[.]me
Pre-staging Account nrwise@proton[.]me
Network Infrastructure
Asset Indicators
sfrclak[.]com
142.11.206[.]73:8000
calltan[.]com
callnrwise[.]com
User-Agent Pattern
mozilla/4.0 (compatible; msie 8.0; windows nt 5.1; trident/4.0)
Endpoint Signatures
hxxp://sfrclak[.]com:8000/6202033
macOS: /product0
Windows: /product1
Linux: /product2
Cryptographic Fingerprints
Dropper: setup.js XOR: OrDeR_7077
WINDOWS S1 f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cd
WINDOWS S2 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101
MACOS PAYLOAD 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
LINUX PAYLOAD fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf

Conclusion: When a Trusted Dependency Becomes the Delivery System

The axios compromise shows how quickly software trust can turn into remote access. One of the most widely used JavaScript libraries in the world became a cross-platform RAT distributor, not because developers downloaded something suspicious, but because normal dependency resolution did exactly what it was designed to do. That is what makes supply chain compromise so dangerous. The attack rides on trust, speed, and automation.

Why This Threat Scales So Fast

This was not a niche package or a targeted one-off.

  • Axios serves more than 100 million weekly downloads
  • The malicious window lasted only hours, yet installs began almost immediately
  • The backdoor was delivered through install-time execution, not user action
  • macOS, Windows, and Linux were all included in the same campaign

Once the poisoned version entered CI pipelines and developer systems, the attacker no longer needed phishing. The ecosystem did the distribution for them.

Where Xcitium Changes the Outcome

If you have Xcitium, this attack would NOT succeed.

With Xcitium Advanced EDR, the post-install chain fails at execution.

  • Obfuscated setup routines are intercepted when they try to run
  • Downloaded payloads can execute, but code can run without being able to cause damage
  • Remote access never becomes persistence, credential theft, or downstream compromise

The attacker may reach the environment, but not the real system.

Secure the Build Chain Before It Ships the Breach

Supply chain attacks win when trusted software is allowed to execute blindly. Defend the endpoint, protect the build pipeline, and stop malicious code at runtime before one dependency becomes thousands of compromises.

Like what you see? Share with a friend.

Move Away From Detection With Patented Threat Prevention Built For Today's Challenges.

No one can stop zero-day malware from entering your network, but Xcitium can prevent if from causing any damage. Zero infection. Zero damage.

Book a Demo