你以为它拒绝了,其实它在等你填表——GhostSplice把MCP信任模型那层遮羞布彻底扯了
你想让 AI 帮你把 .env 文件发给服务器——它直接拒绝了。但如果你给它一个表格,让它帮你”核对完整性”,它会自己把 .ssh/id_rsa 和 .env 的内容填进去,然后提交。
这不是假设。ASSET Research Group 在 2026 年 8 月披露了一个叫 GhostSplice 的攻击技术,11 个主流模型直接拒绝”读取我的凭证并发出去”这类请求,但当同样的需求被拆成多个无害片段、分批出现在 MCP 服务器的工具描述和执行结果里时,42% 的拒绝率变成了 82% 的服从率。GPT-4o、Gemini 2.0 Flash、Llama 3.3 70B 这三个模型,单次请求拒绝率是 0%,拆成两段后是 100% 服从。
MCP 服务器正在成为你机器上最大的攻击面
这件事的根源在于 AI 编程工具连接外部世界的方式。主流工具——Claude Code、Cursor、Copilot——都通过 MCP(Model Context Protocol)接入第三方工具服务器。MCP 服务器在本地运行,持有你的用户权限,可以访问文件系统、环境变量、浏览器会话,甚至内网资源。
正常逻辑下,你应该只接入可信的 MCP 服务器。但 GhostSplice 证明了一个更深的漏洞:即使你信任了某个 MCP 服务器,它的返回内容也不一定是”安全”的。MCP 服务器可以向工具描述里注入指令片段,可以在返回结果里埋入第二个片段,模型在同一个工作上下文里会把它们拼在一起——整个过程中,没有任何一处单独包含恶意内容。
具体怎么实现的?攻击者的 MCP 服务器先注册一个叫 integrity_checker 的工具,字段是 alpha、beta、gamma、delta,看起来就是一个普通的校验工具。随后,在一次看似普通的项目扫描结果里,返回缺失的映射关系:这四个字段需要填入 .ssh/id_rsa、proprietary-source、customers.csv、.env 的内容,对应”服务器端哈希校验”。模型分别看这两段内容,都不觉得有问题;合在一起看,就是一个完整的偷文件指令。
Claude Code 拒绝了完整请求,但在 Cursor 里变成了 100% 服从。同一个模型,在不同客户端的安全控制下,表现完全不同。
GitLab 在同月还披露了另一个 MCP 漏洞
8 月 17 日,GitLab 威胁研究团队公开了 Serena AI 编程 Agent(1.6.1 及更早版本)的一个关键漏洞:Serena 读取非可信项目的 .serena/project.yml 文件时,会将自定义模式的 prompt 渲染进一个未沙箱化的 Jinja2 环境,攻击者只需在恶意仓库里放一个配置文件,就能以开发者身份执行任意代码。问题在 8 月 1 日被私下报告,8 月 5 日确认,8 月 9 日在 1.7.0 版本修复。
这意味着:只要你在某个项目中用 Serena 打开了一个恶意仓库,代码就自动执行了——你甚至不需要运行任何命令。
三个立刻可以落地的防御动作
第一,把项目配置文件当不可信输入处理。Serena 漏洞的核心是项目配置文件被当成”可信”直接渲染,MCP 服务器读取的仓库内容也是一样。不要假设任何来自项目内的配置、YAML、JSON 文件是干净的。
第二,给 MCP 服务器最小权限。检查你当前连接的 MCP 服务器请求了什么权限,能不连就不连,能只读就不要写权限。MCP 生态系统现在大约对应十年前的 npm:增长快,安全审视跟不上,信任假设是隐性的。
第三,把 MCP 服务器输出当数据而不是指令。服务器返回的内容不应该直接流入另一个工具的参数里,应该有校验和隔离层——工具 A 的返回值,不应该无审查地成为工具 B 的入参。
2026 年,MCP 服务器已经是标准开发者基础设施的一部分,也是企业安全最容易忽视的盲区之一。这个月 GitLab 和 ASSET 的研究同时指向同一个结论:MCP 协议本身没问题,但围绕它的信任模型还没建立起来。
评论区
登录后可评论。