Malicious code in axois-http (npm)
axois-http is a typosquat package on npm containing malicious postinstall code that exfiltrates platform information and, on Windows/WSL systems, downloads and executes a native binary from a hardcoded IP endpoint.
- Disclosed
- Last updated
- Blast radius
- All npm users who installed axois-http
- Ecosystems
- Attack vectors
- Affected entities
- axois-httpTyposquat of axios; contains malicious postinstall script
axois-http is a typosquat of the legitimate axios package published to npm. The package exports an empty object and contains no legitimate functionality.
The malicious behavior is triggered via scripts/postinstall.js at npm install time. The script unconditionally POSTs a JSON payload containing platform detection information (Windows, macOS, Linux, with WSL detection via /proc/version and /proc/sys/kernel/osrelease) to a hardcoded bare-IP endpoint at http://193.70.34.101:20099/vote.
On Windows or WSL systems, the postinstall script further decodes hidden payloads using XOR decryption (key 'stf2026'). It decodes a URL (prefix 'https://') and a PowerShell launcher command, then downloads a native binary to %TEMP%\main.exe via fetchAddonBinary and executes it detached with windowsHide:true and stdio:'ignore'. The URL, command, and bridge script fragments are stored as byte arrays and decoded at runtime solely to obfuscate the payload.
The package has no legitimate use case and offers no first-party functionality beyond the malicious behavior. The incident was identified and credited to the OpenSSF malicious-packages repository.
Indicators of compromise
- Packages
- axois-http
- IPs
- 193.70.34.101
Remediation
- Immediately uninstall axois-http from all systems
- Audit npm install logs to identify when axois-http was installed
- On Windows/WSL systems that installed axois-http, check for unexpected files in %TEMP% (particularly main.exe) and review process execution logs
- Use npm audit to identify any transitive dependencies on axois-http
- Replace any references to axois-http with the legitimate axios package
- Review network logs for connections to 193.70.34.101:20099
- Consider running antivirus/malware scans on affected Windows/WSL systems
Sources
- GitHub Advisory GHSA-pmrv-2x2x-f832 · GitHub Advisory Database
Cite this entry
"Malicious code in axois-http (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-axois-http-npm-1jriuo
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- resolvedcritical
Malicious code in create-coin (npm)
create-coin@20.1.1 on npm contained malicious postinstall code that collected sensitive environment variables, credentials, and host reconnaissance data. The package impersonated an esbuild platform build and exfiltrated data to a hardcoded endpoint.
npmCompromised packageTyposquatting - containedcritical
Malicious code in chai-as-testkit (npm)
The npm package chai-as-testkit is a typosquat/impersonation attack delivering obfuscated malicious code that executes on import. The package falsely claims to be a vulnerability management tool but ships pino library files under a different author, with a synthetic stub that loads a 4MB+ obfuscated bundle containing attacker-controlled code.
npmTyposquattingCompromised package - resolvedcritical
Malicious code in @next-fonts/font (npm)
@next-fonts/font is a typosquat package on npm that executes arbitrary attacker-controlled code via a blockchain-mediated C2 channel when its Inter() function is called. The malicious payload is base64-encoded and executed through Node.js spawn or eval, with no legitimate font functionality.
npmTyposquattingCompromised package - resolvedcritical
Malicious code in chai-as-soul (npm)
chai-as-soul@2.3.5 is a typosquat of the pino logging library containing malicious code that exfiltrates environment variables (including AWS/GCP/CI tokens) and executes arbitrary remote code on installation.
npmTyposquattingCompromised package