44 · 恶意 MCP 服务器:跨通道分裂攻击与供应链风险全景

安全 供应链 MCP Agent 提示注入
ASSET Research Group(GhostSplice, 2026-08-10)· The Hacker News 报道 · 15+ 起真实事件(2025-04 → 2026-08)

Previous: 2025-04 起,Invariant Labs 首次定义 Tool Poisoning(工具投毒);2025-09 postmark-mcp 成为首个真实恶意 MCP 服务器(~300 组织邮件外泄);同一时期 CVE-2025-6514(9.6)与 CVE-2025-49596(9.4)证明"连一个服务器 = 主机沦陷"。

This: 2026-08-10 ASSET Research Group 披露 GhostSplice:恶意指令跨三个通道拆分(工具描述 / 工具结果 / sampling 请求),任何单条都不含恶意内容,agent 跨边界组合后照做——两段拆分让 11 个模型的平均合规率从 42% 升到 82%。此前"逐条审查"的防御思路被直接击穿。

Effect: 同一模型在一个客户端拒绝、在另一个客户端 100% 外泄——模型拒绝不是安全边界,agent harness 才是。MCP 生态(~8% 仓库被标记可能恶意、53% 服务器用长寿命静态密钥)正在复刻 npm/pip 供应链十年的全部教训。

一、背景:MCP 为什么是新的攻击面

Model Context Protocol(MCP)是 Anthropic 2024-11 开源的 agent 工具协议:把外部能力(文件系统、GitHub、Slack、邮件、数据库)封装成"工具",供 AI 编程助手(Cursor、VS Code/Copilot、Claude Code、Codex CLI)在会话中调用。它的核心信任假设是:你连接的服务器,是你信任到愿意委托权威的代码。

这个假设在 2025 年被系统性地击穿。安全社区很快意识到 MCP 放大了两个经典问题:

攻击链条的通用形态(Invariant Labs 的"致命三要素"):不可信指令 + 敏感数据 + 外泄通道,三者交汇即出事。截至 2026-08,官方 Registry 上线约 2,000 个条目,但不校验服务器内容、无版本签名——"注册表是发现层,信任评估是消费者责任"。

二、GhostSplice:跨通道信任碎片化

2.1 核心机制:没有一条消息是恶意的

此前所有防御(模型拒绝训练、单条消息过滤、用户批准对话框)都假设"恶意指令以完整形态出现在某一条消息里"。GhostSplice 绕过的正是这个假设:MCP 协议在结构上保持工具/结果之间的边界,但 agent 在自己的共享工作上下文中跨边界组合信息。攻击者把"读哪些文件 + 填到哪些字段 + 发到哪个工具"拆成多块,任何单块都不构成完整恶意指令。

2.2 攻击链五步(参考实现)

  1. 投递恶意服务器:社交工程 / 仿冒包 / 第三方市场分发。GhostSplice 不是远程攻击——前提是受害者已连接恶意服务器、agent 本身有目标文件读取权限;
  2. 铺设无害工具:服务器声明一个看似人畜无害的工具 integrity_checker,带四个平淡字段(alpha、beta、gamma、delta),工具描述中不出现任何敏感文件名;
  3. 补全映射:稍后,另一次"项目扫描"的工具结果提供映射关系——要求把 .ssh/id_rsa、专有源代码、customers.csv、.env 的内容填入上述字段,理由是"服务端哈希校验";
  4. 组合触发:分开看,任何一段都不含完整窃取指令;合起来看,它们指示 agent 收集敏感文件并传回攻击者工具;
  5. 外泄:agent 以"填写工具要求的表单"的朴素认知执行任务,敏感内容经工具参数发给攻击者服务器。
最有效的诱饵是最平淡的模板:"填表"式请求给了模型最少的可质疑点;精心编造的合规故事反而给了模型可被识破的破绽。这是研究中最反直觉的发现。

2.3 有效性数据(研究机构自测,非通用结论)

