OWASP发布MCP十大安全风险
时间:2026-06-17 12:42
OWASP发布MCP十大安全风险,聚焦模型与工具交互链路上的漏洞,包括令牌泄露、权限膨胀、工具投毒、供应链攻击、命令注入、意图流劫持、认证不足、审计缺失、影子服务器及上下文注入,强调最小权限、凭证治理和审计链保护。
OWASP发布MCP安全十大风险清单,深度解析AI与工具交互中的关键漏洞
OWASP最新发布的这份MCP Top 10清单,精准指出了模型与工具交互过程中最容易出现安全问题的十个环节。它关注的并非AI模型本身的漏洞,而是当模型调用工具、读取上下文、执行操作时,那根连接链条上的安全薄弱点。这十个风险,从令牌泄露到权限膨胀,再到工具投毒,每一项都直击要害。
1. 令牌管理不当与密钥泄露风险
在MCP系统中,token和各类凭证是模型、工具与服务之间完成认证与授权的核心载体。但这也是一个很容易被忽视的环节:开发者常常将这些secret存入配置文件、环境变量、prompt模板,甚至让它们残留在模型上下文记忆和日志中。由于MCP系统通常采用长会话、有状态、上下文持久化的设计,这些凭证可能在后续交互中被召回、被日志检索到,或者被攻击者通过提示注入方式套取出来。
这类风险的真正可怕之处在于,泄露的往往不仅仅是一个“只读字符串”,而是能直接调用仓库、流水线、云API、文件系统的执行令牌。一旦泄露,后果常常不是单点信息暴露,而是整个已连接环境被接管。OWASP给出的防护重点非常明确:使用短期token、坚持最小权限、按会话绑定、避免将secret存入上下文和日志,并建立统一的凭证生命周期管理机制。

