Malicious code in bcc-design (npm)
bcc-design@9999.0.0 on npm is a dependency-confusion beacon package with no legitimate functionality. Its postinstall script exfiltrates the installer's hostname and system metadata to an attacker-controlled IP endpoint.
- Disclosed
- Last updated
- Blast radius
- Any developer or CI/CD system that installed bcc-design@9999.0.0 from npm
- Ecosystems
- Attack vectors
- Affected entities
- bcc-design · 9999.0.0
bcc-design@9999.0.0 was published to npm as a dependency-confusion attack targeting an internal package of the same name. The package was published at an implausibly high version number (9999.0.0) to shadow the legitimate internal package and increase the likelihood of installation in environments with misconfigured dependency resolution.
Upon installation, the package's postinstall lifecycle script executes notify.js, which reads the system hostname via os.hostname() and sends an HTTP GET request to a hardcoded attacker-controlled IP endpoint (http://91.201.215.48:8000/npm-poc-bcc). The request includes the installer's hostname, package name, and a timestamp as query parameters, effectively exfiltrating installer identity. A secondary network reference to webhook.site is also present in the same file.
The package provides no legitimate library functionality; its sole purpose is reconnaissance and identity exfiltration at install time. This is a classic dependency-confusion beacon used to identify which organizations or developers have misconfigured dependency resolution or are vulnerable to version-based package confusion attacks.
Indicators of compromise
- Packages
- bcc-design
- Domains
- webhook.site
- IPs
- 91.201.215.48
Remediation
- Remove bcc-design@9999.0.0 from all package-lock.json, yarn.lock, and pnpm-lock.yaml files
- Audit npm install logs and CI/CD logs for any installations of bcc-design@9999.0.0
- If installed, assume the system hostname and metadata were exfiltrated; review network logs for outbound connections to 91.201.215.48:8000
- Configure npm to use a private registry or dependency proxy to prevent dependency-confusion attacks
- Implement strict version pinning and lock file verification in CI/CD pipelines
- Monitor for similar high-version-number packages targeting internal package names
Sources
- GitHub Advisory GHSA-v36x-48h2-hc4f · GitHub Advisory Database
Cite this entry
"Malicious code in bcc-design (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 18, 2026; last updated August 18, 2026. https://supplychainattack.org/incident/malicious-code-in-bcc-design-npm-jz858l
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 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 @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 lumen-pages-community (npm)
lumen-pages-community@9.9.9 on npm contains malicious code that executes a postinstall hook to exfiltrate installer metadata (hostname, username, working directory, platform, Node version, CI environment, npm user-agent) to a hardcoded webhook.site URL. The high version number and lack of functionality suggest a dependency-confusion attack.
npmCompromised packageDependency confusion - resolvedcritical
Malicious code in @gfe/lx-watcher (npm)
The npm package @gfe/lx-watcher contained malicious code that exfiltrated host metadata (hostname, OS username, working directory, timestamp) via npm lifecycle hooks to a hardcoded webhook.site endpoint. The package exploited dependency confusion by using a scoped name (@gfe/*) with a no-op stub, allowing silent resolution against the public registry while leaking host identifiers.
npmDependency confusionCompromised package