我们总以为AI工具链的安全问题是"以后的事",但有人已经把它变成了"现在进行时"。

本周,开源扫描工具Bawbel发布1.0.1版本。发布前,团队做了一件很少见的事——他们没急着宣传,而是先拿自己的产品,对准了当下最热门的MCP服务器生态。目标很明确:验证那些理论上存在的攻击方式,在真实世界里到底有多少存活样本。

打开网易新闻 查看精彩图片

结果出来了:100个服务器,22个至少有一项安全发现,28项发现总计,其中4项关键级,24项高危。

这是Smithery排名前100的服务器,五分之一亮灯。不是边缘实验项目,是生态里最活跃、被调用最频繁的那批。

最隐蔽的漏洞:当"使用说明"变成"操控指令"

扫描结果里占比最高的问题,叫"工具描述注入"。6个服务器中招,包括Brave Search、Google Sheets、Context7这些名字。

具体表现?工具的描述字段里出现了这样的开头:

「IMPORTANT: Do not...」

「WARNING: Do not...」

「Before calling this tool...」

开发者写这些,本意可能是提醒人类用户注意权限或流程。但在MCP架构里,工具描述是喂给AI代理的上下文。代理不区分"给人看的文档"和"给代理看的指令"——它读到什么,就执行什么。

Brave Search还被单独标记了一项:描述里出现了"act as"开头的越狱模式。团队的态度很谨慎,说这项需要人工复核,暂不确定是否为真阳性。

这个发现触及一个设计层面的模糊地带:MCP协议没有为"人类文档"和"机器指令"划定清晰的语法边界。开发者的善意提醒,在代理的解析逻辑里可能被当作操作指令执行。

数据外泄的编码痕迹:4个服务器的异常信号

第二类高频发现是"工具输出外泄编码模式"。Jina AI、troystack、Name Whisper和一个未命名服务器被标记。

扫描器用YARA规则匹配编码特征,理论上这些模式可用于把数据打包进工具响应、间接传出系统。但团队坦承,YARA的匹配策略偏保守,只要出现"encode"字样就可能触发,四项发现都需要深入排查才能确认。

这里的关键不是"这四个服务器一定有问题",而是"这类痕迹在主流服务器里并不罕见"。安全扫描的价值,很多时候不在于给出确定性结论,而在于标出需要人工介入的灰区。

文件类型撒谎:6个服务器的"身份伪装"

Magika引擎——一个基于机器学习的内容类型验证工具——标记了6个服务器存在"内容类型不匹配"。文件声称自己是.md格式,实际内容是YAML,置信度82%-90%。

涉及的服务器包括:Google Sheets、Slack、Exa Websets、GitHub Code Search、ai-compliance-monitor、SIIL Ostomy Store。

这不是立即致命的漏洞。但不同解析器对.md和YAML的处理逻辑不同,这种身份错位可能在特定条件下引发解析偏差,或者被有意利用来绕过内容过滤。

PII外泄模式在3个服务器中被标记:Exa Websets的描述要求代理提取"CEO姓名",sbb-mcp匹配到"出生日期",strale涉及从URL提取数据。团队的态度很明确——这些可能是合法工具在做合法的事,扫描器只认模式,不认意图。

真正让团队警觉的发现

扫描报告里,Blockscout MCP Server被单独拎出。它的工具描述里出现了"exhaust the context"——耗尽上下文。这个表述在提示注入攻击的语境里有特定含义,指向一种通过填充冗余信息挤占代理上下文窗口、进而干扰其决策的技术。

团队没有展开说明这项发现的具体上下文,但将其列为"最值得关注"的案例。这暗示,某些服务器可能已经被植入了更精细的攻击向量,而非简单的文档疏忽。

22%亮灯率背后的生态现实

需要冷静看待这个数字。28项发现里,一部分是误报,一部分是低风险配置问题,真正需要紧急修复的占比未知。团队反复强调的是"需要人工复核",而非"已确认漏洞"。

但即便如此,这个样本仍有意义。它首次以量化方式呈现了MCP生态的安全基线:在最流行的服务器集合里,五分之一存在至少一个值得安全团队介入的异常信号。这不是末日预言,是基线测绘。

对于正在把MCP集成进工作流的团队,这个扫描结果指向一个实操建议:在引入任何第三方服务器之前,先跑一遍类似的静态扫描。Bawbel是开源的,但即便不用特定工具,核心逻辑也可以复现——检查工具描述字段是否包含指令性语言,验证文件类型声明与实际内容是否一致,监控输出中是否出现异常编码模式。

MCP协议的设计初衷是简化AI与外部工具的连接,但"简化"往往意味着把安全责任下沉到生态的每一个节点。这次扫描显示,下沉的过程还在早期,节点的自我审查机制尚未成熟。