系统:运行中
← 返回所有攻击
DATA LEAK MEDIUM NEW

从 MCP 服务器泄露的机密:检测由协议引发的信息暴露

2026 年 6 月底的一项研究对 10,655 个真实 MCP 服务器进行了静态分析,发现超过 10% 会泄露凭据、API 密钥或个人信息——并非通过外发请求,而只是通过返回、记录日志或抛出敏感值。

2026-07-07 // 6 min affects: mcp-servers, llm-agents

这是什么?

模型上下文协议(MCP)已成为将大型语言模型接入外部工具与数据的标准方式。2026 年 6 月底的一篇 arXiv 论文,“What Happens Locally, Leaks Globally”: Detecting Privacy Leakage Risks in MCP Servers(2606.21338),指出这种便利带来了一个尚未被充分审视的具体风险:敏感值从 MCP 服务器代码中逃逸,并非源于某个明显的外泄调用,而是源于协议本身的日常运作机制。

论文的核心观察是:这里的泄露是由协议引发的。在传统应用中,数据外泄漏洞通常涉及一次显式的外发请求——一个 HTTP POST、一次套接字写入、一份被送出机器的日志。而在 MCP 服务器中,一份凭据、一个 API 密钥或一段个人身份信息(PII),只需被工具处理器返回、被写入日志,或在异常消息中被抛出,就能越过本地机器与 LLM 之间的边界。源代码中没有可供搜索的 send()。敏感值一旦落入模型将会读取的内容中,便离开了受信任的本地上下文。

为衡量其普遍程度,作者构建了静态分析框架 MCPPrivacyDetector,并在 10,655 个真实 MCP 服务器 上运行。结果显示,其中超过 10% 存在泄露,经确认的案例包括暴露的 Bearer 令牌、被传播的 API 密钥以及明文认证凭据。

工作原理

这里的检测问题比经典的污点分析(taint analysis)更难,论文直接应对了两点原因。

其一,MCP 服务器由多种语言编写——Python、TypeScript、Go 等等——因此单一语言的分析器会遗漏生态系统的大部分。MCPPrivacyDetector 将这些异构代码库提升为一种统一的程序表示,使同一套分析逻辑无论源语言如何都能适用。

其二,危险的「汇点」(sinks)并非常见的那些。标准工具会寻找网络汇点或文件写入汇点,而这里的汇点是特定于协议且隐式的:工具处理器的返回值、一条日志语句、一个返回给调用方的错误对象。该框架将它们编码为汇点,应用上下文感知的语义过滤,把真正敏感的值(令牌、密钥、PII)与无害字符串区分开来,随后执行污点分析,枚举从敏感源到这些隐式汇点的可行流。

敏感源                    隐式 MCP 汇点              结果
─────────────             ──────────────             ──────
环境变量 / 机密       ──►  处理器返回值        ──►  值到达 LLM 上下文
配置凭据             ──►  日志语句            ──►  值被写入共享日志
认证令牌             ──►  异常 / 错误消息      ──►  值被返回给调用方

论文未公开任何漏洞利用代码;其贡献是一项测量研究外加一个检测器。这与通过文件元数据进行的注入以及 MCP 生态中的污点式服务器缺陷所体现的「防御者最少检查的通道」模式如出一辙——不同之处在于,这里的泄露路径在源代码中看起来完全像正常的工具行为。

为何重要

MCP 服务器通常持有真实机密:工具存在的全部意义,就是代表模型向数据库、SaaS API 或内部服务进行认证。当这些机密流入处理器输出、日志或错误信息时,它们便可被模型读取——并进而被模型所接触到的一切读取。再加上一个既能看到不可信内容、又能对外采取行动的模型,便构成了经典的致命三要素:工具响应中一个被泄露的令牌,距离被外泄只差一次间接注入。

规模才是重点。在一万多个服务器中超过 10% 的泄露率,并非少数几个配置错误的部署,而是当今 MCP 服务器编写方式的一种结构性特征,呼应了 MCP 后端漏洞模式的更广图景,以及此前单一服务器的事件,如 Splunk MCP 服务器令牌泄露。由于泄露没有显式的外发调用,它也能绕过代码审查以及许多以网络汇点为目标的机密扫描。此类问题正属于 OWASP LLM02——敏感信息披露

防御

统一原则是:把工具处理器返回、记录或抛出的一切都视为将会到达模型的数据,因而也是一条外发通道。

将机密与工具输出分离。处理器应只返回模型所需的结果,绝不返回它为获取该结果所用的凭据;把令牌与密钥保留在模型永远看不到的一层。返回前先脱敏:对返回值、日志行与错误消息进行过滤,识别高熵字符串与已知机密格式,使一个异常无法把 Bearer 令牌送给调用方。收紧凭据权限,让被泄露的凭据低价值且短寿命,并在任何疑似暴露时轮换——这与为智能体技能中的凭据泄露所建议的纪律相同。在 CI 中引入本文所演示的那类静态分析,专门检查流向协议汇点的数据流,而不仅是经典的网络汇点。最后,使部署与已发布的指南保持一致:NSA 的 MCP 安全设计考量(2026 年 6 月)与更广泛的智能体数据隐私研究所梳理的缓解措施,都强调对输出进行严格校验,以及在智能体与其上下文提供方之间设立最小权限边界。

状态

项目详情
披露arXiv 预印本 2606.21338,2026 年 6 月底(测量研究 + 检测器)
性质由协议引发的机密/PII 泄露,经由 MCP 工具处理器的返回值、日志与错误消息
检测器MCPPrivacyDetector——跨语言静态分析 + 上下文感知语义过滤 + 面向隐式 MCP 汇点的污点分析
规模扫描 10,655 个真实 MCP 服务器;在 >10% 中发现泄露;确认存在 Bearer 令牌、API 密钥、明文凭据
受影响处理机密的 MCP 服务器实现(与语言、模型无关)
类别OWASP LLM02——敏感信息披露

上述结果反映所引用的研究。静态分析器报告的是可行的数据流,而非已确认的实时暴露——在对某个具体服务器下结论前,请在你自己的部署中验证被标记的路径。

Sources