夜雨聆风学习资料网

ARTICLE · 1142409

你的 AI 工具可能正在执行攻击者指令:刚刚新一轮大规模漏洞被披露

你的 AI 工具可能正在执行攻击者指令:刚刚新一轮大规模漏洞被披露

大家好,我是虾哥。

如果你是企业级 AI 使用者, 正在用 MCP(Model Context Protocol)把 AI Agent 连接到 Slack、GitHub、数据库或内部 API,有个坏消息刚刚被披露。

 4 个月前,OX Security 披露了 MCP 历史上最严重的安全事件——11 个 CVE,STDIO 传输层的设计缺陷让任何能写 JSON 的人都可能让你的 AI 工具执行任意系统指令。Anthropic 的回应是:这是"expected behavior"。

坏消息:10 月 5 日,独立安全研究员 Syed Anas Mohiuddin 披露了新一轮大规模漏洞——Google、摩根大通、Weaviate、法国政府数字部门、印尼丹格朗市政府,同一批次被同一类 SSRF(服务端请求伪造)漏洞击中,10 月 8 日披露 Cycode 发现 MCP Python SDK 的 OAuth 实现存在凭据劫持风险,影响 1.9.1 至 2.1.1 版本,已在 2.2.0/1.30.0 修复。

这不是零散的安全事件,是 MCP 作为协议在架构层面的系统性风险。

本文会拆解:STDIO 缺陷的技术本质、Protocol Pivoting 新攻击路径、OAuth 漏洞的上下文,以及——你现在该分几步加固。


1|这次到底发生了什么

MCP(Model Context Protocol)由 Anthropic 在 2024 年底发布,定位是 AI 与外部工具之间的"统一接口"。到 2026 年 3 月,月下载量已达 9700 万次,Claude、Cursor、Windsurf、ChatGPT、Gemini、VS Code Copilot 全部原生支持。Linux 基金会在 2025 年 12 月接管了协议的治理权,AWS、Google、微软、Cloudflare 都是白金成员。

2026 年 1-2 月,安全问题集中爆发。 OX Security 在 4 月 15 日发布的报告,揭示了 MCP 架构层面的设计缺陷,核心问题集中在 STDIO(Standard Input/Output)传输层。

STDIO 的设计逻辑是这样的:

MCP 服务器以子进程形式运行,AI 应用通过 STDIO 和它通信。在 JSON 配置文件里,开发者需要声明 `command` 和 `args` 字段来指定运行什么程序——这是 MCP 设计的一部分,用来启动本地工具。

问题在于:用户控制的输入(prompt 内容)可以直接流入这些字段。OX Security 发现了四种攻击向量:

攻击向量一:直接注入

用户通过 prompt 直接修改 MCP 配置文件中的 command/args,

让 AI 帮攻击者启动恶意程序。

攻击向量二:白名单绕过

某些平台限制了可执行命令(如 python、npm),

但通过 npx -c ;[恶意命令] 的方式,

可以绕过高亮名单执行任意指令。

攻击向量三:零点击 prompt 注入

Windsurf、Claude Code、Cursor 等 IDE 中,

AI 会修改 MCP 的 JSON 配置文件。

攻击者通过 prompt 注入,让 AI 自动注册一个恶意 STDIO 服务器,全程无需用户确认(CVE-2026-30615,Windsurf)。

攻击向量四:MCP 市场投毒

研究者在 11 个 MCP 服务器市场中成功投毒了 9 个,

上传了不含真实恶意代码的概念验证payload,

但整个过程说明:即使是"官方推荐"的工具源也不可信。

这四个向量共同指向同一个结论: 漏洞不是某个实现没写好,而是 STDIO 传输层的设计本身。Anthropic 掌握所有主流 SDK(Python、TypeScript、Java、Rust),这个设计缺陷存在于所有语言版本中,只要用了 STDIO 传输层,就继承了这个问题。


2|哪些人真正受影响

