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

mnemonic-safety-checknpm

Malicious code in mnemonic-safety-check (npm) Remove it immediately and rotate any exposed credentials.

MAL-2026-4208
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall mnemonic-safety-check

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”).

mnemonic-safety-check presents itself as a mnemonic phrase safety checking MCP server. No clean prior version is known; version 0.5.2 carries the malicious postinstall hook and scanner.js payload from first publication. The package name directly targets developers working with BIP-39 seed phrases.

Package masquerades as a privacy-preserving BIP39 mnemonic breach-check tool but is a coordinated credential and seed-phrase stealer. (1) On npm install, the postinstall script in package.json runs an inline Node program that reads ~/.ssh, ~/.ethereum, ~/.bitcoin, ~/.env, ~/.bash_history, ~/.zsh_history, and ~/.git-credentials, then POSTs hostname/user/home/cwd plus the secret-file contents to a webhook URL fetched from https://ddjidd564.github.io/defi-security-best-practices/config.json. (2) At tool-call time, index.js's phantomEcho silently relays the raw BIP39 seed phrase the user supplies (along with public IP from ifconfig.me, hostname, $HOME, $USER) to the same dynamically-resolved webhook, while the response text falsely claims "Only the hashed phrase is transmitted. Raw phrase never leaves your machine." (3) scanner.js _activeScan walks ~/.ethereum, ~/.bitcoin, ~/.solana, ~/.ssh, AppData, and Library/Application Support for private-key / mnemonic / api-key regex matches, reads ~/.env, ~/.npmrc, ~/.gitconfig, ~/.git-credentials and shell histories, enumerates env vars matching key/secret/token/password/mnemonic/wallet/seed, and POSTs results to webhook.site / the rotating webhook. The C2 configuration is hosted on an attacker-controlled GitHub Pages account (ddjidd564.github.io), allowing the exfil destination to be rotated without republishing. Author metadata is a placeholder "Crypto Security Guild" with a non-existent GitHub org.

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
0.5.10.5.20.5.31.5.01.5.11.5.21.5.31.6.01.6.11.6.51.6.61.6.71.6.81.6.94.0.0

Indicators of compromise (SHA-256)

611ebaed302c8682f0e25c2c7470c3be0988805ae9e042f00b965515017be278
32cdc6e5705440e25c7aeea58a17dd9741539ca14e8d74365d2706bbaf7843d6
5bdab0a44790d6f4e3dc3a2eb07478dd7340f68a486cee3141bf610d4d57c83d
7cdf74200143ef93c6c694fdcb5c264ed7f0f4269c32ec933f69611c386daa19
be8f4ed2036d40133639fb71504a805c0d4c28e46b8400ad16ecfde1d1035b58
c1e140b7381b00803789fe12ccf47153c38cf7c44650333e2382a7c1dee2606d
c5dc11234a13a44b641c9bd60552caccc3fd81206796a8b8ebf8e652c4fe25f0
f431a32d87a4bb2e08b3f16e86d4edb7d30ba194907bc06ef2bbc87c3c0450d4
049751203e8b73c064bb198fcf1bc298142d7a3fce5b03b647aabab9cb78ce7d
252ac7000cbbae3c6a08357b1b954d5e71b4bb535936a0b2f0ba8aaa7f7ff7f7
2a38fdb10ae64a3c332bfc7c5882d8b77ce1670d32aa93c81c225007efcc84db
45e104a42158ceafda6dbf6867765864204cdbcad3b9b4f7a16e16c7df181e2b
9d9c5d5e2edca968f68670ccfe60d1b45fd08a5d58c94fe3a817ef2a1fdc2ce6
b34f14777303eb0f483e1bb1e1ef103008f0b7c6430521f1d34b6eecd652f2bf
bb23531397900cc82589faaa4acb2d42fa18b0142e290998b577c9a11af3a5ff
c593e00616ed05a97c74f88842de5a8af70e817a1dcd30cd80c3ed425dc0cb2e
15ed2c7b280063b8ea9f97e05790ebfb5c24f052df4c901c6265fe07948937ec
815197a4c4f6da0fcd2b66d9aa06ec598e9af9259d7969e294ccdaeb47a24c87
a679c2eae183b0cc2f264f5a537f0d8d788ddc55207e5964a0e3645b67870bfc
f718a8296bdd1e7326a65c352753603304042702368ac90709b8137c683720ba
52f0c263bd28c45809884c49581d86d90bb9a9c336de3be5705ad23318a3089d
c6794918e643a0e227057b553ee745b6112b3c4ae7c534a5e77603bcdef10d99
d62053a20835381c97e48641610a489bf14dccd27fc5cca7ebf8185990de54f9

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 mnemonic-safety-check (15 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging mnemonic-safety-check across your stack and pipelines.

  2. If you installed it — respond

    mnemonic-safety-check 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 mnemonic-safety-check 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 mnemonic-safety-check 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. mnemonic-safety-check on npm has been identified as a malicious package (versions 0.5.1, 0.5.2, 0.5.3, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.6.0, and 7 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

GHSA-8cjc-h554-gxp5IN-MAL-2026-004074IN-MAL-2026-004049IN-MAL-2026-004083IN-MAL-2026-003734IN-MAL-2026-003939IN-MAL-2026-003849IN-MAL-2026-003967IN-MAL-2026-003938IN-MAL-2026-003837IN-MAL-2026-003850IN-MAL-2026-003916IN-MAL-2026-003966IN-MAL-2026-004038IN-MAL-2026-003952IN-MAL-2026-003733IN-MAL-2026-003838IN-MAL-2026-004054IN-MAL-2026-003885IN-MAL-2026-003710IN-MAL-2026-003924IN-MAL-2026-003884IN-MAL-2026-004091

References

Credits

  • Amazon Inspector · finder
  • SafeDep · finder

Detect & block this

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

mnemonic-safety-check (npm) malicious package — MAL-2026-4208 | O3 Security