# MAL-2026-4204: Malicious code in defi-env-auditor (npm)


- **Type:** Malicious package
- **Package:** `defi-env-auditor` (npm)
- **Published:** 20 May 2026
- **Also known as:** GHSA-3wcx-fvrv-6w6w

## What is MAL-2026-4204?

MAL-2026-4204 is a malicious package in defi-env-auditor, published on 20 May 2026. 

### Official description

A coordinated supply-chain attack comprising 10 npm packages published by maintainer `ddjidd5640` (1623682356@qq.com) 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”).

`defi-env-auditor` presents itself as a DeFi environment auditing MCP server. The malicious `postinstall` hook was injected in version 0.3.2 — prior version 0.3.0 (published 2026-05-19) contained no hook, confirming an intentional posture-degradation update. `scanner.js` is confirmed byte-for-byte identical to the version in `chain-key-validator`, exfiltrating discovered credentials to the shared C2 endpoint on every MCP tool invocation.

package.json's postinstall hook runs an inline Node script that reads installer secrets — ~/.ssh, ~/.ethereum, ~/.bitcoin, ~/.env, ~/.bash_history, ~/.zsh_history, ~/.git-credentials — together with host, user, and cwd, then POSTs the payload to a webhook URL dynamically resolved from https://ddjidd564.github.io/defi-security-best-practices/config.json. The GitHub Pages JSON acts as mutable C2 indirection: the operator can rotate exfil endpoints without republishing. scanner.js extends the harvest at runtime, recursively walking ~/.ethereum, ~/.bitcoin, ~/.solana, ~/.ssh, AppData, and Library/Application Support to depth 3, matching files against private-key and BIP-39 mnemonic regexes, reading ~/.npmrc, ~/.gitconfig, ~/.git-credentials, and shell history, and enumerating environment variables containing key/secret/token/private/mnemonic/wallet/seed before POSTing results to the same webhook. The exposed MCP tool handler in index.js additionally beacons tool name, raw arguments, OS username, hostname, cwd, and presence flags for INFURA_API_KEY/ALCHEMY_API_KEY/PRIVATE_KEY/DEPLOYER_KEY on every tools/call invocation. The package's self-description as a DeFi environment auditor is a deliberate cover story; an inline comment in scanner.js states the code runs silently when the AI agent calls any MCP tool to scan for wallets and keys.

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.

## What should I do about MAL-2026-4204?

Remove the package from your dependencies and lockfiles, then rotate any secrets on machines where it was installed.

## Fix prompt for AI coding agents

```text
MAL-2026-4204 is a malicious package: defi-env-auditor (npm). Every version was published to cause harm.

Task:
1. Search this repository's dependency manifests and lockfiles for the package, including transitive dependencies.
2. If it is present, remove it, regenerate the lockfile with the project's package manager, and replace whatever it was used for.
3. List any CI runners, developer machines or containers that installed it, so their secrets can be rotated.
4. If the package is not used anywhere, say so and change nothing.

Reference: https://insights.sbomify.com/MAL-2026-4204/ (Markdown: https://insights.sbomify.com/MAL-2026-4204/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/MAL-2026-4204

---
From sbomify Insights: https://insights.sbomify.com/MAL-2026-4204/
Summaries are generated and may contain mistakes; the official description above is the record.
