智能体安全
智能体会读取陌生人编写的文本,然后使用你的凭据执行操作。本页介绍核心原则、2026 年 OWASP 的两份清单、迄今发生的安全事件,以及本可阻止这些事件的防护措施。
致命三要素
- 访问私有数据电子邮件、代码仓库、数据库、文件,或任何受你的凭据保护的内容。
- 接触不可信内容网页、Issue、支持工单、收到的电子邮件和工具描述:任何攻击者都能编写的文本。
- 能够对外通信发送邮件、创建 pull request、获取 URL 或渲染远程图片。Simon Willison 于 2025 年 6 月将这三项称为一个组合。
如果一个智能体同时具备这三项能力,就要假设提示词注入可能诱使它把你的数据交给攻击者。不要指望模型主动拒绝;应从每个智能体和会话中至少移除一项能力。
安全检查清单
涵盖输入、工具、运行时、MCP、CI 和运维的 22 项检查。逐项勾选,并将结果导出为 Markdown 文件。
事件记录
记录自 2025 年 4 月以来公开的每起智能体安全事件:发生了什么、攻击为何得手,以及你应如何调整自己的配置。
近期事件
- MCP Python SDK 会话劫持与跨会话任务访问
- Claude Code 的 WebFetch 自动批准功能可通过 huggingface.co 外传数据
- 评论与控制:PR 文本窃取 CI Agent 的机密
- MCP TypeScript SDK 在客户端之间泄露响应
- ClawHavoc:数百个恶意 ClawHub skills 传播 AMOS
OWASP 智能体应用十大风险 2026
OWASP GenAI Security Project 于 2025年12月9日 发布了这份清单。它涵盖了模型开始规划、保留记忆、调用工具并与其他智能体协作后出现的风险。
ASI01智能体目标劫持攻击者改变智能体试图实现的目标,通常通过隐藏在智能体读取内容中的指令实现。随后,智能体会使用用户的工具和权限追求攻击者的目标。
ASI02工具误用与滥用智能体以有害方式使用合法工具,例如删除记录、发送消息或串联调用。这可能是因为智能体受到操纵,也可能是因为它拥有超出任务所需范围的工具权限。
ASI03身份与权限滥用智能体通过凭据、委托令牌和继承的权限执行操作。攻击者会滥用这些身份或身份之间的权限缺口,以提升权限或冒充他人行事。
ASI04智能体供应链漏洞在构建时或运行时加载的工具、MCP 服务器、技能、插件、模型和提示都可能是恶意的或已遭入侵。由于智能体会动态加载其中许多组件,一个有问题的组件就可能影响使用它的每个会话。
ASI05意外代码执行 (RCE)能够编写并运行代码,或将模型输出传给 shell 和解释器的智能体,可能受到诱导,在主机上运行攻击者指定的命令。
ASI06记忆与上下文投毒攻击者将虚假事实或指令植入智能体的记忆、检索到的文档或已保存的上下文中。这些投毒内容会持续存在,并在原始输入消失很久之后继续影响后续会话。
ASI07智能体间通信不安全智能体之间的消息缺少适当的身份验证、完整性检查或校验,因此可能被伪造、重放或篡改,从而误导接收消息的智能体。
ASI08级联故障一个故障(例如输入遭到投毒、工具返回错误结果或智能体被入侵)会在相互连接的智能体和自动化步骤之间迅速扩散,快到人们来不及发现。
ASI09人类与智能体之间的信任利用智能体的表达往往自信又热心,因此人们倾向于批准它们提出的建议。攻击者会利用这种信任,诱使人类确认有害操作或泄露信息。
ASI10失控智能体遭到入侵或偏离预期行为的智能体会继续自行行动,超出授予它的权限范围和监督范围。
OWASP 大语言模型应用十大风险 2026
本版于 2026年8月4日 发布,取代了 2025 年版。过度自主性从第六位升至第三位,系统提示词泄露则更名为隐藏上下文暴露。
LLM01提示注入输入会以开发者未预期的方式改变模型行为。输入可以直接来自用户,也可以间接来自模型读取的文档、网页和工具结果。
LLM02敏感信息泄露模型或应用可能在输出中泄露个人数据、凭据、商业机密或其他机密信息,这些信息可能来自训练数据、上下文或连接的系统。
LLM03过度代理权限应用赋予模型超出任务所需的功能、权限或自主性,导致被操纵或有误的输出造成实际损害。该风险在 2025 年排名第六,2026 年升至第三。
LLM04供应链第三方模型、数据集、适配器、软件包和插件可能遭到篡改或存在漏洞,并将相关风险带入你的应用。
LLM05数据与模型投毒攻击者篡改预训练、微调或嵌入数据,植入后门、偏见或有缺陷的行为,这些问题可能直到投入生产后才显现。
LLM06无界消耗如果不限制请求数量、输入大小或计算资源,攻击者就可能让你的账单飙升、耗尽资源,或通过大量查询复制模型。
LLM07错误信息模型生成看似可信的虚假或误导性内容,而用户或下游系统未经核实便据此采取行动。
LLM08隐藏上下文泄露此前称为系统提示泄露。用户本不应看到的系统提示、隐藏指令和其他上下文可能被提取,从而暴露其中设置的规则、逻辑或秘密。
LLM09向量与嵌入弱点嵌入的生成、存储和检索方式存在缺陷,可能让攻击者注入内容、跨租户窃取数据或还原源文本。RAG 系统受此影响最严重。
LLM10输出处理不当模型输出未经验证或编码便传递给浏览器、shell、数据库或其他组件,从而可能导致 XSS、SQL 注入、代码执行和数据外泄。
防护措施
这里列出了 15 项有文档依据的防护措施,每项均附有来源链接。应组合使用多项措施,因为没有任何一项能独自阻止所有攻击。
拆解致命三要素
Simon Willison 的原则是:如果智能体既能读取私有数据,又会接触不可信内容,还能向外发送数据,那么它读取的任何文本都可能被用来攻击你。对每个智能体或会话,至少移除这三项能力中的一项。例如,负责分类公开议题的智能体不应接触机密;持有机密的智能体则不应拥有向外发送数据的渠道。
限制智能体处理不可信输入后的权限
关于智能体安全设计模式的研究确立了一条规则:智能体摄取不可信输入后,该输入绝不能触发会产生重大影响的操作。这些模式包括 action-selector、plan-then-execute、双 LLM 和上下文最小化。每个工作流选择一种模式,例如,在智能体读取任何不可信数据之前先固定执行计划。
用 CaMeL 跟踪数据流
CaMeL 将智能体拆分为两部分:特权规划器根据用户请求编写代码,隔离模型则处理不可信数据。隔离侧的值会附带能力标签,工具运行前由策略检查这些标签。论文报告称,CaMeL 在可证明安全的前提下解决了 77% 的 AgentDojo 任务,而未设防的智能体解决了 84%。
使用最小权限凭据
默认只授予智能体只读、限定项目范围的访问权限,绝不要使用管理员密钥或 service_role 密钥;在 Supabase 中,service_role 密钥会绕过行级安全策略。将 CI 和仓库令牌的权限限制在其对应的单个任务范围内。Amazon Q Developer 事件的根源,是 CodeBuild 中权限范围过大的 GitHub 令牌。
重大操作须经人工批准
对于会写入、删除、发送或花费资源的工具调用,要求人工确认;无人响应时应默认拒绝。Supabase 建议对 MCP 工具调用进行人工审批;在 OpenClaw 中,将 tools.exec.ask 设为 always,并将 askFallback 保持为 deny。展示完整参数,让审核者看清实际将要执行的操作。
对代码和工具执行进行沙箱隔离
在不含凭据、且只能访问工作区的容器或 VM 中运行 shell 命令和生成的代码。OpenClaw 默认关闭沙箱,并在网关主机上将 tools.exec.security 设为 full,因此应启用沙箱,将 exec security 设为 deny 或 allowlist,将 fs.workspaceOnly 设为 true,并保持 elevated mode 关闭。运行 openclaw sandbox explain 确认设置结果。
限制出站网络访问
默认拒绝智能体和 MCP 服务器的出站流量,然后只允许各自必需的主机。切勿自动批准对多租户主机的请求,因为任何人都可能在这类主机上发布内容;CVE-2026-54316 正是利用这一点,将 huggingface.co 变成了数据外泄通道。邮件服务器只应访问其邮件 API,不应访问其他任何地址,postmark-mcp 就展示了这一点。
不要将控制面暴露到互联网
将智能体网关、仪表盘和调试代理绑定到 loopback,并要求至少 24 个字符的令牌,例如使用 openssl rand -hex 32 生成。通过 SSH 隧道或 Tailscale Serve 远程访问,并且只有在启用密码认证时才使用 Tailscale Funnel。定期运行 openclaw security audit --deep。
验证 MCP 令牌的受众
MCP 授权规范要求服务器拒绝并非为其签发的访问令牌,并禁止将客户端令牌转发给上游 API。客户端应发送 RFC 8707 资源指示符,使每个令牌都绑定到单个服务器。代理服务器必须获得每个客户端的授权,否则就会成为混淆代理。
隔离 MCP 会话和租户
为每个会话创建独立的服务器和传输实例,不要让多个客户端共享同一个实例。将每个会话和任务绑定到创建它的已认证主体,并在每次请求时检查绑定关系。2026 年的两份 MCP SDK 安全公告都源于共享状态或未绑定的状态。
审查技能、插件和 MCP 服务器
固定到确切版本,每次更新前查看 diff,并检查 VirusTotal 等扫描工具的判定结果以及 ClawHub 的安全审计状态。批准服务器时,对工具描述计算哈希,并在描述发生变化时发出警报,以便发现 rug pull。OpenClaw 安装时不会内置拦截机制,因此请自行设置 security.installPolicy。
控制谁可以向智能体发送消息
私信访问仅允许通过配对或白名单;在群聊中,要求先提及智能体,它才可以采取行动;并将 session.dmScope 设为 per-channel-peer,避免不同发送者共享上下文。任何能向智能体发送消息的人都可以尝试指使它,因此发送者名单也是攻击面的一部分。
不要在不可信的 CI 运行中暴露密钥
不要在外部人员可通过 pull request、issue 或评论触发的工作流中,使用带有仓库密钥的智能体。将这些事件中的标题、描述和评论都视为恶意输入。如果某个步骤确实需要密钥,只能在维护者批准该次运行后执行。
将模型输出视为不可信内容
渲染模型输出前先进行编码或清理,绝不要未经检查就将其传给 shell、SQL 查询或浏览器。阻止自动加载 Markdown 图片和指向外部域名的链接,并设置严格的 Content Security Policy。EchoLeak 通过会自行加载的 URL 将数据传了出去。
验证智能体签名,再进行授权
要识别调用你的网站或 API 的智能体,请使用 operator 在 /.well-known/http-message-signatures-directory 发布的密钥验证其 Web Bot Auth 签名。ChatGPT agent 使用 Signature-Agent https://chatgpt.com 进行签名。有效签名只能说明谁在运营该智能体,不能说明是哪位用户发起了请求,也不能说明该用户有权执行什么操作,因此仍须对每个请求单独授权。
智能体安全常见问题
什么是 AI 智能体中的提示词注入?
提示注入是指模型把某些文本当作指令执行,尽管这些文本实际是以数据的形式传入的,例如网页、电子邮件或工具描述中的文本。在智能体中,这些指令可能触发使用你凭据运行的工具调用。OWASP 将其列为 LLM01:2026,智能体形式则属于 Agent Goal Hijack (ASI01)。
AI 智能体的致命三要素是什么?
这是 Simon Willison 对一种智能体的称呼:它既能访问私有数据,又会接触不可信内容,还能与外部通信。三者同时具备时,提示注入就可能读取你的数据并将其发送出去。2025 年 Supabase MCP 令牌泄露事件就是典型案例。
如何保护 MCP 服务器?
拒绝未签发给你服务器的访问令牌,绝不要将客户端的令牌转发给上游 API。为每个会话创建独立的服务器和传输实例,并将会话和任务绑定到经过身份验证的用户。TypeScript SDK 请使用 1.26.0 或更高版本,Python SDK 请使用 1.27.2 或更高版本;这些版本修复了跨客户端响应泄露和会话劫持问题。
更好的系统提示能阻止提示注入吗?
不要依赖系统提示。关于智能体设计模式的研究指出,一旦智能体接收了不可信输入,就必须对其加以约束,确保这些输入无法触发会造成重大影响的操作。CaMeL 通过能力追踪来实施约束,在具备可证明安全性的同时完成了 77% 的 AgentDojo 任务;未设防的智能体则完成了 84%。
OWASP LLM Top 10 和 Agentic Top 10 有什么区别?
OWASP Top 10 for LLM Applications 针对所有基于语言模型构建的应用所面临的风险,其 2026 版于 4 August 2026 发布。OWASP Top 10 for Agentic Applications 于 9 December 2025 发布,关注模型开始规划、使用工具、保留记忆并与其他智能体通信后出现的变化。大多数智能体开发者都需要参考这两份指南。
将 OpenClaw 网关暴露到互联网安全吗?
不安全。将 gateway.bind 保持为默认值 loopback;需要远程访问时,使用 SSH 隧道或 Tailscale Serve。OpenA2A 在 1 September 2026 统计到 192,492 个暴露在公网的网关;CVE-2026-25253 也表明,即使仅绑定 loopback 的安装也需要及时打补丁。