受影响的人:

  • 在 IDE 里使用 Claude Code、Windsurf、Cursor 的开发者
  • 通过 LangChain、FastMCP、browser-use 框架构建 MCP 服务器的 AI 应用开发者
  • 在生产环境用 LiteLLM、Flowise 等平台跑 MCP 集成的团队
  • 企业内部通过 MCP 访问 Postgres、Salesforce、Slack 等工具的 AI Agent

你可能不在重灾区,如果:MCP 服务器完全由内部运维管理,没有外部用户能提交配置STDIO 传输层运行在真正隔离的 Docker 沙盒里,且网络访问受限所有 MCP 服务器从可信来源安装,不使用任何第三方注册市场企业已经有严格的 MCP 配置审批流程

实际上,大多数个人开发者和中小团队至少占了一条红线。 OX Security 在报告里明确指出:"这是供应链级别的事件,不是一个 CVE。"


3|Anthropic 为什么拒绝修复

这是整件事里最让人困惑的部分。

OX Security 在负责任披露流程中,多次联系 Anthropic,并提出了具体的协议层修复方案:只允许在 manifest 列表中声明过的命令执行,或者在 SDK 里默认加入命令白名单。这样做可以直接保护所有下游用户,而不需要每个开发者单独加固。

Anthropic 的回复是:这是"expected behavior"。

官方立场是:MCP 的 STDIO 传输层本来就设计为在受信任的环境里运行,应该配合 Docker 沙盒等隔离手段使用。在沙盒内,即使执行了恶意命令,影响也有限。

OX Security 对此的反驳很直接:沙盒内攻击者仍然可以挖矿、把服务器变成代理 relay、消耗计算资源。这是"把责任转移给实现者,而不是消除风险的来源"。

客观地说,两方都有合理成分:

  • Anthropic 的逻辑:STDIO 传输层本质上就是"在本地启动一个子进程",这是它的设计目的,不是 bug。要求它默认安全,就像要求 Docker 容器默认防逃逸一样,治标不治本。
  • 安全研究者的逻辑:当 97% 的 MCP 开发者都在用默认配置,而且没有受过安全培训的时候,"应该在沙盒里用"就等于"大多数人都在裸奔"。

这不是纯粹的技术争论,是安全协议设计的哲学分歧:默认开放 vs 默认安全。Anthropic 选了前者,把防御责任交给了生态开发者。


4|MCP v2.0 修好了吗

2026 年 7 月 28 日,MCP 发布了迄今最大幅度的修订版(v2.0 RC,锁定期 5 月 21 日),是这次安全危机的正面回应。

核心变化:

1. 无状态架构:去掉了 `initialize` 握手和 `Mcp-Session-Id` 头,每个请求自带协议版本和认证信息。这不只是性能优化,更是企业级部署的前提——有状态的协议无法水平扩展,无法用标准 HTTP 负载均衡。

2. 新增治理功能:服务注册与发现、细粒度 RBAC 权限控制、全链路追踪。工具调用有 trace ID全程可查,谁调了什么、返回了什么,可审计。

3. MCP Apps(1月26日):工具可以返回 HTML 界面渲染在对话里,Figma 和 Hex 已经用了这个能力。这是 MCP 从"工具协议"到"应用分发层"的延伸。

4. SEP-1442 提案:把协议从有状态会话改为无状态请求,减少长连接带来的运维复杂度。这个方向和 v2.0 一致。

但 v2.0 没有直接修复 STDIO 安全问题。 无状态架构解决的是扩展性问题,不是 STDIO 的命令执行设计缺陷。

真正的修复需要的是:SDK 层默认命令白名单、工具描述的运行时验证(防止工具投毒)、MCP 市场强制代码签名。目前这些是"开发者自行实现",不是协议层保证。

结论:v2.0 是正确的方向,但如果你现在跑的是 v1,升级 v2.0 不会自动让你的 MCP 用法变安全。你需要主动加固。


5|如果你涉及到,你现在该怎么做

按优先级分三步:

第一步:

1. 检查你的 MCP 配置文件是否允许外部用户修改

