检测规则
每条规则,都配有可供运行的演示。
全部 54 条规则。选择一条,即可查看触发它的文件、关键部分,以及扫描器给出的结果。这些结果由真实扫描器运行生成,而非人工编写。
交互式演示需要 JavaScript 支持。在此之前,您可以在下方浏览全部规则。
智能体安全
- 提示词注入载荷 — 指令的目标是智能体本身,被藏在智能体反正都会读取的文本之中。
- 描述与实际能力不符 — 一个自称只读、但其参数却另有说法的工具。
- 不可见 Unicode 字符 — 渲染后不显示任何内容、却仍能抵达模型的字符。
- 宽松的参数模式 — 像 URL 或文件路径这类高风险输入项,却可以接受任意内容。
- 隐藏指令 — 命令被隐藏在渲染输出永远不会显示的文件部分中。
- 模式注入 — 一条隐藏在参数描述中的指令,比工具自身的描述更深一层。
- Unicode 标签字符走私 — 以 Unicode 标签字符写成的文本,渲染后完全不显示任何内容。
- 工具影子劫持 — 一个工具,却对另一个工具应有的行为方式下达指令。
- 权限提升请求 — 请求的对象是人,而不是机器,要求人为降低某项防御措施。
- Markdown 图片信标 — 一张 Markdown 图片,其地址会在回复显示时将数据携带出去。
- 伪造的工具结果 — 一段文本,其形态模仿了一个从未真正运行过的工具的输出。
- 记忆投毒 — 将指令写入一个智能体在每次会话开始时都会读取的文件。
- 延迟触发 — 起初表现正常,之后才会做出别的行为。
- 智能体链式注入 — 一条指令面向的是链条中的下一个智能体,而不是用户。
- 困惑代理人 — 一个没有特殊权限的工具,指使智能体去使用另一个拥有特殊权限的工具。
- 系统提示词提取 — 要求智能体透露自己的指令和工具信息。
- 对话历史访问 — 请求获取对话历史记录,但其描述中未说明理由。
- 错误信息中的指令 — 一条隐藏在错误信息中的指令,恰好在没人仔细查看的那一刻被读取。
数据外泄
- 数据外泄模式 — 一个既能接触机密信息、又能对外发送数据的工具。
- Webhook 数据接收点 — 一个硬编码的地址,其唯一用途就是收集所有发送给它的内容。
- DNS 数据外泄 — 数据被编码进域名查询的名称之中。
- 危险能力流 — 一个既能读取私密数据、又能向外部发布内容的工具。
- “离线”工具中的网络调用 — 声称自己从不使用网络。实际却在使用网络。
凭证
- 硬编码机密信息 — 凭证被直接写入文件中。
- 凭证存储访问 — 读取一个专门用于存储凭证的文件。
- 云元数据访问 — 向云主机请求凭证——而云主机会把凭证交给任何提出请求的对象。
- Shell 历史记录访问 — 读取终端中输入过的命令记录。
- MCP 配置中的凭证 — 一个有效令牌被粘贴进了 MCP 配置文件中。
- 机密信息被写入日志 — 一条凭证被打印到了某个会被保留过久的地方。
- OAuth 配置错误 — OAuth 的配置方式,消除了它本应提供的保护。
供应链
- 不可信的外部安装 — 安装说明中,指示您下载某个文件并运行它。
- 未锁定版本的 MCP 服务器 — 一个无需您采取任何行动,就可能变成完全不同软件的服务器。
- 已知存在漏洞的 MCP 服务器 — 一个已被固定的版本,且已有公开的安全公告。
- MCP 包冒充 — 一个与您本想使用的包名仅一字之差的包名。
- 安装脚本钩子 — 软件包一经安装,便会立即从网络运行一条命令。
- 依赖混淆 — 一个与您私有包同名的公共包。
- 存在漏洞的依赖项 — 一个已声明的依赖项,其版本落在某份公开安全公告所述的受影响范围内。
- 缺少来源验证 — 一次下载,在未验证其为正版文件的情况下就被安装。
- 同形异义工具名称 — 两个在屏幕上看起来完全相同、但实际文本并不相同的工具名称。
- 重复的工具名称 — 同一个工具名称在两个不同的文件中被声明。
- 影子 MCP 服务器 — 您的智能体可以使用、但项目配置中从未声明过的 MCP 服务器。
- 工具集变异 — 一个您曾经见过的工具,如今从另一个文件中被交付,且内容已发生变化。
- 清单漂移 — 一个您已经审查过的工具,事后却被悄悄改动。
执行
- 权限过大 — 一个所请求的访问权限,远超其实际功能所需的工具。
- 动态执行 — 在运行时,由交给智能体的内容拼装而成的代码。
- 不透明载荷 — 随技能一同打包、却没有人能够读取的内容——此处指的是伪装成普通文件的一个程序。
- MCP 自动批准 — 一个被配置为无需询问即可运行所有工具的 MCP 服务器。
- MCP 启动命令权限过大 — 一条启动命令,赋予了服务器超出其所需的权限。
- MCP STDIO 注入面 — 一个使用 MCP STDIO 传输的服务器,其配置值会变成主机执行的命令。
- 持久化机制 — 将自身写入一个能在重启后依然存活的位置。
- 沙箱逃逸 — 引用了一种逃离其自身运行容器的方式。
- 字符串重组 — 由多个片段拼接出一个危险词语,使得对该词的直接搜索一无所获。
- 命令注入面 — 通过拼接运行时提供的值来构造 shell 命令。
- 过于宽松的 CORS 设置 — 一个允许任意网站调用自己的 HTTP 服务器。
OWASP MCP Top 10
覆盖全部十个类别。
每条规则都对应 OWASP MCP Top 10(目前仍处于测试阶段)中的至少一个类别。部分规则覆盖多个类别,因此类别计数之和会大于规则总数。“缺乏审计与遥测”这一类别只有一条对应规则,这也符合预期:日志记录是扫描器可以指出、却无法直接解决的问题。
| 类别 | 名称 | 规则 | 相对覆盖范围 |
|---|---|---|---|
| MCP01 | 令牌管理不当与机密泄露 | 7 | |
| MCP02 | 通过范围蔓延实现的权限提升 | 7 | |
| MCP03 | 工具投毒 | 13 | |
| MCP04 | 软件供应链攻击与依赖篡改 | 13 | |
| MCP05 | 命令注入与执行 | 8 | |
| MCP06 | 意图流劫持 | 10 | |
| MCP07 | 身份验证与授权不足 | 3 | |
| MCP08 | 缺乏审计与遥测 | 1 | |
| MCP09 | 影子 MCP 服务器 | 1 | |
| MCP10 | 上下文注入与过度共享 | 9 |