MCP 的安全账单:这不是 Bug,是设计

OX Security 揭示 MCP STDIO 接口存在架构级 RCE 漏洞,影响 20 万台服务器——Anthropic 的回应是「这是预期行为」。

工程实践 MCP 安全 AI Agent RCE 工具投毒

MCP 生态在 2026 年初迎来了它的第一次系统性安全危机。不是几个漏洞,而是一张账单。

OX Security 在 4 月 15 日发布的报告记录了一个冷峻的事实:Anthropic 的 Model Context Protocol SDK,在其 STDIO 传输接口中,存在一个架构层面的 RCE(远程代码执行)漏洞,影响 Python、TypeScript、Java、Kotlin、C#、Go、Ruby、Swift、PHP、Rust 全部 11 种官方支持语言。影响范围超过 20 万台 AI 服务器。

Anthropic 收到通报后的回应是:「属于预期行为」——并在 9 天后更新了 SECURITY.md 文档。

这个漏洞到底是什么

STDIO 传输接口是 MCP 用来在本地启动子进程(MCP server)并通过标准输入/输出通信的机制。问题在于,底层执行逻辑会运行任何传入的操作系统命令,即使服务器启动返回错误,命令也会被执行,全程无校验、无警告。

OX Security 的研究者在真实环境中验证了四类攻击:

  • LangFlow:915 个公开实例,无需账户即可获取会话令牌并完整接管
  • Letta AI:拦截「测试连接」请求,替换载荷,直接在生产服务器执行任意命令
  • Flowise:白名单+过滤防护被一行 npx -c 参数绕过
  • Windsurf IDE:用户访问恶意网站,零点击在本地执行任意命令(CVE-2026-30615)

这不是疏忽,而是架构选择。OX Security 的结论是:「当底层架构允许任意子进程执行时,临时输入过滤毫无意义。」

60 天内 30+ CVEs:生态系统的普遍脆弱性

在更宏观的视角下,Agent Wars 的分析对 2,614 个 MCP 实现进行了扫描,结论令人不安:

  • 82% 的文件操作实现存在路径穿越漏洞
  • 67% 存在代码注入风险
  • 38–41% 的已注册 MCP 服务器完全没有认证机制
  • 单个漏洞 CVE-2025-6514(mcp-remote 的 CVSS 9.6 RCE)在公开披露前已有超过 43.7 万次下载

而 Tool Poisoning——将恶意指令嵌入工具描述字段——被确认影响 Anthropic、OpenAI、Cursor、Zapier 等几乎所有主流 MCP 客户端。更隐蔽的「成本放大攻击」可以让单次查询的实际计算成本被放大 658 倍,从外部完全看不出来。

研究者向 11 个主流 MCP 市场上传了恶意服务器的概念验证,9 个直接接受,无安全审查,只有 GitHub 托管注册表拦截了提交。

为什么传统安全手段在这里失效

这里有一个根本性的问题。

传统防火墙、RBAC 是静态规则——它们识别 IP、路径、权限表。但 MCP 架构里的「路由器」是 LLM 本身,它的工具调用基于语义判断。你没法用静态规则检查一个模型是否被说服执行了不该执行的操作。

“The protocol’s foundational assumption — that agents can implicitly trust the metadata provided by registered tools — is an architectural liability that no amount of patching will fully address.” — Agent Wars 安全分析报告

密码学验证和持续重校验,不是「未来版本的 Feature」,是现在部署 MCP 的前提条件。

对工程师的实际意义

如果你在生产环境接入了第三方 MCP server,现在值得认真检查:

  1. 来源可信吗——那个 server 是否来自你信任的来源?
  2. 工具描述有没有异常内容——把所有工具描述当作不可信的外部输入处理
  3. 是否有机制检测异常调用频率——658 倍的成本放大攻击不会触发标准告警
  4. 沙盒隔离——用严格路径白名单的沙盒运行 MCP server,不要让它继承宿主权限

防御工具目前有 Invariant Labs 的 mcp-scan 和 Smithery 注册表审计,但离生产级别的覆盖还很远。

MCP 的采用速度远快于其安全机制的成熟速度——这个差距正在从理论风险变成已验证的实际损失。