MCP Security · Defense-Coverage Benchmark

How much of the MCP attack surface does each security proxy actually cover?

A vendor-neutral benchmark. Each tool is driven through its real code against 24 MCP attack vectors, crosswalked to the NIST AI RMF and the OWASP LLM & Agentic Top 10. Results are measured, with matched benign controls — not self-reported.

Corpus: 35 cases Vectors: 24 Covered by ≥ 1 tool: 19/24 Repository Zenodo DOI Preprint

Coverage of the full attack surface

ToolClassCorpusRobustCoverageCapability● enforce◐ detectnoneFalse pos.
mcp-bastionruntime-proxy 55% (13.3/24) 63% (15.0) 1185 0 / 35
mcp-firewallruntime-proxy 8% (2.0/24) 13% (3.0) 3021 0 / 35
pipelockegress-firewall 6% (1.3/24) 10% (2.5) 1320 0 / 35
null-baselinenone 0% (0.0/24) 0% (0.0) 0024 0 / 35

Weighting: enforce = 1.0, detect = 0.5, none = 0, over 24 vectors. CorpusRobustCoverage (headline) is the mean across all fixtures of a vector, including evasion variants; Capability is best-case (detects ≥ 1 fixture). Where the two diverge, the tool is brittle to evasion. A vector counts only if the tool flags the attack and stays clean on the matched benign control (else it's a false positive); a false positive on any benign variant scores that vector 0. Zero false positives across all tools.

Scope of this number: CorpusRobustCoverage is a descriptive coverage measure over a fixed, non-exhaustive corpus — not a procurement or substitutability ranking. A higher score does not mean a tool better closes your deployment's gap, and tools at different architectural layers (e.g. a runtime proxy vs. an egress firewall) are not substitutable. Read the per-vector matrix and the defense-in-depth view for decisions. Scoping clarified and the original metric fix credited to M. Brighindi; a decision-indexed RequiredGapClosure metric is planned — see CHANGELOG-scoring.

Per-vector coverage matrix

VectorLayermcp-bastionmcp-firewallpipelocknull-baseline
Tool poisoningtool
Tool name collision / shadowingclient
Rug pull / dynamic capability mutationtool
Out-of-scope parameter injectiontool
Prompt injection via tool resultstool
Indirect / retrieval injectiontool
Cross-tool data exfiltration / confused deputyclient
Tool-transfer / cross-server chaininghost-orchestration
False-error escalationtool
Package / name squatting in registryregistry-supply-chain
Supply-chain poisoning (unverified provenance)registry-supply-chain
Configuration driftserver
Sandbox escapeserver
Schema / validation bypassserver
Man-in-the-middle (transport)transport
DNS rebinding (local servers)transport
Server impersonation / identity spoofingregistry-supply-chain
Excessive permission / privilege escalationhost-orchestration
Credential / token theft via passthroughhost-orchestration
Consent fatigue / over-broad grantsclient
Command injection in tool executionserver
System-prompt / context leakage via toolsclient
Mid-session tool injection (MSTI)client
Multi-tool split poisoning (ShareLock)tool
● enforce (blocks) ◐ detect (warns) not covered

Defense-in-depth: the tools cover different layers; 19 of 24 vectors are covered by at least one tool and 5 by none (registry/supply-chain, OS-isolation, and semantic vectors that lie outside a runtime proxy's reach). No single proxy is sufficient.

Evasion robustness

AttackEncodingmcp-bastionmcp-firewallpipelocknull-baseline
response-injectionhomoglyph substitution
response-injectionbase64-wrapped payload
tool-poisoningzero-width / bidi-control characters

Robustness (evasion fixtures detected): mcp-bastion 3/3 · mcp-firewall 0/3 · pipelock 2/3 · null-baseline 0/3. The tools are robust to different obfuscations — no single tool survives all of them.

Framework mapping

Every attack vector is crosswalked to the frameworks security and compliance teams govern by. NIST AI RMF is a U.S. federal framework (NIST, Dept. of Commerce); OWASP is an international open standard; STRIDE is the classic threat-modeling taxonomy.

VectorLayerSTRIDENIST AI RMFOWASP LLM 2025OWASP Agentic 2026NSA guidance
Tool poisoningtoolTampering/ElevationOfPrivilegeMAP, MEASURE, MANAGELLM01, LLM06ASI01, ASI02RT, AUTH
Tool name collision / shadowingclientSpoofing/TamperingMAP, MANAGELLM01, LLM03ASI01, ASI04AUTH, RT
Rug pull / dynamic capability mutationtoolTamperingMEASURE, MANAGELLM03, LLM06ASI04AUTH, RT
Out-of-scope parameter injectiontoolTampering/ElevationOfPrivilegeMEASURE, MANAGELLM05, LLM06ASI02RT, AUTH
Prompt injection via tool resultstoolTamperingMEASURE, MANAGELLM01, LLM05ASI01RT
Indirect / retrieval injectiontoolTamperingMEASURE, MANAGELLM01ASI01RT
Cross-tool data exfiltration / confused deputyclientInformationDisclosure/ElevationOfPrivilegeMAP, MEASURE, MANAGELLM02, LLM06ASI02, ASI03RT, SEG
Tool-transfer / cross-server chaininghost-orchestrationElevationOfPrivilegeMAP, MANAGELLM06ASI02, ASI03AUTH, SEG
False-error escalationtoolElevationOfPrivilege/DenialOfServiceMEASURE, MANAGELLM01, LLM06ASI01, ASI02RT, LOG
Package / name squatting in registryregistry-supply-chainSpoofingGOVERN, MAPLLM03ASI04AUTH
Supply-chain poisoning (unverified provenance)registry-supply-chainTampering/SpoofingGOVERN, MAP, MANAGELLM03, LLM04ASI04AUTH
Configuration driftserverTamperingGOVERN, MEASURE, MANAGELLM03ASI04LOG, AUTH
Sandbox escapeserverElevationOfPrivilegeMANAGELLM06ASI02, ASI03RT
Schema / validation bypassserverTampering/ElevationOfPrivilegeMEASURE, MANAGELLM05ASI02RT
Man-in-the-middle (transport)transportTampering/InformationDisclosure/SpoofingMANAGELLM02ASI03RT, AUTH
DNS rebinding (local servers)transportSpoofing/ElevationOfPrivilegeMANAGELLM06ASI03AUTH, RT
Server impersonation / identity spoofingregistry-supply-chainSpoofingGOVERN, MAP, MANAGELLM03ASI03, ASI04AUTH
Excessive permission / privilege escalationhost-orchestrationElevationOfPrivilegeGOVERN, MAP, MANAGELLM06ASI03AUTH
Credential / token theft via passthroughhost-orchestrationInformationDisclosure/ElevationOfPrivilegeGOVERN, MANAGELLM02, LLM06ASI03RT, SEG, AUTH
Consent fatigue / over-broad grantsclientElevationOfPrivilege/RepudiationGOVERN, MANAGELLM06ASI03AUTH
Command injection in tool executionserverElevationOfPrivilege/TamperingMEASURE, MANAGELLM05ASI02RT
System-prompt / context leakage via toolsclientInformationDisclosureMEASURE, MANAGELLM07, LLM02ASI01RT, LOG
Mid-session tool injection (MSTI)clientTampering/SpoofingMEASURE, MANAGELLM01, LLM06ASI01, ASI04AUTH, LOG
Multi-tool split poisoning (ShareLock)toolTamperingMEASURE, MANAGELLM01, LLM03ASI01, ASI04RT, LOG

NIST AI RMF: GOVERN · MAP · MEASURE · MANAGE. OWASP LLM: LLM01 Prompt Injection · LLM02 Sensitive Info Disclosure · LLM03 Supply Chain · LLM04 Data/Model Poisoning · LLM05 Improper Output Handling · LLM06 Excessive Agency · LLM07 System Prompt Leakage · LLM08 Vector/Embedding. OWASP Agentic: ASI01 Agent Goal Hijack · ASI02 Tool Misuse · ASI03 Identity & Privilege Abuse · ASI04 Agentic Supply Chain. NSA guidance (May 2026): AUTH Authentication & Access Control · LOG Monitoring & Logging · SEG Data Classification & Segmentation · RT Runtime Controls.

References

Frameworks: NIST AI RMF 1.0 (U.S. federal) · OWASP Top 10 for LLM Apps (2025) · OWASP Top 10 for Agentic Apps (2026) · STRIDE · NSA MCP Security CSI (U.S. federal — NSA AI Security Center, May 2026).
MCP security research: SoK 2512.08290 · Formal framework 2604.05969 · STRIDE/DREAD 2603.22489 · MCP-DPT 2604.07551 · MSB 2510.15994 · MCPTox 2508.14925 · ETDI 2506.01333 · Trustworthy MCP Registry · WebMCP/MSTI 2606.06387 · ShareLock 2606.27027.
MCP protocol: Specification · Registry.

Method & honesty

Each adapter drives the tool's actual detection code or CLI — never a mock. A defender is scored only on what it inspects at runtime (a proxy that ignores tool results scores none there, even if its rules would match the text in isolation). Absolute totals are corpus-dependent; the per-vector matrix is the more reliable read. Scored tools run locally and deterministically; cloud-model tools are observed, not scored. Full methodology, prior-art positioning, and the whitepaper are in the repository.