2. 权限范围蔓延导致提权
OWASP将其描述为一种“慢性风险”:最初只是临时放开的权限,后来因为方便、历史兼容或配置漂移而一点点扩大,最终让agent获得了远超任务本身的能力。尤其在MCP环境下,往往同时连接代码仓库、云API、工单系统、CI/CD,这种小幅度的权限膨胀会迅速将一个低风险自动化能力转变为高风险入口。
这类问题在agent场景下会被进一步放大。传统系统中,权限大不一定立刻出事;但在MCP场景中,一个过权的agent会自动行动,可能在没有人工复核的情况下修改代码、发起部署、读取敏感数据,甚至创建新的凭证和身份资源。OWASP的建议非常明确:必须坚持最小权限原则、自动scope过期机制以及严格的访问评审流程。
3. 工具投毒攻击
这是非常有MCP特征的一类风险。OWASP这里强调的不是普通意义上的恶意插件,而是schema、manifest、tool descriptor以及工具输出本身被篡改,从而让模型在“表面合法”的情况下执行错误操作。最典型的情况是:一个看起来无害的操作名称,实际却被映射到高风险甚至破坏性动作上。攻击者不是直接攻击代码漏洞,而是改写agent与工具之间的“契约”。
这类风险难以防范,是因为日志中看到的可能仍然是“合法调用”。表面上agent按照schema在行动,但schema本身已经被污染。OWASP提出的重点缓解方向包括:对schema和manifest进行签名校验、将registry设置为不可变且可追溯、对schema变更实施多人审批,并把“archive不能偷偷映射为DELETE”这类语义约束写成策略。
4. 软件供应链攻击与依赖篡改
MCP环境高度依赖第三方组件,包括SDK、连接器、协议服务、向量库客户端、插件和模型侧工具集成。这些组件通常运行在受信执行路径中,一旦依赖被污染,攻击者就能悄悄改变agent行为、插入后门、修改协议语义,甚至进一步影响下游工作流。
相比传统供应链攻击,MCP场景的问题更严重,因为被污染的不只是一个程序模块,而是“模型如何理解世界、如何操作外部系统”的整个能力边界。OWASP推荐的做法包括:组件签名、来源校验、SBOM/CBOM可见性、版本固定、内部镜像仓库、依赖扫描,以及对第三方插件实施隔离运行。
5. 命令注入与执行风险
OWASP将其定义为:AI agent使用不可信输入去构造并执行系统命令、shell脚本、API调用或代码片段,而这些输入没有经过充分校验和净化。这里的不可信输入,不仅来自用户prompt,也可能来自检索上下文、第三方数据源,甚至工具返回结果。
这类问题比传统命令注入更隐蔽,因为中间多了一层模型解释。攻击者不一定直接传入恶意命令,而是把诱导内容藏在文档、上下文或prompt中,让模型“主动”生成看似语法正确、语义也似乎合理的执行命令。OWASP特别指出,工具一旦封装了shell、数据库操作或文件系统访问,而又直接把agent输出交给解释器执行,就会形成典型的注入入口。
6. 意图流劫持
OWASP用了一个非常形象的词:Intent Flow,即agent把用户的高层目标翻译成一系列工具调用和执行动作的关键路径。在MCP环境中,agent会读取资源文档、schema定义和工具输出作为上下文来制定计划;如果这些被取回的上下文里埋有恶意指令,agent就可能在内部分支中被带偏,从用户原本的目标转向攻击者想要的目标,而表面上仍像是在完成原任务。
这类风险比直接prompt injection更麻烦,因为它不是用户明着“骗模型”,而是攻击者把指令藏进被模型信任的上下文里。你让agent总结日志,它却被日志中的隐藏指令诱导去外传日志;你让它查看仓库状态,它却被仓库文本中的恶意内容带去执行额外动作。OWASP给出的关键思路是:锚定用户原始目标、将外部取回的自然语言上下文统一视为不可信、检测执行动作是否偏离原目标,并在高风险偏移时强制人工确认。
7. 认证与授权不足
OWASP对其的定义很直接:当MCP server、工具或agent在交互过程中没有正确验证身份,或者没有严肃执行访问控制时,就会暴露出关键攻击路径。典型表现包括:API key校验可选、共享静态密钥、配置文件里硬编码凭证、token没有过期机制、仅依赖客户端声明调用者身份,以及工具端不按用户或agent校验权限范围。
这类问题在MCP中会被放大,因为参与方往往不是单一用户和单一服务,而是多个agent、多个工具和多个系统协同。只要身份绑定不严,就会出现“谁在以谁的名义做事”这件事彻底失真。最终结果就是未授权访问、权限升级和敏感数据泄露。OWASP的方向非常明确:更强的身份验证、短期且scoped的凭证、服务端强校验,而不是只靠前端或客户端自觉。
8. 审计与遥测缺失
MCP系统经常会自动执行复杂工作流,包括取数、调工具和做决策。如果缺乏审计日志和遥测能力,组织就会失去可见性:不知道agent做了什么、访问了什么数据、为什么做出某个决定。没有全面日志,不仅会削弱事件响应和取证能力,也会让内部滥用、模型异常和合规问题长期处于盲区。
这类风险的可怕之处在于“静默性”。一个没有被监控的agent,完全可能连续数周执行敏感操作或外传数据而不被发现。OWASP明确建议,要记录工具调用、上下文变化、用户与agent的交互,并形成不可篡改的审计链。这其实是在告诉大家:MCP安全不只是拦截能力,还包括“出事后能不能把链路讲清楚”。
9. 影子MCP服务器风险
OWASP将其类比为Shadow IT:未经批准、未经监管的MCP实例,被开发、研究或数据团队为了测试和便利临时搭建,常常带着默认凭证、宽松配置或未加固API,运行在组织正式治理体系之外。
这类影子部署的危险,在于它们往往直接暴露数据检索、工具执行甚至模型控制能力,却绕开了集中认证、监控和数据治理。它们会把企业环境中最敏感的能力,变成安全团队看不见的后门。OWASP明确指出,这些未纳管的MCP节点会扩大攻击面,也会造成明显的合规风险。对企业来说,这类问题的第一步甚至不是“防攻击”,而是“先把所有活跃的MCP实例找出来”。
10. 上下文注入与过度共享
OWASP将context定义为agent的工作记忆,里面会存放prompt、检索文档、中间结果和交互历史。如果这些上下文被共享、被持久化、或者作用域划分得不够严格,那么一个用户、一个会话或一个agent的敏感信息,就可能泄露给另一个。与此同时,恶意内容一旦被写入这段共享记忆,又会持续影响后续任务,这就是所谓的Context Injection。
这类风险在多租户、多部门和多工作流系统里尤其危险。OWASP直接拿Slack机器人泄露私密频道、会议总结机器人暴露敏感对话、SaaS多租户session bleed这类场景做类比。到了MCP场景,因为上下文是持久化的、会被复用的、还会继续反过来影响模型行为,所以风险会更快、更隐蔽地扩散。OWASP给出的核心方向是:严格做namespace隔离、限制上下文生命周期、避免跨任务复用,并对进入上下文的数据做分类、脱敏和访问审计。
它和Skill Top 10有什么不同?
如果说Skill Top 10关注的是“装进Agent里的能力包本身有没有问题”,那么MCP Top 10关注的就是“模型通过协议连接外部工具和上下文时,会不会在调用链上失控”。
前者更偏skill的打包、分发、权限声明、加载、隔离和治理;后者更偏token、身份、工具契约、上下文、执行链路和运行时审计。简单说,Skill Top 10管的是能力包本身,MCP Top 10管的是能力包被调用、被连接、被执行时的风险。