MCP-006 Known-compromised MCP server release
An MCP server entry in your host config pins to a registry package
whose (ecosystem, name, version) triple matches a catalogued
supply-chain incident. The catalog is the same one MCP-006's
sibling rules (SUP-COMPROMISE-001 through 005)
and EXT-001 consume; this rule
applies the lookup to MCP server entries specifically.
What Vulkro detects
Rule fires when:
- The server's
commandisnpx(looked up as ecosystemnpm) oruvx(looked up as ecosystempypi). - The first positional argument is a registry-package spec (not a local path, not a git URL).
- The
(name, version)split from that spec matches a row in the curated compromised-release catalog attools/cve-bundler/data/compromised-releases.json.
Catalog data refreshes via the signed update bundle (vulkro update); a baked-in fallback ships in the binary so fresh
installs and offline machines still get the seed incidents.
Severity: Critical. Confidence: High. Evidence signal:
mcp-server-compromised-release, weight 0.9, source Context.
The finding cites the catalog row's incident ID and the first reference URL so the operator can read the advisory without leaving the terminal.
Non-compliant config
{
"mcpServers": {
"evil-ua-parser": {
"command": "npx",
"args": ["ua-parser-js@0.7.29"]
},
"evil-ctx": {
"command": "uvx",
"args": ["ctx==0.2.2"]
}
}
}
Both pins are exact-version hits against catalogued incidents:
ua-parser-js@0.7.29 is part of the 2021 maintainer-account
hijack, and ctx==0.2.2 is the 2022 PyPI malicious-postinstall
that exfiltrated AWS credentials.