9 月 12 日 arXiv 上线一篇 MCP 生态安全普查(2609.14119),标题很直白:《同名不同服务器》。它扫描了整个 MCP 注册库,结论比预想更糟。
普查里最硬的两个数字是什么?
普查发现,15.2% 的被扫服务器至少带一项安全发现,11.1% 至少一项高危,其中未鉴权的网络暴露占了高危的大头。即使做了精确率校正,高危盘子缩小但并未消失。10 月初社区又整理出官方 MCP server 上约 140 处「静默合同变更」——工具接口在版本升级时悄悄改了行为,调用方却毫无察觉。典型案例包括 CVE-2026-81486 路径穿越(CISA 已通报)与 CVSS 9.6 的 AWS Labs postgres MCP 服务器命令注入 CVE-2026-87911。
为什么「描述漂移」是最隐蔽的风险?
更值得警惕的是注册库的不稳定:半数多版本服务器悄悄修改了对外宣称的工具描述。MCP 把工具描述直接拼进模型的上下文,描述一变,模型对工具行为的理解就跟着变——这等于让攻击者可以通过更新一个包,悄悄改写 Agent 的行为边界,而人完全不会去逐字比对版本间的描述差异。
面对工具描述漂移该怎么防?
把工具描述纳入版本 diff 监控;对生产环境锁定 server 版本与哈希;建立工具调用的最小权限边界,即使描述被篡改,工具能做的事也有限。
MCP 生态正在重演哪段历史?
MCP 生态正在重演 npm 早年的供应链乱象,但因为工具会被模型自动执行,后果从「偷代码」升级成「自动执行命令」。审计工具链,必须像审计依赖项一样严格。
怎么给工具描述做常态化安检?
既然描述会漂移,就要把它纳入变更管理。给生产环境用到的每个 MCP server 存一份当前工具描述快照,每次升级包后自动 diff:工具数量、参数 schema、描述文本任一变化都告警。尤其警惕描述里「悄悄多了一句能力」的情况——那往往是攻击面扩大的信号。再配合锁定版本哈希、最小权限运行,即使某个 server 被投毒,Agent 能用它做的事也有限。供应链安全在 Agent 时代的核心,就是假设你下载的每个工具都可能随时变坏,并为此留好熔断装置。