Backdoored axios npm Releases Deliver Cross-Platform RAT, Huntress Reports

· Original article ↗

Summary

Huntress reports attackers compromised the axios npm maintainer account and published malicious releases that installed a cross-platform RAT. At least 135 monitored endpoints contacted C2 infrastructure; affected systems should be rebuilt and credentials rotated.

Key points

  • Attackers used compromised maintainer credentials to publish axios 1.14.1 and 0.30.4 with a malicious plain-crypto-js dependency that ran a post-install payload.
  • The approximately three-hour exposure affected macOS, Windows, and Linux; Huntress observed at least 135 endpoints contacting the attackers' C2.
  • The RAT collected system and user information, beaconed every 60 seconds, and supported remote command execution and binary injection. Windows infections also established login persistence.
  • The dropper used obfuscation and anti-forensics, including deleting its files and replacing the package manifest; on Windows it disguised PowerShell as wt.exe.
  • Huntress and other researchers cited overlaps with DPRK-linked activity; Google Threat Intelligence Group attributed the attack to UNC1069, described as a suspected North Korean threat actor.
  • The malicious packages were removed and the identified C2 infrastructure was offline at the time of the update; Huntress advised rebuilding affected systems and rotating credentials.
  • The article recommends checking lockfiles and endpoint artifacts, pinning safe axios versions, using lockfiles and npm ci, and removing long-lived npm publishing tokens.

Article Details

Attack Vectors
  • An attacker used compromised npm maintainer credentials and a long-lived access token to publish backdoored axios releases directly through the npm CLI, bypassing the usual GitHub Actions OIDC publishing workflow.
  • The backdoored axios releases introduced plain-crypto-js as a phantom dependency. Its post-install hook ran setup.js and delivered platform-specific RAT payloads to macOS, Windows, and Linux systems.
  • The Windows RAT established persistence with a hidden system.bat file and a MicrosoftUpdate registry Run key; it also supported remote script execution and in-memory .NET assembly loading.
  • The macOS payload was downloaded with curl as a Mach-O binary and saved under a name resembling an Apple system file. The Linux payload was downloaded and run as a Python script.
Defensive Notes
  • Audit lockfiles and environments for axios versions 1.14.1 or 0.30.4, any version of plain-crypto-js, and the listed platform-specific artifacts.
  • Treat systems that installed the malicious packages or executed their payloads as compromised. Rebuild affected systems from known-good images rather than attempting in-place cleanup.
  • Rotate credentials accessible from affected systems, including npm tokens, SSH keys, cloud credentials, API keys, OAuth tokens, and CI/CD secrets.
  • Block the reported C2 domain and IP, and investigate network and DNS logs for connections to them on port 8000.
  • Pin dependencies, commit lockfiles, use npm ci in CI/CD, consider disabling install scripts, and remove long-lived npm tokens even when OIDC Trusted Publishing is configured.

Indicators of compromise

TypeIndicatorContext
DOMAINcallnrwise[.]comDomain the article identifies as linked to the compromise and as sharing a theme with calltan[.]com.
DOMAINcalltan[.]comDomain linked by researchers at Volexity to a binary recently used by DPRK actors; the article notes it contacted systems with a similar script and registry-key pattern.
DOMAINsfrclak[.]comReported command-and-control domain used by the RAT.
EMAILifstap@proton[.]meEmail address the attacker set on the compromised axios maintainer npm account.
EMAILnrwise@proton[.]meEmail address on the attacker-created npm account used to publish plain-crypto-js.
IPV4142[.]11[.]206[.]73Reported C2 IP address used on port 8000.
SHA107d889e2dadce6f3910dcbc253317d28ca61c766SHA-1 hash listed for the malicious plain-crypto-js 4.2.1 package.
SHA12553649f2322049666871cea80a5d0d6adc700caSHA-1 hash listed for the malicious axios 1.14.1 package.
SHA1d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71SHA-1 hash listed for the malicious axios 0.30.4 package.
SHA256617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101SHA-256 hash listed for the Windows Stage 2 PowerShell RAT.
SHA25692ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645aSHA-256 hash listed for the macOS Mach-O universal RAT binary.
SHA256f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cdSHA-256 hash listed for the Windows Stage 1 PowerShell download cradle.
SHA256fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cfSHA-256 hash listed for the Linux Python RAT script.
URLhxxp[:]//sfrclak[.]com:8000/6202033Reported C2 endpoint used to download payloads and communicate with the RAT.

MITRE ATT&CK

T1027 · Obfuscated Files or Informationsetup.js used reversed Base64 strings and an XOR scheme to obscure module names, commands, paths, and the C2 URL.T1036.005 · Match Legitimate Resource Name or LocationThe attacker copied powershell.exe to wt.exe to make it resemble the legitimate Windows Terminal filename.T1041 · Exfiltration Over C2 ChannelThe RAT sent reconnaissance data to the C2 in its initial beacon and subsequent communications.T1059.001 · PowerShellThe Windows RAT used PowerShell for payload execution and supported remote script execution.T1059.002 · AppleScriptOn macOS, osascript ran an AppleScript that downloaded the RAT with curl.T1059.003 · Windows Command ShellThe Windows chain used cmd.exe to invoke curl and execute the downloaded script.T1059.004 · Unix ShellThe Linux delivery command used a shell to download and launch the Python RAT.T1059.006 · PythonThe Linux payload was a Python RAT executed with python3.T1059.007 · JavaScriptThe plain-crypto-js post-install hook ran the JavaScript setup.js dropper.T1070.004 · File DeletionThe dropper deleted itself and package.json, then replaced the manifest with a clean-looking stub; Windows launch scripts also self-deleted.T1071.001 · Web ProtocolsThe RAT used HTTP POST requests to communicate with its C2.T1083 · File and Directory DiscoveryThe RAT enumerated user directories and filesystem locations, including platform-specific directories.T1105 · Ingress Tool TransferThe dropper and RAT downloaded platform-specific payloads from the reported C2.T1195.002 · Compromise Software Supply ChainThe attacker published backdoored axios releases that introduced a malicious dependency and post-install payload.T1547.001 · Registry Run Keys / Startup FolderThe Windows RAT created a MicrosoftUpdate registry Run key pointing to a hidden system.bat file.

People

Threat Actors

Products

Related Articles