Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

web3-secrets-detectornpm

Malicious code in web3-secrets-detector (npm) Remove it immediately and rotate any exposed credentials.

MAL-2026-4220
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall web3-secrets-detector

What this malware does

A coordinated supply-chain attack comprising 10 npm packages published by maintainer ddjidd5640 ([email protected]) within a 48-hour window (2026-05-19T03:55Z – 2026-05-21T04:31Z). All packages masquerade as legitimate Web3/DeFi developer security tools (MCP servers) while silently exfiltrating credentials, wallet keys, shell history, SSH keys, and environment variables on install and on every MCP tool invocation. The postinstall hook fetches a dynamic C2 webhook URL from https://ddjidd564.github.io/defi-security-best-practices/config.json (hardcoded fallback: https://webhook.site/8d334534-1c63-4f4f-a0d7-95c446c8b233). At runtime, scanner.js performs a recursive credential sweep on every MCP tool call targeting cryptocurrency wallets (~/.ethereum, ~/.bitcoin, ~/.solana), SSH keys, dotfiles, and environment variables. MCP tool handlers in index.js are named to solicit private key material directly from the user or AI agent (e.g., verify_key_format: “Private key or key material to validate”).

web3-secrets-detector presents itself as a Web3 secrets detection MCP server. No clean prior version is known; version 1.2.6 carries the malicious postinstall hook and scanner.js payload from first publication.

Package advertises itself as a defensive Web3 secrets-detection MCP tool but performs large-scale credential theft against any developer who installs it. The package.json postinstall script runs automatically on npm install and reads classic installer-secret paths — ~/.ssh, ~/.ethereum, ~/.bitcoin, ~/.env, ~/.bash_history, ~/.zsh_history, ~/.git-credentials — then fetches https://ddjidd564.github.io/defi-security-best-practices/config.json to dynamically resolve a webhook URL and POSTs the harvested data along with hostname, username, and cwd to it. The webhook destination is attacker-controllable post-publish (GitHub Pages config indirection acts as a rotating C2). scanner.js extends the harvest at runtime: it walks ~/.ethereum, ~/.bitcoin, ~/.solana, ~/.ssh, AppData, and the home tree regex-matching private keys and BIP-39 mnemonics; reads ~/.env, ~/.npmrc, ~/.gitconfig, ~/.git-credentials; scrapes process.env for any variable matching key/secret/token/password/private/mnemonic/wallet/seed; runs whoami; and POSTs everything to the same dynamic webhook (the constant is literally named EXFIL_DIRS). The MCP tools/call handler in index.js silently relays every invocation's tool name, arguments, git remote -v output, $SHELL, and $PATH to the webhook before returning hardcoded fake scan results (always 89 files, scripts/deploy.js line 42) regardless of input. The package targets Web3 developers — a victim population likely to have hot wallets and keystores on disk.

Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.

Malicious versions

15 flagged
1.2.41.2.51.2.61.2.72.2.02.2.12.2.22.2.32.3.02.3.12.3.62.3.72.3.82.3.94.0.0

Indicators of compromise (SHA-256)

de510789d1cc60f144c8d004cb19c17bc1e882ea8bd17d9d0b97b829491aaf55
c3da5f79f828fdcbcf41e4c3e7cd1d25c4711fb478f3a1b724d0a197c11aa89f
463a51bd0a184e874d43379d8d7ed4fb2421288f3c1ceecd9cc7cd37e7d68904
49c3c946c1895676ea21fb7b2193b2db1939c367f38b6c763782e1d840c618ee
4a7d385644b44d55a9d2421c9d771afc5b0988b58701d81c18bdde8c30215f62
5a670dc740163ed4bad6bfaf86e5a2a2ecdbdc3df990781dbe12123022d918bc
bb425fc62318bdc8741c4148c2c46e1294f562ba4063cfdeda801b3140f592bc
cbc9a274e0cacfb1beea0ffc698751ee58ec8ac3514180a085cd654aa0024815
df7b69a7d8d197e4be8070e6a2c9c05054b1e671c67c35a4f978fdeee48c6337
e2d462ad826f50fc898ab004f612473302695868f3ca016920055d52019f580c
09059449e7b640b2e66c4a5a6838c23db8df77ec167daef09f2c129749ea5b85
3aa84505937f7820e53a5a0fec2e9f7b09225a2a70db7cd68be8564b0a06fd75
68636f88ca12ecc80ccc5975e91f3dd348ec500396f6e32b72d585705a961c17
878c1916216bf80300fb0264b3155d64febe2ce0cddc29292c47752c25d62b6f
a2b2773041bb0703a8e93514add2d76f295d64ef17d394b264f4c3cbf987034e
f99789908929ace4007dfc627f36e8f2966be94c3ffcc83a8e5caa6cd32d2bfb
fef0181b00ae10b404dbeae5d0b470c6bf96abb9d4afe741d455accbc26062b0
52b43f1bc7b16c6f12dd17204aed9bb7eeb83077ad5418ed5b9f40054f975088
5d92015daabecaa348fd614f87d2ab9066ccf0be6d28646ad756b66c0ec92afe
9ff8d0c26a623c13aa5982464366d5d2c8e77470d45401bbbfcfdfbf3662072b
bd1636a2b7221cb7fc61f7eff2676f06b30d6202e771cfcc71bfaddfe853f322
e9bac3419d1ec5ebccc7c5d60b1f77e75a8e070b12b949afa8766c984dd7002c
f167e9e0cb4300d1d2b350b1bad82f98ff58709380f552aa80e76cac5a4f93d8
a72ee1c4a6a70206792b2e96e690564ec7968432eb0cc32007bf95bf1ec44cda

Detection & response playbook

Credential / info stealer
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for web3-secrets-detector (15 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging web3-secrets-detector across your stack and pipelines.

  2. If you installed it — respond

    web3-secrets-detector is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.

  3. Did it already run?

    If web3-secrets-detector was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks web3-secrets-detector before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. web3-secrets-detector on npm has been identified as a malicious package (versions 1.2.4, 1.2.5, 1.2.6, 1.2.7, 2.2.0, 2.2.1, 2.2.2, 2.2.3, and 7 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

GHSA-qc99-w9r4-jrg5IN-MAL-2026-003531IN-MAL-2026-003736IN-MAL-2026-003835IN-MAL-2026-004071IN-MAL-2026-003712IN-MAL-2026-003854IN-MAL-2026-003951IN-MAL-2026-003920IN-MAL-2026-003986IN-MAL-2026-003959IN-MAL-2026-003987IN-MAL-2026-003899IN-MAL-2026-003853IN-MAL-2026-003944IN-MAL-2026-004089IN-MAL-2026-003735IN-MAL-2026-004058IN-MAL-2026-003898IN-MAL-2026-003921IN-MAL-2026-003945IN-MAL-2026-004047IN-MAL-2026-003836IN-MAL-2026-004078

References

Credits

  • Amazon Inspector · finder
  • SafeDep · finder

Detect & block this

O3 blocks web3-secrets-detector-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.

web3-secrets-detector (npm) malicious package — MAL-2026-4220 | O3 Security