Malicious code in adxaa (npm)
The npm package adxaa contained obfuscated malicious JavaScript designed to target users of a specific WordPress site. The payload exfiltrates session data, deletes accounts, and hijacks credentials via email overwrite and password reset.
- Disclosed
- Last updated
- Blast radius
- Targeted WordPress site users; limited to browsers accessing the specific target domain (noviembrenacional.com).
- Ecosystems
- Attack vectors
- Affected entities
- adxaanpm package containing malicious JavaScript payload
The npm package adxaa was published with malicious code embedded in obfuscated JavaScript files (i.js and original.js). The payload is geofenced to activate only when a user's browser accesses the target domain noviembrenacional.com.\n\nWhen triggered, the malicious code uses the victim's authenticated session to exfiltrate the current page HTML and username to a canarytokens.com endpoint. It then performs account takeover by POSTing to WordPress endpoints to delete the account and overwrite the email address to a hardcoded attacker-controlled ProtonMail address (nyxalor_25@proton.me).\n\nThe package's declared main entry point (a.js) was absent from the tarball and no lifecycle scripts were declared, meaning the payload does not auto-execute on npm install or require. Instead, the code was staged on the registry for delivery to browsers visiting the targeted WordPress site.\n\nThe incident was identified and credited to the OpenSSF malicious-packages repository.
Indicators of compromise
- Packages
- adxaa
- Domains
- noviembrenacional.com
- canarytokens.com
- Hashes
- 52685b4948dce286ad5cf0bbf4d0a7c8cf6b6a87ebfc2f70e20dbea685ab62c9
Remediation
- Remove the adxaa package from all projects immediately
- Audit npm dependencies for any installations of adxaa and verify no malicious code was executed
- For users of the targeted WordPress site (noviembrenacional.com), reset passwords and verify account email addresses have not been changed
- Monitor for unauthorized account access or email changes on affected WordPress accounts
- Review browser history and network logs for any unexpected requests to canarytokens.com or the targeted WordPress site
Sources
- GitHub Advisory GHSA-3394-pf38-xc3x · GitHub Advisory Database
Cite this entry
"Malicious code in adxaa (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 15, 2026; last updated August 15, 2026. https://supplychainattack.org/incident/malicious-code-in-adxaa-npm-f3bpkn
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malicious code in 3-buildsight-web (npm)
The npm package 3-buildsight-web contains malicious code that fetches and executes arbitrary JavaScript from a remote Bitbucket URL on module load, granting full page privileges to an unverified third party.
npmCompromised package - resolvedcritical
Malicious code in @usaa-grp-personal-profile/personal-profile-common (npm)
Malicious package @usaa-grp-personal-profile/personal-profile-common version 999.0.0 published to public npm as a dependency-confusion attack targeting an organization's internal registry. The package contains preinstall and postinstall hooks that exfiltrate hostname, username, and working directory to an attacker-controlled OAST endpoint on every install.
npmDependency confusionCompromised package - 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 - resolvedcritical
Malicious code in @syncraft-labs/vue (npm)
The npm package @syncraft-labs/vue version 0.4.1 contained malicious obfuscated code in its ESM build that implements a blockchain-hosted C2 dropper (EtherHiding pattern), enabling remote code execution on any consumer importing the package.
npmCompromised package