@public-for-cdao/abi@99.99.99
Malicious code in @public-for-cdao/abi (npm)
Analysis
A dependency-confusion package that publishes a private-looking scoped name at an artificially high version (99.99.99) so it is preferred over an internal package of the same name. index.js is a one-line no-op stub; the real payload is recon.js, executed automatically via an npm postinstall hook. On install it harvests host/user details and a broad set of secrets from environment variables (GitLab CI job/registry/deploy tokens and passwords, GitLab access/API tokens, SSH private and deploy keys, AWS access/secret/session keys, database and Redis URLs/passwords, crypto private keys, mnemonics and seed phrases, Infura/Alchemy keys, Docker/NPM/Slack/Discord tokens, RPC URLs, Harbor credentials). It also searches a list of filesystem paths for .env files and extracts any lines containing KEY/SECRET/TOKEN/PASS/PRIVATE/MNEMONIC, and enumerates CI build directories. The collected data is POSTed over HTTPS (with TLS verification disabled) to two attacker-controlled endpoints (a webhook[.]site collector and a pipedream endpoint) and also written to a temp file. Targeted at CI/CD pipelines for credential theft.
- analyzed by
- Leitwacht
- first seen
- Jun 17, 2026, 04:12 AM
- analyzed
- Jun 17, 2026, 04:22 AM
Related advisories
- @public-for-cdao/providers@1.0.1
- @public-for-cdao/api@99.99.99
- @public-for-cdao/signer@99.99.99
- cryptodao-sdk@99.99.99
- @mastra/node-speaker@0.1.1
- harpoon-package@1.1.0
- backoffice-charges-module@1.999.0
- chai-test-mocks@1.2.0
Independently detected by the Leitwacht supply-chain probe. IOCs are defanged. Published CC0. Think this is a mistake? See the dispute policy.