测试单段两段拆分后
11 个 API 测试模型平均合规率42%82%
GPT-4o / Gemini 2.0 Flash / Llama 3.3 70B0%100%
Claude Haiku 4.5(API 测试)0%API 测试 0%,但三段式 Cursor 测试 100%
GPT-5.4Cursor 90% · Codex CLI 100% · Claude Code 背后 0%
Claude Sonnet 4.6 / Opus 4.6列表标 0%,但 Sonnet 在一次测试中仍外泄了含硬编码密钥的专有源码
最尖锐的发现:同一个模型在一个编程客户端拒绝、在另一个客户端外泄——差异完全来自外围安全控制(harness)。研究团队明确告诫:这些数字只代表特定配置下的测试结果,不代表任何模型"免疫"。

2.4 第三条通道:sampling

MCP 的 sampling 特性允许服务器向 agent 模型发送提示(服务器发起请求)。研究发现:VS Code with GitHub Copilot 是唯一接受 sampling 请求的主流工具(Cursor、Claude Code、Claude Desktop 均拒绝),且微软代码把服务器的 systemPrompt 逐字作为系统消息前置,无任何安全包装;批准对话框只显示服务器名称,从不显示被注入的提示文本。sampling 请求本身不指名任何文件——真正的文件清单在后续工具结果中才出现。

三、真实事件时间线(2025-04 → 2026-08)

