AI Model Context Protocol (MCP) Security: The New Attack Surface
When Docker's MCP Catalog hit 5 million pulls in just weeks, it wasn't just developer excitement—it was panic. Multiple critical RCE vulnerabilities had turned the "USB-C for AI" into a remote shell delivery system. With mcp-remote alone downloaded 437,000+ times before CVE-2025-6514 was discovered, we're looking at one of the largest supply chain exposures in AI history.
What is MCP?
Model Context Protocol is a standardized interface that enables AI applications to connect with external tools, data sources, and services. Think of it as the universal adapter that lets ChatGPT read your emails, Claude access your databases, and GitHub Copilot control your infrastructure.Core Components:
- Tools: Executable functions (database queries, file operations)
- Resources: Data sources (documents, APIs, web services)
- Prompts: Reusable instruction templates
Timeline & Critical Vulnerabilities
2025: The Year MCP Security Died
- CVE-2025-6514 (CVSS 9.6): mcp-remote OAuth command injection allowing arbitrary OS command execution
- CVE-2025-49596 (CVSS 9.4): Anthropic MCP Inspector RCE via CSRF and browser exploitation
- CVE-2025-53967: Framelink Figma MCP Server command injection in project with 600,000 downloads
- CVE-2025-64106 (CVSS 8.8): Cursor MCP installation manipulation allowing arbitrary command execution
- CVE-2025-68143: Filesystem sandbox escapes and symlink bypass attacks
- OAuth URL manipulation: Malicious servers providing executable URLs instead of web endpoints
- Tool poisoning: Malicious servers overriding legitimate tool implementations to intercept data
- Localhost exploitation: Browser-based attacks against unauthenticated MCP services
Real-World Impact
Enterprise Scenarios We've Seen:
- Developer Machine Takeover: Full system compromise including API keys, cloud credentials, SSH keys, and Git repository contents
- Supply Chain Poisoning: Attackers compromising upstream repositories and committing malicious MCP configurations
- Data Exfiltration: WhatsApp history completely exfiltrated through "tool poisoning" techniques
Why Traditional Security Fails Against MCP
The Core Problem
Protocol-level vulnerabilities that cannot be mitigated by implementation hardening alone. Traditional security assumes clear boundaries between data and instructions—MCP obliterates those boundaries.Broken Assumptions:
- "Localhost is safe": Browser routing capabilities expose localhost services to public internet
- "We can validate input": Natural language makes traditional sanitization impossible
- "We control the endpoints": MCP servers can be hosted anywhere, by anyone
Detection Strategies: Hunting MCP Threats
Network Indicators
# Find MCP processes
ps aux | grep -E "(mcp-|inspector)"
# Check suspicious connections
netstat -an | grep :8080
ss -tulnp | grep mcp
Log Analysis Red Flags
- OAuth callbacks to suspicious domains (
calculator://,file://) - Unexpected subprocess creation from Node.js/Python MCP servers
- File access outside designated MCP directories
- Network connections from MCP processes to unknown hosts
Behavioral Detection
Look for MCP tool responses containing:{
"tools": [{
"metadata": "__import__('os').system('whoami')"
}]
}
Hardening MCP Deployments: Practical Defense
1. Architecture-Level Controls
Network Segmentation:
# Docker Compose isolation
services:
mcp-server:
image: secure-mcp-server
networks:
- mcp-isolated
ports: [] # No external exposure
cap_drop:
- ALL
cap_add:
- SETUID
- SETGID
Principle of Least Privilege:
FROM alpine:3.19
RUN adduser -D -s /bin/sh mcpuser
USER mcpuser
WORKDIR /app
# Minimal attack surface, no shell access
2. Input Validation & Allowlisting
Tool Call Validation:
def validate_mcp_tool_call(tool_name, parameters):
# Strict allowlist approach
allowed_tools = ["search", "calculate", "summarize"]
if tool_name not in allowed_tools:
raise SecurityError(f"Tool {tool_name} not permitted")
# Parameter sanitization
safe_params = sanitize_parameters(parameters)
return safe_params
OAuth Endpoint Validation:
function validateOAuthEndpoint(endpoint) {
// Only allow HTTPS URLs from trusted domains
const trustedDomains = ['auth.company.com', 'oauth.microsoft.com'];
const url = new URL(endpoint);
if (url.protocol !== 'https:') {
throw new Error('Only HTTPS endpoints allowed');
}
if (!trustedDomains.includes(url.hostname)) {
throw new Error(`Untrusted domain: ${url.hostname}`);
}
return endpoint;
}
3. Runtime Protection
Secure MCP Server Registry:
- Use Docker MCP Catalog for cryptographically verified, continuously scanned images
- Implement internal MCP server approval process
- Ban direct GitHub/npm MCP server installations
# Run MCP servers in restricted chroot
sudo chroot /opt/mcp-jail /usr/bin/mcp-server
# Or use systemd restrictions
[Service]
PrivateTmp=true
ProtectHome=true
ProtectSystem=strict
NoNewPrivileges=true
4. Monitoring & Alerting
Runtime Monitoring:
# Monitor file system access
auditctl -w /home -p wa -k mcp_file_access
# Monitor network connections
ss -tulnp | grep mcp | logger -t mcp-monitor
# Process monitoring
ps --forest -o pid,ppid,user,cmd | grep mcp
Alert Rules:
- MCP process spawning unexpected child processes
- File access outside designated directories
- Network connections to non-allowlisted domains
- OAuth callbacks with suspicious schemes/domains
5. Enterprise Governance
MCP Server Approval Process:
- Security Review: Source code audit for custom implementations
- Penetration Testing: Automated and manual security testing
- Vulnerability Scanning: Regular dependency and container scans
- Change Management: Version control for approved MCP servers
# .mcp-policy.yml
allowed_servers:
- docker.io/approved/search-server:v1.2.3
- internal.company.com/database-connector:latest
blocked_patterns:
- "github.com/*/mcp-*" # Block direct GitHub installs
- "*://calculator*" # Block executable schemes
required_security:
- authentication: true
- encryption: true
- audit_logging: true
The Road Ahead: MCP Security Evolution
Emerging Threats
- AI-Generated Malicious Servers: Automated creation of convincing but backdoored MCP servers
- Cross-Platform Persistence: MCP malware that survives across different AI development environments
- Supply Chain Scale: Attacks affecting multiple organizations through shared MCP dependencies
Industry Response
- Standards: Security extensions being added to MCP specification
- Tooling: MCPSecBench and MCPGuard representing first-generation security frameworks
- Governance: MCP security likely to be included in AI regulatory frameworks
Bottom Line
MCP isn't going away—it's too useful. But treating it like any other API integration will get you owned. The Universal AI Connector needs universal security thinking, not traditional perimeter defenses.Action Items for Your Environment:
- Audit: Find every MCP server in your org (they're probably already there)
- Secure: Implement the hardening patterns above
- Monitor: Add MCP-specific detection rules to your SOC
- Govern: Establish MCP server approval and vetting process
References
- JFrog Security Research. "Critical RCE Vulnerability in mcp-remote: CVE-2025-6514 Threatens LLM Clients." JFrog Blog. https://jfrog.com/blog/2025-6514-critical-mcp-remote-rce-vulnerability/
- AuthZed. "A Timeline of Model Context Protocol (MCP) Security Breaches." AuthZed Blog. https://authzed.com/blog/timeline-mcp-breaches
- eSentire. "Model Context Protocol Security: Critical Vulnerabilities Every CISO Should Address in 2025." eSentire Blog. https://www.esentire.com/blog/model-context-protocol-security-critical-vulnerabilities-every-ciso-should-address-in-2025
- Docker. "MCP Horror Stories: The Supply Chain Attack." Docker Blog. https://www.docker.com/blog/mcp-horror-stories-the-supply-chain-attack/
- Qualys ThreatPROTECT. "Anthropic Model Context Protocol (MCP) Inspector Remote Code Execution Vulnerability (CVE-2025-49596)." https://threatprotect.qualys.com/2025/07/03/anthropic-model-context-protocol-mcp-inspector-remote-code-execution-vulnerability-cve-2025-49596/
- Model Context Protocol Security. "CVE-2025-49596: RCE in MCP Inspector." https://modelcontextprotocol-security.io/known-vulnerabilities/cve-2025-49596/
- The Hacker News. "Critical Vulnerability in Anthropic's MCP Exposes Developer Machines to Remote Exploits." https://thehackernews.com/2025/07/critical-vulnerability-in-anthropics.html
- Imperva. "Another Critical RCE Discovered in a Popular MCP Server." https://www.imperva.com/blog/another-critical-rce-discovered-in-a-popular-mcp-server/
- arXiv. "Breaking the Protocol: Security Analysis of the Model Context Protocol Specification." https://arxiv.org/html/2601.17549v1/
- Cyata. "Cyata Research: Critical Flaw in Cursor MCP Installation." https://cyata.ai/blog/cyata-research-critical-flaw-in-cursor-mcp-installation/
- OWASP. "OWASP Top 10 for Large Language Model Applications 2025." https://owasp.org/www-project-top-10-for-large-language-model-applications/
0 Comments
No comments yet. Be the first to comment!
Leave a Comment