← 所有文章

MCP服务器是新的攻击面

From the guide: Claude Code Comprehensive Guide

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仓库中近期的安全公告。


  1. The Vulnerable MCP Project。完整的MCP安全数据库。50个已记录漏洞,13个严重,32位贡献研究员。涵盖Anthropic、GitHub、Microsoft、Docker、Kubernetes及20多个社区服务器。 

  2. MCP Security 2026: 30 CVEs in 60 Days。2026年3月。2026年1月至2月共30多个CVE。2,614个实现中82%存在路径遍历问题。38%至41%缺乏身份验证。Exec/shell注入占所有已报告漏洞的43%。 

  3. 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验证)。 

  4. MCP and Its Critical Vulnerabilities。Strobes,2026年。攻击场景包括WhatsApp注入、Unicode混淆、跨服务器干扰以及实用防御建议。 

  5. Microsoft Patches Critical Azure MCP SSRF (CVE-2026-26118)。2026年3月。Azure MCP Server Tools中通过SSRF实现的高严重性权限提升漏洞。 

  6. MCP ecosystem。截至2026年3月,索引服务器超过3,000个,月下载量超过1亿。 

相关文章

Project Glasswing: When a Model Finds Too Many Bugs

Anthropic built a model that finds thousands of zero-days, then restricted it to 12 partners. What Project Glasswing mea…

8 分钟阅读

When Your Agent Finds a Vulnerability

An Anthropic researcher found a 23-year-old Linux kernel vulnerability using Claude Code and a 10-line bash script. 22 F…

9 分钟阅读

The Ralph Loop: How I Run Autonomous AI Agents Overnight

I built an autonomous agent system with stop hooks, spawn budgets, and filesystem memory. Here are the failures and what…

11 分钟阅读