Axios NPM Supply Chain Attack: Sapphire Sleet’s Unified RAT Analysis | Securelic

Axios NPM Supply Chain Attack: A Deep Dive into the Sapphire Sleet RAT Campaign

Published: 2026-04-02

From "Phantom" Dependencies to Multi-Platform Backdoors: A deep dive into how a hijacked maintainer account deployed cross-platform malware to millions of developers.

Securelic Insight: Infographic summary of the Axios NPM supply chain attack and Sapphire Sleet's unified RAT mechanics.

The software supply chain has just witnessed one of its most significant breaches of 2026. Axios, the ubiquitous JavaScript HTTP client boasting over 100 million weekly downloads, was compromised in a sophisticated campaign that turned a trusted development tool into a delivery vehicle for a cross-platform Remote Access Trojan (RAT).

In this deep dive, we break down how the attack bypassed modern security headers, the technical mechanics of the "Phantom Dependency" strategy, and the urgent steps your DevOps team must take to secure your pipeline.

The Incident: Timeline of a 100M-Download Compromise

On March 31, 2026, threat actors successfully hijacked the npm account of a lead Axios maintainer. By bypassing the project’s standard GitHub-to-NPM CI/CD pipeline, the attackers published two "poisoned" versions directly to the official registry:

  • Axios 1.14.1 (Modern release)
  • Axios 0.30.4 (Legacy release)

The "Phantom Dependency" Strategy

The attackers did not modify the core Axios source code a move designed to evade static analysis tools that monitor repository changes. Instead, they performed a surgical manifest-only injection, adding a new dependency: ([email protected].)

This package was a "wolf in sheep’s clothing." The threat actor (identified as Sapphire Sleet, a North Korean-nexus group) had published a clean version (4.2.0) eighteen hours earlier to build a "safe" reputation before releasing the malicious patch.

Technical Breakdown: How the RAT Operates

When a developer or a CI/CD runner executes npm install, the postinstall hook in plain-crypto-js triggers node setup.js. This script functions as a Stage-1 dropper with highly advanced capabilities.

1. XOR Obfuscation and OS Fingerprinting

The setup.js loader uses a layered XOR cipher (Key: OrDeR_7077) to reconstruct malicious strings at runtime. It identifies the host's operating system and reaches out to a Command & Control (C2) server at sfrclak[.]com:8000.

2. The Multi-Platform Payload

The C2 delivers a secondary "Unified RAT" tailored to the victim's architecture:

Operating SystemPayload ArtifactExecution Method
Windows%PROGRAMDATA%\wt.exeMasquerades as "Windows Terminal"; establishes registry persistence.
macOS/Library/Caches/com.apple.act.mondAppleScript-driven download; identified as the WAVESHAPER backdoor.
Linux/tmp/ld.pyPython-based loader executed via nohup for background persistence.

3. Anti-Forensic "Self-Erasure"

To keep the infection silent, the malware performs an immediate cleanup. After the RAT is active, setup.js deletes itself and overwrites the package.json manifest with a clean decoy. If a security engineer checks the node_modules folder minutes later, the malicious hooks have vanished.

Why OIDC Provenance Didn't Save Us

The most alarming aspect of this breach is that legitimate Axios releases use OIDC (OpenID Connect) Trusted Publishing. This cryptographically links npm packages to specific GitHub Actions.

However, because the npm registry still allows "Mixed Mode" publishing, the attacker was able to use a stolen manual API token to push the poisoned versions. The registry accepted the upload despite it lacking the SLSA build attestations that have guarded Axios for over a year.

Securelic Remediation Guide: How to Respond

If your organization uses Axios, follow this emergency checklist immediately:

1. Audit and Pin Versions

Check your package-lock.json or yarn.lock for the malicious versions. Immediately downgrade and pin to the last known safe releases:

Securelic Tip: Avoid using carets (^) or tildes (~) in your package.json for critical dependencies. Use exact versioning to prevent auto-upgrades to unvetted patches.

2. Flush Caches and Rotate Secrets

Run npm cache clean--force to ensure your build servers aren't pulling the poisoned versions from a local cache.

Assume Compromise: If the malware was installed, assume all environment variables (AWS keys, SSH tokens, NPM secrets) on that machine have been exfiltrated. Rotate them now.

3. Implement Egress Filtering

The Axios RAT requires a connection to sfrclak[.]com. Configure your CI/CD firewalls to block all outbound traffic except to a strictly defined allowlist of package registries.

4. Global Script Hardening

Disable postinstall scripts globally unless explicitly required:

Conclusion: The New Normal of Dependency Management

The Axios attack is a stark reminder that even the most trusted libraries are subject to account takeovers. At Securelic, we advocate for a "Zero Trust" approach to dependencies. Monitoring for version drift and enforcing build provenance are no longer optional—they are the baseline for survival in the 2026 threat landscape.

Stay Secure

C2 Domain: sfrclak[.]com

C2 IP: 142.11.206.73

File Hashes (RAT):

macOS: 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a

Linux: fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf