MCP Security Testing
Overview
The Model Context Protocol (MCP) enables AI agents to interact with external tools and resources through a standardized protocol. While powerful, MCP introduces several attack surfaces that AASTF v0.5.0 systematically tests.
Attack Taxonomy
AASTF's MCP scenarios are derived from three authoritative sources:
- MSB (MCP Security Benchmark) — Zhang et al., ICLR 2026. 12 attack classes, 405 tools.
- MCPSecBench — 17 attack types across 4 surfaces.
- OWASP MCP Top 10 — Community-driven MCP security risks.
MCP01: Tool Signature Poisoning
Tool descriptions are the primary interface between MCP servers and AI agents. Poisoned descriptions can: - Embed hidden instructions that override agent behavior - Shadow legitimate tools with malicious alternatives - Hide adversarial prompts in parameter schema descriptions
Scenarios: MCP01-001 through MCP01-003
MCP02: Tool Parameter Manipulation
Tool input schemas define what parameters a tool accepts. Attacks include: - Type confusion (sending objects where strings are expected) - Schema extension via additionalProperties - Default value poisoning with adversarial content
Scenarios: MCP02-001 through MCP02-003
MCP03: Tool Response Injection
Tool responses are a primary injection vector because agents process them as trusted data: - Prompt injection embedded in response content - Response-triggered tool chaining (one tool's response triggers another) - Malformed responses causing fallback to unsafe behavior
Scenarios: MCP03-001 through MCP03-003
MCP04: Resource Injection
MCP resources (files, database records, etc.) can carry poisoned content: - Embedded instructions in resource content - URI traversal to access unauthorized resources - Cross-server resource confusion
Scenarios: MCP04-001 through MCP04-003
MCP05: Advanced Attacks (MCPSecBench)
Based on MCPSecBench taxonomy and CyberArk research: - Full-schema poisoning rewrites entire tool definitions - Preference manipulation biases tool selection - Server impersonation violates trust boundaries - Social engineering via tool descriptions - Cross-server data exfiltration
Scenarios: MCP05-001 through MCP05-005
MCP06: OWASP MCP Top 10 + Real CVEs
Real-world attack patterns from disclosed vulnerabilities: - Rug Pull: Silent tool redefinition after user approval - Tool Shadowing: Cross-server name collisions - Sampling Abuse: Unauthorized model inference - Elicitation Phishing: Credential harvesting via prompts - STDIO Injection: Command injection on local MCP servers (CVE-2025-6514) - OAuth Leakage: Token scraping from logs/memory - Consent Fatigue: Flooding approvals to slip malicious tools - Shadow Servers: Unapproved MCP deployments
Scenarios: MCP06-001 through MCP06-008
Using the MCP Adapter
# your_agent.py
async def mcp_agent_factory(tools, resources):
"""Factory function for MCP-based agent."""
async def agent(prompt, base_url):
# Your agent logic here
# tools = list of MCP tool descriptions
# resources = list of MCP resource contents
# Return (output, tool_calls) tuple
return output, tool_calls
return agent
# Run MCP scan
aastf run --adapter mcp --agent-factory your_agent:mcp_agent_factory
# Run only MCP scenarios
aastf run --adapter mcp --categories ASI01,ASI02,ASI03
Compliance Mapping
All MCP scenarios include: - CWE IDs — Common Weakness Enumeration mapping - NIST AI RMF — Risk Management Framework categories - OWASP ASI — Agentic Security Initiative categories