2. 如果你的应用允许用户提交自定义 MCP 服务器:

   - 强制使用白名单模式,只允许声明过的命令

   - 禁止通过 args 注入额外参数

3. 如果你在 Windsurf / Claude Code / Cursor 里使用 MCP:

   - 确认你没有配置来源不明的 MCP 服务器

   - 关闭 IDE 的"自动修改 MCP 配置"权限

第二步:

python

# 示例:用 FastMCP 的安全模式启动服务器

# 明确声明允许的工具,不使用 STDIO 的动态 command

from fastmcp import FastMCP

mcp = FastMCP(

    "安全助手",

    dependencies=["pandas", "requests"]  # 明确的依赖声明

)

@mcp.tool()

def query_database(sql: str) -> list:

    # 参数验证,不直接执行用户传入的原始 SQL

    allowed_tables = ["users", "orders", "products"]

    # ... 实际逻辑

    return results

核心原则:不要把用户 prompt 未经清洗就塞进任何系统调用。这是工具投毒的根本原因。

第三步:长期(规划 MCP v2.0 迁移)

  • 2026 年内会有更多企业级 MCP Gateway 产品出现(Azure MCP Gateway、Docker/Kong/Solo.io 方案),迁移到这些 Gateway 可以获得集中化的安全管控
  • 持续关注 MCP 官方的安全白名单标准进展
  • 如果你在企业环境用 MCP,做一次完整的攻击面评估

6|这对你的业务意味着什么

如果你是个人开发者:

立刻检查自己项目里的 MCP 配置,特别是 JSON 里有没有直接用变量拼接 command/args。IDE 类 MCP 工具(Cursor、Windsurf)相对安全,因为有 UI 层确认,但不要配置来源不明的服务器。

如果你是技术负责人:

MCP 已经进入企业核心业务流程(参考:Uber 每周数万次 Agent 执行,亚马逊把 MCP 工具打包成 SOP 模块)。安全债务不会因为"用了知名协议"就消失,MCP v2.0 的企业级功能(审计/权限/追踪)是正确的方向,但你需要主动规划迁移路径。

如果你是安全/合规团队:

这次事件的根本问题是"协议层没有强制安全默认值",MCP 已经捐给 Linux 基金会,未来的标准化进程值得关注。建议把 MCP 纳入 AI 供应链安全审计范围,参考 OX Security 的 MCP 安全建议(限制外部配置、强制白名单、沙盒隔离、不信任第三方市场)。


参考来源

  • OX Security MCP 供应链安全报告(2026年4月15日)

https://www.ranzware.com/anthropics-model-context-protocol-includes-a-critical-remote-code-execution-vulnerability

  • Hackmag 技术分析(2026年4月27日)

https://hackmag.com/news/mcp-flaw

  • Cocoloop 新闻(2026年4月22日)

https://news.cocoloop.cn/en/2026/04/mcp-stdio-design-flaw-anthropic

  • ithome 技术解析(2026年4月13日)

https://ithelp.ithome.com.tw/articles/10399700

  • Serpapi H1 2026 综述(2026年6月3日)

https://www.serpapi.com/blog/the-state-of-mcp-everything-that-changed-in-h1-2026

  • Fyself 安全新闻(2026年4月20日)

https://news.fyself.com/vulnerability-in-anthropic-mcp-design-allows-rce-and-threatens-ai-supply-chain

  • AI2Work MCP 分析(2026年4月12日)

https://ai2.work/blog/mcp-s-97m-install-milestone-makes-it-the-backbone-of-ai-agents

  • AI导航·Protocol Pivoting SSRF 漏洞(2026年10月6日)

https://xiaoan.cc/article/mcp-fu-wu-qi-pu-chu-tong-yi-zhong-ssrf-lou-dong-gu-ge-mo-gen-vt

  • Cycode MCP Python SDK OAuth 凭据泄露(2026年10月8日)

https://www.cybersecurity-insiders.com/mcp-python-sdk-flaw-exposed-oauth-credentials-to-account-takeover/

相关学习资料