Axios HTTP Client Compromise

Education
News
Threats
Vulnerabilities

Axios HTTP Client Compromise


by Mike Puglia

4 min read


On March 31st between 00:21 and 03:20 (UTC Time), an attacker compromised the NPM account of the head Axios maintainer and replaced a dependency with a heavily obfuscated Remote Access Trojan (RAT). Axios HTTP Client is one of the worlds most used clients with 400 million downloads a month. Any developer or CI/CD pipeline that ran an install during that 3 hours would have downloaded the malware and compromised the machine. Given the large amount of automation installs, this likely impacted thousands of organizations.

Kaseya & Datto Detection

The prevalence for MSPs and SMBs will be limited given that most are not building software leveraging Axios, but the impact for those affected is very high. Datto EDR and RocketCyber detect this type of attack and we detected and isolated two organizations during the incident window. We continue to threat hunt across all endpoints for Indicators of Compromise to determine if any post compromise activities have occurred.

A snippet from the alert detail (below) shows the malicious activity we detected. The attack copies the PowerShell executable (as wt.exe) into the ProgramData directory (on Windows), downloads the PowerShell script to the to the users Temp directory and then executes the payload with the hidden and bypass flags – generating Defensive Evasion Alert.

We have also seen similar alerts through integrations with Microsoft Defender for Business/Endpoint and other EDR products.

Technical Details

The compromise started with an account takeover of Axios head maintainer’s account (jasonsaayman) and then the attacker changed the account email to a ProtonMail address (ifstap@proton.me). Now in control, the attacker published a legitimate “plain-crypto-js@4.2.0” file to establish trust.

Approximately 18 hours later, the attacker compromised Axios version 1.14.1 and 0.30.4 by adding a hidden dependency named “plain-crypto-js@4.2.1”. This file acts as an obfuscated dropper to install the RAT on end systems. Installs, most automated, during this time automatically installed the cross platform RAT (Windows, Mac and Linux). After compromise, the malware deleted its own files and restored package.json to a clean state to evade detection and forensic analysis.

If you were running 1.14.0 or older you were not impacted. If you updated during on March 31st between 00:21 and 03:20 (UTC Time) you should assume compromise and wipe the machine.

The dropper is tracked as SILKBELL and, based on the OS, installs the RAT on Windows, macOS and Linux endpoints. The RAT is tracked as WAVESHAPER.V2 and beacons every 60 seconds to get commands from the threat actor, essentially gives them full control of the machine. It establishes persistence (on Windows) by creating a new Registry Run Key which launches the RAT on every login (key below):

Key: HKCUSoftwareMicrosoftWindowsCurrentVersionRunMicrosoftUpdate
File: %PROGRAMDATA%system.bat

Google/Mandiant has attributed this to UNC1069, a North Korean threat actor group active since at least 2018.

Detection & IOCs

To determine if your NPM was compromised take these steps:

In every Node.js repository, search package-lock.json, pnpm-lock.yaml, or yarn.lock for: axios@1.14.1, axios@0.30.4, plain-crypto-js@4.2.1 – if found the endpoint is compromised. Additionally, the following command can be used “find node_modules -name plain-crypto-js -type d” – if the directory is found, the endpoint is comrpomised.

Looking for IoCs from the Dropper/RAT:

File System

Operating SystemPath
Windows%PROGRAMDATA%wt.exe
Windows%TEMP%6202033.ps1
Windows%TEMP%6202033.vbs
Mac/Library/Caches/com.apple.act.mond
Linux/tmp/ld.py

Persistence (Windows Registry)

KeyHKCUSoftwareMicrosoftWindowsCurrentVersionRunMicrosoftUpdate
File%PROGRAMDATA%system.bat

File Hash

FileTypeHash
Axios 1.14.1SHA12553649f232204966871cea80a5d0d6adc700ca
Axios 0.30.4SHA1d6f3f62fd3b9f5432f5782b62d8cfd5247d5ee71
plain-crypto-jsSHA107d889e2dadce6f3910dcbc253317d28ca61c766
SILKBELLSHA256e10b1fa84f1d6481625f741b69892780140d4e0e7769e7491e5f4d894c2e0e09
WAVESHAPER.V2 – LinuxSHA256fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
WAVESHAPER.V2 – MacOSSHA25692ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
WAVESHAPER.V2 – WindowsSHA256617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101
system.batSHA256f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cd
plain-crypto-js-4.2.1.tgzSHA25658401c195fe0a6204b42f5f90995ece5fab74ce7c69c67a24c61a057325af668

Mike Puglia

General Manager, Security Products

Mike Puglia brings over 25 years of technology, strategy, and cybersecurity experience to his role as Kaseya’s General Manager of Security Products. He is responsible for all products across Kaseya’s portfolio of security solutions.

Prior to joining Kaseya, Mike led the technical program management integration of real-time collaboration technologies into Salesforce’s Chatter Social Enterprise platform. Earlier in his career, Mike served in technical and product roles at applications security company Veracode, database security company Lumigent Technologies and network security Bluesocket.

Mike holds a Bachelor of Science in Electrical Engineering from the University of New Hampshire and an MBA from the Carroll Graduate School of Management at Boston College.