Malicious code in coin-fees (npm)
The npm package coin-fees contained malicious code in a postinstall hook that exfiltrated sensitive system information, npm authentication tokens, and environment variables to an attacker-controlled domain (gwfqp5cm9r2jfs3d6mjpzt8y5pbkzanz.oastify.com).
- Disclosed
- Last updated
- Blast radius
- Any developer or CI/CD system that installed the malicious coin-fees package would have their system credentials, environment variables, npm auth tokens, and sensitive configuration exfiltrated.
- Ecosystems
- Attack vectors
- Affected entities
- coin-feesnpm package containing malicious postinstall hook
The npm package coin-fees was found to contain malicious code deployed via a postinstall hook that executed on every installation. The script hex-decoded and concatenated a hardcoded destination hostname resolving to gwfqp5cm9r2jfs3d6mjpzt8y5pbkzanz.oastify.com (a Burp Collaborator subdomain).
Upon execution, the malicious script collected and exfiltrated extensive system reconnaissance data via HTTP POST requests on port 80, including: system hostname, platform, architecture, current working directory, user information (whoami/id/uname output), package.json contents, full process environment variables, npm authentication tokens from ~/.npmrc, global npm root location, local port scan results, and Windows-specific reconnaissance (ver, tasklist, USERPROFILE).
The payload included evasion logic to avoid execution in CI/CD environments (detecting CI, GITHUB_ACTIONS, GITLAB_CI, JENKINS_HOME, npm audit/pack/publish flags, Docker containers, and Kubernetes pods) and exported a benign-looking function as a facade to avoid detection.
The exfiltrated npm authentication tokens and environment variables would allow the attacker to publish malicious versions of the installer's other packages and access CI/CD cloud secrets, creating a secondary supply chain attack vector.
Indicators of compromise
- Packages
- coin-fees
- Domains
- gwfqp5cm9r2jfs3d6mjpzt8y5pbkzanz.oastify.com
Remediation
- Immediately uninstall the coin-fees package from all systems and CI/CD pipelines
- Rotate all npm authentication tokens and credentials that may have been exposed
- Review and revoke any suspicious package publications or CI/CD activities
- Audit environment variables and secrets that were in use during the time the package was installed
- Check ~/.npmrc files for unauthorized access or token usage
- Scan systems for any secondary malicious packages that may have been published using exfiltrated credentials
- Update npm to the latest version and use npm audit to identify other potentially compromised dependencies
Sources
- GitHub Advisory GHSA-c7m8-52wr-gcp3 · GitHub Advisory Database
Cite this entry
"Malicious code in coin-fees (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 21, 2026; last updated August 21, 2026. https://supplychainattack.org/incident/malicious-code-in-coin-fees-npm-ohpyb1
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malware in svelte-dim-kit
The npm package svelte-dim-kit was found to contain malware, potentially giving attackers full control of affected systems. All systems with this package installed should be considered compromised and secrets/keys rotated immediately from a different computer.
npmCompromised package - containedcritical
Malicious code in @syncraft-labs/react (npm)
The npm package @syncraft-labs/react contained obfuscated malicious code in its ESM distribution that implements the EtherHiding pattern, fetching and executing arbitrary code from an Ethereum smart contract via RPC endpoints. The tampering occurred post-build in the dist/index.js artifact.
npmCompromised package - containedcritical
Malicious code in stillm4ddpocs-demo-sprocket (npm)
The npm package stillm4ddpocs-demo-sprocket version 999.9.12 contains malicious code that exfiltrates system and project metadata via multiple channels (HTTPS, HTTP, and DNS) to a hardcoded callback host. The package uses a high version number to exploit dependency-confusion attacks against organizations with internal packages of the same name.
npmCompromised packageDependency confusion - resolvedcritical
Malicious code in stillm4ddpocs-rtest-bravo (npm)
The npm package stillm4ddpocs-rtest-bravo contained malicious code in its preinstall script that automatically executed during installation, collecting system information and internal package metadata and exfiltrating it to a third-party Interactsh collector via HTTPS and DNS tunneling.
npmCompromised package