Model Context Protocol 已成为把 LLM 连接到工具和数据的默认管道。Claude Desktop 用它,Claude Code 用它,Cursor 和 Windsurf 用它,一长串 agent 框架在它之上构建。OX Security 本周末丢出一份披露,主张参考 MCP 实现在 STDIO 传输初始化服务器的方式上有设计级缺陷,爆炸半径异常大。他们的研究者(Moshe Siman Tov Bustan、Mustafa Naamnih、Nir Zadok、Roni Bar)在下游库中编目了十一个 CVE,外加 Anthropic 针对 Python、TypeScript、Java 和 Rust 的参考 SDK 中的根架构问题。
机制很直接。当 MCP 客户端启动一个 STDIO 传输服务器时,初始化代码会调用一条操作系统命令。如果命令顺利返回 STDIO 句柄,客户端继续。如果失败,客户端收到错误——但命令已经运行过了。OX Security 把这条原语上的攻击分为四类:通过 STDIO 传输的未认证命令注入、绕过直接 STDIO 配置中现有加固的命令注入、零点击 prompt 注入用于编辑 MCP 配置文件指向攻击者控制的命令,以及市场攻击:隐藏的 STDIO 配置通过网络请求触发。下游影响覆盖 LiteLLM、LangChain、LangFlow、Flowise、LettaAI、GPT Researcher、Agent Zero、Fay Framework、Bisheng、Langchain-Chatchat、Jaaz、Upsonic、Windsurf 和 DocsGPT。保守计数是七千个公开服务器和合计一亿五千万以上的下载。
这个故事治理的那一半比技术的那一半更沉重。Anthropic 拒绝修改协议,称该行为「符合预期」。那个回答把安全责任转嫁到每个实现者身上,这是 OX Security 的核心抱怨——「把责任转嫁给实现者并不转移风险;它只是掩盖了谁制造了风险」。一些下游库已打补丁(LiteLLM、Bisheng、DocsGPT 在列)。很多没打。研究者记录了成功利用可以直接访问敏感数据、内部数据库、API 密钥和聊天历史。这里确立的先例是:参考协议会发运不安全的默认设置,即使研究者规模化地演示了利用,规范也不会调整。
如果你发布或消费 MCP 服务器,这周值得做三件事。一,审计你的 MCP 配置,识别任何来自市场或第三方来源使用 STDIO 传输的内容;把这些配置当作不可信输入对待。二,检查你依赖的下游库是否已打补丁。LangChain、LiteLLM、Flowise、Windsurf 用户应对照 CVE 公告核对版本号。三,别因为参考 SDK 的默认设置是默认设置就假设它们是安全的。治理信号很明确:Anthropic 正在把协议当作基础层,其安全性是实现者的问题。如果你是下游实现者,请构建你自己的加固——上游不会做。
