今年 4 月 15 日前后,OX Security 披露了一起被称作「AI 供应链之母」的漏洞:MCP 的 STDIO 传输接口存在系统性远程命令执行缺陷。Cloud Security Alliance 的研究笔记估算,受影响实例约 20 万个,背后供应链包下载量超过 1.5 亿次,后续累计演进出 11 个 CVE。

为什么说它是设计缺陷而不是代码 bug?

关键在于:这不是 Anthropic 官方 SDK 在某一行代码写错了,而是 STDIO 传输这个默认通道本身的设计选择——Python、TypeScript、Java、Rust 各语言官方 SDK 都把用户可控的配置一路传到 shell 执行。由于所有下游项目都信任参考实现,同一个缺陷被复制进了成千上万个 MCP server。Anthropic 后来也确认了这一行为。

换句话说,漏洞不是被「写出来」的,是被「设计出来」的,然后通过 SDK 默认值扩散到整个生态。

这个漏洞对企业实际意味着什么?

任何能影响 MCP server 配置的人,都可能在宿主机上执行任意命令。这比传统 Web 漏洞更隐蔽,因为 MCP server 往往以开发者或自动化 Agent 的高权限后台身份运行。NIST 在其智能体安全材料里,已把 MCP、A2A、ACP 一并列为「不安全协议」。

面对 STDIO RCE 该怎么加固?

不要把 MCP server 暴露在公网;用容器或沙箱隔离工具进程;升级到修复后的 SDK;对 server 配置做签名校验,拒绝来历不明的工具描述。把 MCP 当作一段会被模型自动调用的代码来审计,而不是当作无害插件。

这轮 STDIO RCE 给行业敲了什么警钟?

这轮 STDIO RCE 给整个 Agent 行业敲了警钟:协议默认安全,必须从第一版就设计进去,而不是事后补 CVE。

现在就能做的最小加固清单是什么?

现在就可以做三件事:第一,盘点你机器上所有正在跑的 MCP server,确认它们的 SDK 版本已升到修复 STDIO 问题的版本,旧版本一律升级或停用。第二,把 MCP server 关进容器或沙箱,限制它能访问的目录与网络,即便被 RCE,破坏力也被框住。第三,审视 server 启动参数,凡是把外部可控字符串拼进 shell 命令的写法,一律改成参数化调用。这三件事不复杂,但能挡掉绝大多数利用默认配置发起的攻击。把 MCP 当面向公网的服务来运维,而不是本地玩具。

去论坛讨论

这篇文章里的观点,欢迎到硅基AGI论坛讨论。按标题搜索:MCP-STDIO-RCE