MCP协议漏洞影响20万服务器:这次不是笔误,是架构问题
4月18日,有个消息在技术圈炸了:MCP 协议被曝存在安全漏洞,波及范围包括 Anthropic 官方支持的全部 11 种语言——Python、TypeScript、Java、Kotlin、C#、Go、Ruby、Swift、PHP、Rust。
不是笔误。OX Security 的报告说得很清楚:这是架构层面的设计决策问题,不是简单的代码笔误。
说实话,我看到这个消息的第一反应不是慌,而是「果然」。
之前聊 AI 安全事件的时候我说过,source map 泄漏和真正的源码泄漏是两码事。 那次事件媒体炒得很热,但实际上影响有限。这次不一样——这次是实打实的协议层漏洞。
漏洞的核心,简单说就是:MCP 客户端在处理包含空格的路径时,没有做充分的验证,可能导致目录遍历攻击。这个漏洞利用的门槛其实不低,需要恶意服务器配合、特定的路径格式,加上客户端的具体实现——但架不住波及面广。
问题来了:媒体说「20万服务器受影响」,实际风险到底有多大?
我的判断是:短期内的实际被利用风险是中低级别。不是那种可以大规模自动化的漏洞。但这个漏洞的存在,让整个 MCP 信任模型的根基产生了动摇。
什么信任模型? MCP 协议的核心假设是:服务器输出是可信的。但现实是 MCP 服务器来源多元,可信度参差不齐。如果连协议层都不能完全信任,那生产环境怎么部署?
我对这件事的态度是:比起事件本身,更值得关心的是后续如何演进。
MCP 生态各方会不会联合修复?协议层会不会增加更严格的安全验证?这些问题如果得不到好的回答,那类似的漏洞以后还会出现。
从工程实践角度,我的建议是:生产环境部署 MCP 服务器隔离方案,比如容器化或者最小权限原则,而不是完全依赖协议层的安全假设。