MCP 隐形字符检测器被反例攻破后,作者公开修正方案
blitzcrieg11 · reddit · 2026-10-20
作者此前发布了一个检测 MCP 工具描述中隐形字符的「投毒检测器」,声称这些字符无合法用途,结果 r/mcp 网友一天内给出三个反例全部误报。这篇复盘讲清了攻击原理与修正思路。
攻击原理:Unicode 标签字符(U+E0000–U+E007F)与 ASCII 一一对应且不渲染,附加到工具描述后等于写入一条审批弹窗看不见的指令——你批准的是一个字符串,模型读到的是另一个。
三个击穿「无合法用途」的反例
- 苏格兰旗帜 emoji 就是标签字符:U+1F3F4 + 隐形 "gbsct" + U+E007F,威尔士、英格兰同理
- 家庭 emoji 用零宽连接符(ZWJ)拼接,也在多数「隐形文本」名单上
- 波斯语正字法依赖零宽不连接符,一刀切等于惩罚非拉丁书写者
修正:看上下文而非字符
- 标签字符仅在旗帜序列内合法;ZWJ 仅限两个 emoji 之间;ZWNJ 仅限使用它的文字旁;bidi override 仅在含 RTL 文字时
- 「真旗帜后挂 payload」的绕过会失败:旗帜在 U+E007F 结束,其后字符都会计数
仍未解决:纯可见英文的注入完全不需要这些字符,干净描述不等于可信描述。工具在首次 tools/list 时运行,并给每个工具做指纹以发现配置不变但描述变更的「rug-pull」模式;只存计数不存文本,本地运行、已开源(agentmetry)。
「编程与Agent」频道最新
- Hugging Face 发布 Agent Manager:编排数十个跨框架协作 Agent — lvwerra · 2026-10-21
- 端到端 AI 换脸视频工作流全解:从素材检查到帧对齐装配 — Few-Profession421 · 2026-10-21
- 观点:聊天界面是与 agent 协作的最缺乏想象力方式 — braelyn_ai · 2026-10-21
- Shopify 公开持续学习闭环:小模型加 judge-critic 打败前沿模型 — PyTorch · 2026-10-21
- Linear 创始人:Agent 时代产品为何变成没人选的功能堆 — wateriscoding · 2026-10-21
- AWS Agent Registry:让 agent 运行时语义发现 MCP 工具与 A2A agent — AWS ML Blog · 2026-10-21