当研究人员在2026年初对10,000个公开可访问的模型上下文协议(MCP)服务器进行审计时,结果令人震惊:大约40%的服务器存在严重的安全漏洞,足以依赖它们的AI代理。对于一个已成为连接大型语言模型与外部工具和数据源事实标准的协议来说,这并非一个小问题——这是一个系统性基础设施危机,而生态系统尚未发展出应对它的防御能力。
由Anthropic开发并在AI工具生态系统中迅速采用的MCP,旨在为AI代理提供与文件系统、API、数据库和Web服务交互的标准化接口。它的优雅之处也是其风险所在:单个MCP服务器可以授予代理对生产数据库的读写权限、执行shell命令或窃取文件。当该服务器安全性不足时,代理就成为了攻击向量。
审计结果
漏洞可分为几个常见类别。身份验证弱点最为常见——许多MCP服务器完全没有身份验证层,而是依赖网络级别的访问控制,而这些控制经常被开发人员错误配置。在MCP服务器通过互联网暴露的生产环境中(这种情况比应有的更常见),未经授权的访问很容易实现。
输入净化失败位居第二。MCP协议允许代理将任意字符串作为工具参数传递,而许多服务器实现直接将这些字符串转发到shell命令或数据库查询中,没有进行净化。经典注入攻击——这个行业花了二十年时间学习如何在Web应用中预防的问题——在AI基础设施中再次出现,频率惊人。
通过工具链进行权限提升是第三类漏洞,也是最复杂的一类。MCP的设计允许代理按顺序调用多个工具。研究人员发现,通过将低权限读取操作与访问控制不足的写入操作链接起来,攻击者可以从只读数据访问提升到在主机系统上执行任意代码。
为什么这与Web安全在结构上不同
传统的Web安全基于请求-响应模型,由人类(或至少是确定性程序)发起操作。MCP服务器的工作方式不同:它们授予自主AI代理链接操作、解释上下文并在每一步无需明确人类批准的情况下决定下一步做什么的能力。
这创造了安全研究人员所称的”自主攻击面”——一种风险类别,其中攻击者不是发送畸形HTTP请求的人,而是一个能够推理采取什么行动来实现目标的AI代理。被入侵或恶意的MCP服务器可以指示代理执行任何单个API调用都不会标记为可疑的操作,恰恰是因为代理的行为是整体评估的,而不是在单个请求级别评估。
提示注入向量尤其令人担忧。返回来自外部数据的MCP服务器——网络爬虫工具、电子邮件阅读器、日历集成——可以在该数据中嵌入对抗性指令。AI代理缺乏健壮的机制来区分系统提示中的指令和嵌入在工具响应中的指令,可能会执行这些注入的命令。这并非假设:已在多个实际代理部署中得到证实。
标准化差距
部分问题在于MCP从规范到广泛采用的速度超过了安全标准的跟进速度。该协议本身定义了消息格式和传输机制,但对身份验证模型、授权范围或输入验证要求却很少提及。服务器实现者不得不自己做出这些决定,结果可想而知地不一致。
将其与OAuth 2.0生态系统相比,后者经过多年迭代——通过OAuth 1.0的失败、OAuth 2.1的安全扩展以及PKCE的发展——才达到大多数实现默认相对安全的状态。MCP大致相当于2010年的OAuth:一个有用但采用速度超过其安全模型成熟度的协议。
作为多代理通信MCP竞争对手的A2A(Agent-to-Agent)协议面临类似的挑战。两种协议都需要安全配置文件——类似于基于OAuth构建的OpenID Connect配置文件——明确规定”默认安全”的实现应该是什么样子。
开发者现在应该做什么
如果您在生产环境中运行MCP服务器,审计结果转化为一个具体的检查清单。首先,在您的AI代理运行时与它连接的每个MCP服务器之间实现相互TLS身份验证。在开发中,通过头部传递的共享密钥是可以接受的;但对于访问敏感数据的生产系统来说,这是不可接受的。
其次,将每个通过MCP工具参数传递的字符串视为不受信任的用户输入。这意味着数据库工具使用参数化查询,shell命令工具使用严格的允许列表,并且每种参数类型都需根据架构进行显式验证。MCP协议不会为您做这些。
第三,在 MCP 服务器层面实施最小权限原则。提供文件系统访问的服务器应该只暴露其需要的特定目录,而不是整个文件系统。如果不需要写入权限,数据库工具应使用只读凭据连接。MCP 使广泛访问变得容易,但这不应成为授予广泛访问权限的理由。
第四,记录每个工具调用的完整参数集。当代理行为异常时,您需要完整的审计跟踪来了解发生了什么。目前大多数 MCP 服务器实现在连接级别记录日志,而不是在调用级别记录——这对于安全目的来说是不够的。
生态系统的响应
Anthropic 已确认这些安全调查结果,并表示未来的 MCP 规范版本将包含规范性安全要求,而非信息性建议。MCP 社区已开始开发正确实施安全要求的共享认证库,减轻了各个服务器实现者的负担。
多家安全供应商已宣布推出 MCP 感知的扫描工具,可以审计服务器配置并标记常见漏洞。这些工具是否能在重大事件发生前被广泛采用并产生足够影响,仍有待观察。
40% 的数字是一个快速变化目标的快照。随着生态系统的成熟和安全工具的改进,这个数字可能会下降。但是,从”协议采用”到”安全成熟”之间的窗口期,恰恰是攻击往往发生的时候——而对于能够自主执行代码、读取文件并与外部服务交互的 AI 基础设施而言,其风险高于之前的 Web API。
MCP 的成功创造了这个问题。该协议在变得安全之前就已成为了基础设施。现在,行业必须做更艰难的工作,即为数百万开发者已经依赖的系统加装安全功能——这正是 Web 在处理 HTTP cookies 和 SQL 拼接时面临的挑战,也花费了一代人的安全事件才得以解决。
