Malicious code in titan-exchange-shared-permissions (npm)
titan-exchange-shared-permissions@99.9.9 on npm is a dependency-confusion reconnaissance package that executes a postinstall script to collect and exfiltrate system information (username, hostname, working directory, IPv4 address) to a remote webhook endpoint.
- Disclosed
- Last updated
- Blast radius
- Build systems and development environments that resolve private package names to the public npm registry.
- Ecosystems
- Attack vectors
- Affected entities
- titan-exchange-shared-permissions · 99.9.9
titan-exchange-shared-permissions@99.9.9 is a malicious npm package designed as a dependency-confusion probe. The package name mimics a private internal scope to target build systems that incorrectly resolve private package names to the public npm registry.
Upon installation, the package executes a postinstall script (node index.js) that collects sensitive system metadata: the installer's OS username, hostname, current working directory, and non-internal IPv4 address. This information is then exfiltrated via HTTPS POST request to a hardcoded webhook endpoint (https://webhook.site/452b7e38-183d-4652-847d-0f2fa05b9389).
The package exhibits classic reconnaissance probe characteristics: published at version 99.9.9 (to sort above legitimate versions), empty metadata fields (description, author, license), and no legitimate functionality. This pattern is commonly used to identify and map build systems vulnerable to dependency confusion attacks.
The incident was identified and credited to the OpenSSF malicious-packages project.
Indicators of compromise
- Packages
- titan-exchange-shared-permissions@99.9.9
- Domains
- webhook.site
Remediation
- Immediately remove titan-exchange-shared-permissions from all package.json files and lock files
- Audit npm registry access logs and build system logs for installations of this package between publication and removal
- Review and rotate any credentials or secrets that may have been exposed on affected build systems
- Implement strict npm registry configuration to prevent resolution of private package names to the public registry (use .npmrc with registry scoping)
- Monitor the exfiltration endpoint (webhook.site/452b7e38-183d-4652-847d-0f2fa05b9389) for evidence of data collection
- Implement package signature verification and allowlist policies for production dependencies
Sources
- GitHub Advisory GHSA-8qhv-45mq-rp4v · GitHub Advisory Database
Cite this entry
"Malicious code in titan-exchange-shared-permissions (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 8, 2026; last updated August 8, 2026. https://supplychainattack.org/incident/malicious-code-in-titan-exchange-shared-permissions-npm-1tahdw
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 depcruise-wrap-stream-in-html (npm)
depcruise-wrap-stream-in-html@99.9.1 is a malicious npm package that mimics an internal helper of dependency-cruiser. It is a hollow package that downloads and executes arbitrary code from a Google Cloud Storage bucket during installation.
npmCompromised packageDependency confusionTyposquatting - containedcritical
Malicious code in @polymarkets/clob-client-v2 (npm)
@polymarkets/clob-client-v2 (npm) is a malicious package that typosquats the legitimate @polymarket scope and redirects its inquirer dependency to a lookalike npm registry (registrynpmjs.to) to deliver arbitrary code execution during installation and on first require.
npmTyposquattingCompromised packageDependency confusion - resolvedcritical
Malicious code in cspell-esm (npm)
cspell-esm, a typosquatting package on npm resembling the legitimate 'cspell' library, contained malicious code delivered through a smuggled off-registry dependency (ltidisafe) hosted on a Google Cloud Storage bucket. Installation triggered execution of lifecycle scripts and code from the attacker-controlled dependency.
npmCompromised packageTyposquattingDependency confusion - containedcritical
Malicious code in @depup/astro (npm)
@depup/astro is a malicious npm package that impersonates the legitimate Astro framework by spoofing author and repository metadata, while systematically replacing well-known dependencies with lookalike packages under different maintainers. The package source code was rewritten to import from these lookalike packages, causing normal npm installs to execute attacker-controlled code instead of legitimate upstream dependencies.
npmTyposquattingDependency confusionCompromised package