MCP服务器是新的攻击面
Model Context Protocol现在有了安全数据库。数据库中有50个条目。1
60天内共提交了30个CVE。在对2,614个MCP实现的调查中,82%存在易受路径遍历攻击的文件操作漏洞。38%至41%的服务器完全缺乏身份验证。2官方的MCP Inspector工具——开发者用来调试MCP服务器的工具——存在RCE漏洞。广泛使用的mcp-remote软件包存在操作系统命令注入漏洞。1
这不是理论上的攻击面。这些是真实软件包中的真实CVE,而真实的开发者正在将它们连接到Claude Code、Codex CLI和Cursor。本文在agent security的基础上,进一步扩展协议层面的威胁分析。
TL;DR
MCP服务器是agent生态系统中增长最快的集成面,同时也是审计最少的。漏洞数据库中有50个条目:13个严重,32个高危。输入验证失败和提示注入占了50个中的30个。本周的某一天,3个不同的MCP服务器同时暴露出3个SSRF漏洞。3规律很明显:社区发布MCP服务器的速度远快于审查的速度。
关键要点
- Claude Code用户:您连接的每一个MCP服务器都是您正在扩展的信任边界。立即运行
claude mcp list,审计已连接的服务器。如果您运行的是几个月前安装的社区MCP服务器,请检查它们此后是否打过补丁。 - Harness构建者:您的PreToolUse hooks是MCP工具调用到达未经审计的服务器之前的最后一道防线。建议配置hook在执行前验证MCP工具的输入,尤其是对接受URL、文件路径或shell命令的服务器。
- MCP服务器作者:MCP规范声明”SHOULD always be a human in the loop”。请将其视为MUST。验证所有输入。切勿通过字符串插值将用户可控的字符串传递给shell命令。切勿在未进行URL验证的情况下信任OpenAPI规范中的
$ref值。
数据
Vulnerable MCP Project维护着一个已记录MCP安全问题的数据库。1当前状态:
| 类别 | 数量 |
|---|---|
| 输入验证(注入、遍历) | 17 |
| 提示注入/工具投毒 | 13 |
| RCE/命令注入 | 12 |
| 凭据窃取 | 8 |
| DNS重绑定 | 6 |
| 身份验证失败 | 5 |
| SSRF | 4 |
严重程度:13个严重,32个高危,5个中等。132位安全研究员贡献了发现成果。受影响的服务器包括Anthropic自家的Git MCP服务器、官方MCP Inspector、Microsoft MarkItDown、GitHub Kanban、Figma、Jira、Grafana、Neo4j、Kubernetes,以及20多个社区构建的服务器。1
最令人震惊的是调查结果:2,614个MCP实现中,82%存在易受路径遍历攻击的文件操作漏洞。2每5个MCP服务器中,就有4个会允许攻击者读取其本不应访问的文件。
五种攻击模式
这60天的CVE浪潮揭示了五种反复出现的模式:2
1. 工具投毒。将恶意指令嵌入MCP工具描述中。agent读取描述、信任描述,然后使用自身已授权的工具执行隐藏指令。被投毒的工具本身从未执行——而是agent的合法工具完成了攻击。我们在deploy-and-defend paradox中讨论过这一模式:信任是可传递的,审计却不是。
2. 通过外部数据进行提示注入。从GitHub issues、Slack消息、邮件或网页获取内容的MCP服务器,会将攻击者可控的文本带入agent的上下文。注入的目标不是MCP服务器本身——而是读取服务器输出的agent。silent egress attack surface描述的是一般情况;MCP服务器是其中最常见的载体。
3. 初次批准后的信任绕过。Claude Code会在首次连接时要求您批准某个MCP服务器。此后,工具定义可在会话之间发生变化,并非所有情况下都会再次提示。安装时安全的服务器,在更新时可能行为大不相同。这种重新验证缺口是结构性的:协议并不要求对工具描述进行加密签名。2
4. 供应链入侵。已发布到注册表的MCP服务器被植入后门,包括冒充合法服务器的软件包。这与我们在the supply chain is the attack surface中记录的供应链模式相同,只不过应用到了MCP生态系统。
5. 跨租户暴露。在共享托管环境中,多个MCP服务器可以在执行前拦截彼此的函数调用。4从外部看似坚固的隔离边界,当多个服务器共享同一进程或容器时就会崩溃。
SSRF模式
本周一次扫描中,3个不同的MCP服务器同时暴露出3个SSRF漏洞:3
- n8n-mcp:通过实例主机注入导致的已认证SSRF
- mcp-from-openapi:通过OpenAPI规范中的
$ref值触发SSRF。含有内部URL的恶意规范会导致服务器在初始化阶段抓取这些资源 - stata-mcp:对用户提供的URL验证不足
MCP服务器中的SSRF尤其危险,因为服务器通常具备agent所没有的网络访问权限。以下是一份恶意OpenAPI规范如何演变为凭据窃取的过程:
第1步。攻击者发布一个包装外部API的、看似合法的MCP服务器。该服务器使用mcp-from-openapi从OpenAPI规范生成工具。
第2步。OpenAPI规范包含一个指向内部地址的$ref:
components:
schemas:
Config:
$ref: "http://169.254.169.254/latest/meta-data/iam/security-credentials/role-name"
第3步。在initialize()期间,MCP服务器通过抓取该URL来解析$ref。服务器运行在您的基础设施上:您的VPC内、您的笔记本电脑上、您的CI容器里。请求从一个受信任的源发往AWS元数据端点。
第4步。元数据端点返回临时IAM凭据:access key、secret key、session token。
第5步。此时,服务器已获得您的云凭据。它可以在工具响应中将其外泄、记录到外部端点,或直接使用。
agent从未做过任何恶意行为。用户批准了MCP服务器。OpenAPI规范看起来正常。$ref解析发生在库的层级,位于任何人审查的视线之下。SSRF将MCP服务器的网络位置转化为了攻击者的网络位置。
Microsoft在2026年3月修补了一个严重的Azure MCP SSRF漏洞(CVE-2026-26118)。同样的模式也出现在Azure上:一个高严重性的权限提升漏洞,可能窃取身份验证令牌并未经授权地访问Azure资源。5
应对之策
审计已连接的服务器。运行claude mcp list并审查每一个服务器。逐一对照Vulnerable MCP Project数据库进行核查。1移除您并未在使用的服务器。
锁定服务器版本。如果您从npm或pip安装MCP服务器,请锁定版本。不要自动更新。升级前审查更新日志。信任绕过模式意味着一次更新就可能改变工具定义而无需重新批准。
添加输入验证hook。在MCP工具调用上设置PreToolUse hook可在输入到达服务器之前进行验证:
#!/bin/bash
# .claude/hooks/validate-mcp-input.sh
INPUT_JSON=$(cat)
TOOL_NAME=$(echo "$INPUT_JSON" | jq -r '.tool_name // empty')
# Block MCP tools that accept URLs from passing internal addresses
if echo "$TOOL_NAME" | grep -q "^mcp__"; then
TOOL_INPUT=$(echo "$INPUT_JSON" | jq -r '.tool_input | tostring')
if echo "$TOOL_INPUT" | grep -qiE '(169\.254\.|10\.|172\.(1[6-9]|2|3[01])\.|192\.168\.|localhost|127\.0\.0\.1|metadata\.google|169\.254\.169\.254)'; then
echo "Blocked: MCP tool input contains internal/metadata address" >&2
exit 2
fi
fi
exit 0
考虑传输层隔离。runtime defense patterns for tool-augmented agents中的方法在这里直接适用:每个MCP服务器都是agent调用的工具,防御架构必须考虑到工具被攻陷的情形。HTTP MCP服务器运行在独立进程中,拥有明确的网络边界。Stdio服务器则与agent共享进程上下文。两种传输方式本身都不是绝对安全的。更关键的因素在于服务器是否能访问凭据、内部网络或敏感文件路径。请根据威胁模型所需的隔离边界来选择合适的传输方式。
关注数据库。位于vulnerablemcp.info的Vulnerable MCP Project是目前最接近MCP生态系统CVE跟踪器的存在。安装新服务器前请先查阅。
MCP生态系统增长迅速:索引服务器超过3,000个,月下载量达1亿次。6安全态势却没有跟上。一年前尚不存在的数据库,如今已收录50个漏洞。问题不在协议,而在实现。正如我在your agent has a middleman中所记录的那样,agent工具链中的每一个中介都是一次拦截机会,而大多数开发者从未对其进行审计。
来源
常见问题
Claude Code自带的MCP服务器受影响吗?
这些漏洞主要影响社区构建的第三方MCP服务器,而非核心的Claude Code MCP基础设施。不过,官方的MCP Inspector工具确实存在过RCE漏洞,因此”官方”并不等同于”免疫”。
应该停用MCP服务器吗?
不。MCP是一个强大的集成层。但请将每一个MCP服务器都视为信任边界。审计已连接的服务器、锁定版本,并为接受URL、文件路径或shell命令的服务器添加输入验证hook。
如何检查我的MCP服务器是否存在漏洞?
运行claude mcp list查看已连接的服务器。逐一对照Vulnerable MCP Project database进行核查。查阅该服务器在GitHub仓库中近期的安全公告。
-
The Vulnerable MCP Project。完整的MCP安全数据库。50个已记录漏洞,13个严重,32位贡献研究员。涵盖Anthropic、GitHub、Microsoft、Docker、Kubernetes及20多个社区服务器。 ↩↩↩↩↩↩
-
MCP Security 2026: 30 CVEs in 60 Days。2026年3月。2026年1月至2月共30多个CVE。2,614个实现中82%存在路径遍历问题。38%至41%缺乏身份验证。Exec/shell注入占所有已报告漏洞的43%。 ↩↩↩↩
-
GitHub Security Advisories,2026年4月8日:GHSA-4ggg-h7ph-26qr(n8n-mcp SSRF)、GHSA-v6ph-xcq9-qxxj(mcp-from-openapi SSRF)、GHSA-jpcj-7wfg-mqxv(stata-mcp验证)。 ↩↩
-
MCP and Its Critical Vulnerabilities。Strobes,2026年。攻击场景包括WhatsApp注入、Unicode混淆、跨服务器干扰以及实用防御建议。 ↩
-
Microsoft Patches Critical Azure MCP SSRF (CVE-2026-26118)。2026年3月。Azure MCP Server Tools中通过SSRF实现的高严重性权限提升漏洞。 ↩
-
MCP ecosystem。截至2026年3月,索引服务器超过3,000个,月下载量超过1亿。 ↩