OWASP MCP Top 10给了安全团队一套命名体系,用来描述AI应用与它实际能触达的系统之间的风险。但这里有个陷阱:把MCP01到MCP10当成十个勾选项,测试就会流于表面。
一个Model Context Protocol(模型上下文协议)部署本质上是一条信任链:用户→智能体→MCP客户端→MCP服务器→工具→下游系统→业务动作。只测服务器、OAuth配置或单个工具,授权和上下文层面的关键故障往往会被漏掉。
![]()
把风险分类变成测试目标
更有效的做法,是把OWASP的每个MCP类别转化成三个东西:一个测试目标、一个强制校验问题、一个证据要求。这样分类不再是纸面清单,而是可执行的验证计划。
MCP01(Token管理不善与密钥暴露)、MCP02(权限范围蔓延导致提权)和MCP07(认证与授权不足)指向同一个核心问题:到达下游系统的身份,是否仍然代表发起用户的真实权限?
一份站得住脚的评估应该覆盖:token的受众与范围、存储与生命周期、刷新与吊销机制、委托身份、服务身份、用户角色、租户边界、工具级授权、下游资源授权。
关键不在"能通过",而在"该拒绝的必须拒绝"
这里重要的反向测试,不是验证一个合法用户能否调用一个合法工具。而是那些本应被禁止的组合,是否真的被系统拒绝。比如:合法用户访问错误租户、合法角色调用特权工具、已批准工具访问未授权对象、合法MCP服务器请求超范围的下游权限。
真正有价值的交付物,是一张身份与授权矩阵,同时列出被允许的成功操作和被拒绝的禁止操作。这份证据比一句"MCP07已测试"有意义得多。
工具与工作流完整性:元数据本身就能改变行为
MCP03(工具投毒)、MCP05(命令注入与执行)和MCP06(意图流篡改)涉及另一条边界。MCP工具不是被动的API定义——名称、描述、schema、元数据、参数和外部上下文,都可能影响AI系统选择做什么。
测试需要追问:工具元数据在批准后能否被修改?工具来源是否有记录?可执行参数是否在服务端受限?外部内容能否改变预期工作流?高影响操作是否有独立授权?能否通过改变流程而非直接攻击端点来绕过审批步骤?
目标不是做一个炫目的提示注入演示,而是验证业务意图能否在不可信输入下存活。如果组织期望智能体更新工单、但绝不修改生产基础设施,这种隔离必须在模型之外强制执行。
声明清单不等于真实清单
MCP04(软件供应链攻击与依赖篡改)和MCP09(影子MCP服务器)带来的是运营层面的问题。安全团队可能有一份已批准的生产MCP服务器清单,但本地、开发、实验环境里实际跑着的服务器,往往不在清单上。
把OWASP MCP Top 10当作测试计划而非检查表,核心转变在于:每个类别都对应一个可验证的问题和一份可留存的证据。这样测出来的结果,才能反映信任链的真实状态,而不是纸面上的合规记录。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.