手把手教你给MCP工具做体检
为什么需要给 MCP 做“安全体检”?
大语言模型(LLM)让 Agent 从 “ 聊天 助手 ” 进化为 “ 智能操作员 ” 。在工具调用机制的加持下,Agent 能抓取网页、查询数据库、读写本地文件乃至联动外部服务,完成过去需要人工协作的复杂任务。
MCP(Model Context Protocol) 作为首个开源的模型通信协议,极大降低了工具接入门槛,促成了繁荣的工具生态。但也带来三类典型隐患 :
发布门槛低 :任何人都能发布工具,代码质量与安全意识不一;
描述直达模型 :工具的 metadata 会被模型直接读取,可能被 “ 文本层面 ” 攻击利用;
实现逻辑不透明 :工具内部可能执行文件访问、任意网络请求等敏感操作。
结论: 开放性创造价值,也放大了风险面。 对 MCP 工具做系统性的安全评估,已经是“上线前的必选项”。
现实世界的两类MCP高频风险
1) 命令执行链被劫持
案例: CVE-2025-6514 攻击者操纵 mcp -remote 的 open 接口,把 “ 打开文件 ” 的意图歪曲为 “ 执行可执行程序 ” 。实证攻击中,可直接拉起系统计算器等程序,意味着已打通从 Agent 到宿主系统的入侵通道。

2) 间接提示注入(Indirect Prompt Injection)
当 Agent 安装 “ 网页读取 ” 等工具并将内容原样交给模型时,恶意页面可在文本中植入 “ 隐藏指令 ” 。模型将其当作正当任务执行,进而引发文件删除、数据泄露等连锁后果。

MCPScan 是什么?
MCPScan 是一套专为 MCP 工具生态设计的开源安全扫描框架,目标是以 高召回+高精度 找出 “ 能被真实利用 ” 的风险链路。
开源地址:https://github.com/antgroup/MCPScan

核心思路分析:静态分析 × 智能推理(双引擎)
1. 静态污点分析(Semgrep)
识别危险 API(如 open 、 os.system 、 requests.get )及其 参数来源 ;
跟踪 “ 模型/用户输入 → 敏感汇点 ” 的 可控流 ;
结构化抽取工具 metadata ,为后续语义判断提供上下文。
2. 智能上下文评估(LLM 驱动)
对 “ 显式高危模式 ” 直接定性为漏洞;
对 “ 跨文件、跨阶段的复杂链路 ” ,生成 生命周期摘要 (从入口到输出),据以判断是否构成 “ 输入 → 工具 → 模型 ” 的 闭环攻击链 。
组合使用使得扫描既“广”(不漏关键面),又“准”(降低误报重叠)。
具体实现流程
MCPScan 采用模块化流水线,可按需启用:
Stage 1|静态扫描 Semgrep 规则初筛,标记可疑调用与数据流。

Stage 2|Metadata 体检(可选) 评估描述是否存在误导/诱导:

评分类别 :

引导模型执行不安全行为;
含上下文注入意图的模板;
描述与真实功能不一致。
Stage 3|生命周期与逻辑复盘(可选) 抽取高风险段的 调用点-参数-回传 全链路,生成语义摘要,判断是否闭环并给出级别(HIGH/LOW)与解释。

保姆级上手步骤+实战观察
# 安装git clone git@github.com:antgroup/MCPScan.gitcd MCPScanpip install -e .# 基本用法mcpscan scan ./my-repo # 扫描本地代码库mcpscan scan ./my-repo --no-monitor-desc # 跳过 metadata 检查mcpscan scan https://github.com/user/repo # 扫描远程 GitHub 仓库mcpscan scan ./project -c custom_rules.yml # 使用自定义规则
小贴士:将项目的 工具清单 与 模型调用入口 一并纳入扫描范围,能显著提高“闭环链路”命中率。
适合以下场景使用, 工具开发者:上线前自检,减少隐患进入生态;平台方/集成商:引入第三方工具前进行准入评估;安全研究者:构建 Prompt Injection 等攻防用例的系统化基线。 实战观察
在使用 MCPScan 对 Smithery 社区的样本工具进行小规模试扫, MCPScan 发现 约 20 个 存在 “ 读取外部不可信内容并直接返回模型 ” 的高风险服务;典型如某些 Fetch 工具。若与 “ 本地命令执行类工具 ” 组合,隐蔽指令可直接转化为 破坏性行为 (如删除文件)。
这印证了 “ 文本层面的恶意 ” 可 以在工具链中被 无损搬运 ,最终变成系统层面的 可执行风险 。
写在最后
MCP 的开放生态让 Agent 能力指数级增长,同时也让攻击面随之扩展。 MCPScan 的定位,是让每一个工具在进入生态前,都能完成一次 系统性安全体检 :
发现 “ 能被真正利用 ” 的逻辑链;
用 “ 规则 + 推理 ” 的组合,覆盖代码面与语义面;
以可解释的结果,帮助开发者与平台做出明确决策。
体验 MCPScan:
开源地址:https://github.com/antgroup/MCPScan


共有 0 条评论