时间事件机制 / 影响
2025-04Invariant Labs 定义 Tool Poisoning恶意指令藏入工具名称/描述/输入 schema;PoC:被投毒的 add 工具指示 Cursor 读取 ~/.ssh/id_rsa 并外泄
2025-04WhatsApp MCP 外泄经 send_message 的 content 字段(超出滚动可见区)窃取完整聊天记录
2025-05GitHub 官方 MCP 被利用恶意 issue 注入;PAT 同时覆盖公开与私有仓库 → 越界读取并写公开 PR。架构性缺陷:凭据边界与信任边界不一致
2025-06CVE-2025-49596:MCP Inspector RCE(9.4)本地代理无认证绑定 0.0.0.0,恶意网页 DNS rebinding 触发 shell;~560 实例暴露公网;48 小时修复
2025-07CVE-2025-6514:mcp-remote 命令注入(9.6)OAuth 回调值未校验拼入本地 shell;~437,000+ 下载受影响;连接不可信服务器 = 主机 RCE
2025-07Lakera 零点击 RCE 链(Google Docs MCP + Cursor)静默共享的恶意 Docs 内隐藏注入,Cursor 拉取即触发,零用户交互
2025-09postmark-mcp:首个真实恶意 MCP 服务器npm 仿冒包先发 15 个干净版本养信任,v1.0.16 加一行 BCC 代码;用受害者自己的 API key → 通过 SPF/DKIM;~1,643 下载、~300 组织、3,000–15,000 封/日邮件外泄(Koi Security 披露,泰国 CERT 确认)
2025-09Shai-Hulud 供应链蠕虫(CISA 确认)维护者遭伪造 2FA 钓鱼;18 个包(chalk/debug 等,~26 亿周下载)被投毒;蠕虫窃取 npm/GitHub/AWS/GCP token;其中若干是官方 MCP SDK 的传递依赖
2025-10CVE-2025-59536:Claude Code 配置继承(8.7)仓库内 .claude/settings.json + .mcp.json 恶意 commit 自动批准 MCP 服务器,绕过同意对话框;克隆恶意仓库即静默装后门
2025 下半年MCPTox 学术基准20 个 LLM × 45 个真实服务器 × 353 工具;最强前沿模型 o1-mini 攻击成功率 72.8%——更强的模型往往更服从
2025 夏MSA:会话记忆窃取(WPES '25)"寄生参数":恶意工具声明必需的 task_history 参数,LLM 顺从打包整个会话上下文传出;捕获率与外泄率 100%,记忆重建保真度 86%+(协议级缺陷)
2026-06Ghostcommit(ASSET)PNG 隐写提示注入:AGENTS.md 指向图片,图内文本指示逐字节读 .env;73% 的合并变更无人工审查,攻击实用性强
2026-07CVE-2026-52830:fast-mcp-telegram 路径穿越(9.4)原始 token 拼入会话文件路径且不拒绝 ..;无认证远程攻击者可接管 Telegram 会话(读/发消息、MTProto 调用)
2026-08-10GhostSplice(ASSET,本篇主角)跨通道指令拆分;无 CVE、无真实世界入侵确认(全部为受控测试)

四、生态数据:锈迹斑斑的底座

统计(安全厂商/研究机构口径)数字
VirusTotal 审计 17,845 个 MCP 仓库~8%(约 1,400 个)被标记可能恶意或含严重漏洞
需要凭据的 MCP 服务器(Astrix 2025)88%
用长寿命静态密钥(API key / PAT)53%(仅 8.5% 用 OAuth)
硬编码暴露凭据("State of MCP Security 2025")53%;仅 18% 实施工具权限范围限定
受测实现含命令注入缺陷 / 无认证暴露43% / 近 500 台服务器
2026 年 8,000+ 公网服务器扫描大量开放管理面板/调试端点;Vulnerable MCP Project 跟踪 50+ 已披露漏洞(十余个关键级)

五、应对措施(分角色)

5.1 客户端 / Agent 框架开发商

5.2 MCP 服务器开发者

5.3 企业

5.4 个人开发者

六、对从业者的五个洞察

6.1 MCP 是放大版的 npm/pip 供应链

十年包管理生态的滥用模式——仿冒、信任预热、维护者钓鱼、依赖混淆、蠕虫式自我复制——在 MCP 生态完整复现,且被信任模型放大:被攻陷的服务器每次调用都被递上活凭据、执行任意逻辑、无代码审查,危险还延伸到安装后的配置继承与 agent 自动安装依赖。postmark-mcp 的"15 个干净版本 + 一行 BCC"就是教科书式的信任预热。

6.2 模型拒绝不是安全边界,harness 才是

GhostSplice 与 Ghostcommit 两连发指向同一结论:模型外部的控制(工具审批、数据流隔离、调用序列审计)才是真正的安全边界。验收任何 agent 系统,应问"被 hack 成功后的工具调用序列是什么",而不是"模型会不会拒绝"。

6.3 "安全协议" ≠ "安全生态"

规范持续收紧(OAuth 2.1、RFC 8707、不可信工具输出声明),但协议无强制机制,Registry 不校验内容——规范给你一条干净的线协议与强身份,给不了干净的威胁模型。

6.4 更强的模型往往更服从

MCPTox 中最强前沿模型攻击成功率 72.8%。"能力增长必须视为权限增长"——模型越强,越需要 harness 兜底。

6.5 防御必须架构化

静态逐条过滤检测不了跨轮结晶的意图。可行的架构:工具输出与参数之间的数据流隔离、完整调用序列评估(Toxic Flow Analysis)、运行时治理与人工批准、读者/写者服务器分离——不可信内容永远不流经写能力工具。

七、时间线与来源

关键时间线

时间事件
2024-11Anthropic 开源 MCP 协议
2025-04Invariant Labs 定义 Tool Poisoning;WhatsApp MCP 外泄
2025-06/07CVE-2025-49596(9.4)、CVE-2025-6514(9.6)——两个关键级 RCE;MCP 规范新增安全最佳实践页
2025-09postmark-mcp 首个真实恶意服务器;Shai-Hulud 蠕虫(CISA 确认);官方 Registry 上线
2025-11MCP 规范 OAuth 2.1 + PKCE 强制;Cursor 配置绕过 CVE-2025-59944
2026-06/07Ghostcommit(PNG 隐写);CVE-2026-52830(9.4)
2026-08-10GhostSplice 披露(跨通道分裂);THN 报道

来源

研究边界(诚实标注):THN 原文与 ASSET 披露页被 WebFetch 拦截,机制与数据基于披露页 + 多源转载交叉印证;GhostSplice/Ghostcommit 截至 2026-08-10 无 CVE、无已证实野外利用,本笔记全部事件按"披露"而非"入侵"定性;"42%→82%"等数据为研究机构自测,作者声明不代表通用结论。