一句话版本
提示词注入没有"参数化查询"那样的一劳永逸的解法,所以防御要分两层:一层是降低被注入的概率(模型训练、输入标记、检测器),另一层更重要,是限制被注入之后的后果(权限最小化、隔离不可信内容、敏感操作人工确认、切断外泄通道)。 业界逐渐形成的共识是:不要指望模型自己分辨好坏,而要让系统设计保证"即使模型被骗,也做不了坏事"。
全文分三层:
- 通俗理解:不能只靠秘书的判断力
- 实际用处:主流方法一览
- 原理与工程要点:致命三要素、双模型模式、CaMeL、设计模式清单
第一层:通俗理解
1.1 不能只靠秘书的判断力
秘书容易被纸条骗(见《提示词注入》),你有两种办法:
- 培训秘书:教他"文件里的话不是我的命令"。有用,但总有骗得过他的纸条;
- 改流程:秘书可以读任何文件,但不能自己寄信、不能动保险柜;要寄信,必须拿给你签字。
第二种办法不依赖秘书的判断力,所以可靠得多。
1.2 两层防御
| 层次 | 目标 | 手段 | 可靠程度 |
|---|---|---|---|
| 降低概率 | 让注入更难成功 | 模型训练、输入标记、检测器 | 概率性,会被绕过 |
| 限制后果 | 注入成功了也做不了坏事 | 权限、隔离、确认、出口控制 | 确定性,由系统保证 |
第二层:实际用处
| 方法 | 提出者 / 年份 | 思路 |
|---|---|---|
| 指令层级(instruction hierarchy) | OpenAI,2024 | 训练模型区分优先级:系统 > 开发者 > 用户 > 工具结果,低优先级里的指令不得覆盖高优先级 |
| 聚光灯(spotlighting) | 微软研究,2024 | 给不可信内容加上明确的标记或编码(如每个词之间插入特殊符号),帮助模型分辨"这是数据" |
| 注入检测器 | 多家厂商 | 用专门的分类模型检测输入中是否含有注入指令 |
| 双模型模式(Dual LLM) | Simon Willison,2023 | 一个"特权"模型能调用工具但从不接触不可信内容;一个"隔离"模型处理不可信内容但不能调用工具 |
| CaMeL | Google DeepMind,2025 | 在双模型思路上加入"能力"追踪:每个数据都带着来源标签,策略引擎根据来源决定它能流向哪里 |
| Agent 设计模式 | 多所机构联合论文,2025 | 总结了若干种在可用性和安全性之间取舍的 Agent 架构模式(如"先规划后执行"、"行动选择器"等) |
前三种属于"降低概率",后三种属于"限制后果"。
第三层:原理与工程要点
3.1 先检查"致命三要素"
一个 AI 系统如果同时具备:
- 访问私密数据;
- 接触不可信内容;
- 对外通信的能力;
那么它几乎一定可以被注入攻击用来偷数据(Simon Willison 称之为"致命三要素")。设计时首先要问:能不能拿掉其中一个?
| 拿掉 | 例子 |
|---|---|
| 私密数据 | 处理公开网页的 Agent 不接入用户邮箱 |
| 不可信内容 | 能读邮箱的 Agent 不浏览外部网页 |
| 对外通信 | 禁止渲染外部图片、禁止任意联网、发送类工具必须人工确认(见《Markdown图片数据外泄》、网络出口控制) |
3.2 双模型模式
关键:特权模型只看到变量名($sum1),看不到变量的内容,所以内容里的注入指令无法影响它的决策。局限是:如果特权模型需要根据内容做判断("如果邮件里提到会议,就加到日历"),这个模式就不够用了。CaMeL 通过让特权模型生成一段代码,再由解释器执行并追踪每个值的来源,部分地解决了这个问题。
3.3 工程清单
| 类别 | 措施 |
|---|---|
| 权限 | 工具权限最小化;只读优先;凭证不进入模型上下文(见《Agent权限设计》、凭证泄露与上下文窗口) |
| 隔离 | 不可信内容和高权限工具不在同一个上下文;按来源打标签 |
| 确认 | 对外发送、写入、删除、付款等动作需要用户确认,并展示完整参数 |
| 出口 | 不自动加载外部资源;网络访问白名单;DNS 也要管(见《网络出口控制》) |
| 输出 | 渲染前检查链接和图片;不信任模型输出里的 HTML |
| 记忆 | 写入长期记忆需确认(见《RAG与记忆投毒》) |
| 可观测 | 记录每次工具调用;异常行为告警 |
| 测试 | 持续用注入测试集做回归(见《AI红队测试》) |
3.4 人工确认的陷阱
"每个动作都让用户确认"听起来最安全,但会导致确认疲劳:用户一天点一百次"允许",很快就不看内容直接点了(和风控评分与摩擦设计里的道理一样)。更好的做法是:
- 低风险动作(只读、本地、可撤销)自动放行;
- 高风险动作(对外发送、花钱、删除、改权限)才确认;
- 确认界面清楚地显示"要做什么、发给谁、发什么内容"。
总结
| 层次 | 要点 |
|---|---|
| 原则 | 不指望模型分辨好坏;让系统保证"被骗了也做不了坏事" |
| 降低概率 | 指令层级、聚光灯、检测器 |
| 限制后果 | 拆掉致命三要素;双模型 / CaMeL;最小权限;出口控制 |
| 平衡 | 按风险分级确认,避免确认疲劳 |