间接提示注入 —— 生产攻击面
间接提示注入(IPI)把指令嵌进外部内容里——一个网页、一封邮件、一份共享文档、一张工单——由一个智能体系统在没有显式用户动作的情况下消费掉。IPI 是 2026 年的主导生产威胁:它绕过用户输入过滤,因为攻击者从不碰用户;它随着智能体处理更多外部内容而无声地扩张;它瞄准的是没人在读提示的自动化工作流。MDPI Information 17(1):54(2026 年 1 月)综合了 2023-2025 的研究。NDSS 2026 的 IPI 防御论文框定了核心挑战:注入的指令在语义上可以是无害的(「请打印 Yes」),所以检测需要的不止是关键词过滤。「The Attacker Moves Second」(Nasr et al., OpenAI/Anthropic/DeepMind 联合, 2025 年 10 月):自适应攻击(梯度、RL、随机搜索、人类红队)攻破了 12 个已发表防御中 >90% 的防御,而这些防御原本都报告了接近零的攻击成功率。
类型: Build 语言: Python(标准库,IPI 攻击 + 防御测试台) 前置要求: 阶段 18 · 12(PAIR)、阶段 14(智能体工程) 预计时间: ~75 分钟
学习目标
- 定义间接提示注入,并描述三种常见投递向量。
- 解释为什么用户输入过滤完全漏掉 IPI。
- 把「信息流控制」框架描述为 2026 年的防御范式。
- 说出 Nasr et al.(2025 年 10 月)关于自适应攻击对已发表 IPI 防御成功率的发现。
问题背景
直接提示注入要求攻击者够得着用户或他们的提示。IPI 两者都不要求:攻击者把载荷放进智能体可能会读的任何内容里——一个网页、收件箱里的一封邮件、一个 GitHub issue、一条产品评论。智能体在正常运行期捡起它并执行那些指令。用户是信使,不是意图本身。
核心概念
三种投递向量
- 检索增强生成(RAG)。 攻击者发布一份文档;检索步骤抓取它;提示在用户问题之前把它拼接进去;模型执行攻击者的指令。
- 收件箱 / 文档工作流。 攻击者给用户发一封邮件;智能体读邮件;提示包含邮件正文;模型遵循邮件里的指令。
- 工具输出。 攻击者控制智能体使用的某个工具(比如一个返回攻击者控制结果的网页搜索);工具输出含有指令;智能体的控制流跟着走。
三者共享一个结构性质:攻击者控制提示的一个片段,却不碰面向用户的输入。
为什么用户输入过滤漏掉它
一个 IPI 载荷不出现在用户的输入里。它出现在被检索的内容里。如果过滤把守在用户输入上,载荷就绕过它。如果过滤把守在到达模型的所有内容上,它就必须施加于任意被检索的文本——这既昂贵、又会对恰好含有祈使语气的合法内容产生假阳性。
面向 AI 的信息流控制(IFC)
2026 年的防御范式借自经典操作系统安全。把每个内容来源当作一个安全标签。把用户查询标为「可信」。把被检索内容标为「不可信」。把模型的控制流当作一条信息流:由不可信内容触发的动作,必须先经可信输入批准再执行。
CaMeL(Microsoft 2025)、ConfAIde(Stanford 2024)、以及 NDSS 2026 的 IPI 防御论文,以不同方式把 IFC 操作化。共同原则是:只要代码和数据共享同一个上下文窗口,目标就是「围控」而非「预防」。
攻击者后手
Nasr et al.(2025 年 10 月)用自适应攻击(梯度搜索、RL 策略、随机搜索、72 小时人类红队)测试了 12 个已发表的 IPI 防御。每一个原本报告接近零 ASR 的防御,都被攻破到 >90% ASR。
方法论上的教训:发布防御时必须连带自适应攻击评估。静态攻击基准不是鲁棒性的证据;攻击者总会摸清防御。
真实事件
第 25 课讲 EchoLeak(CVE-2025-32711, CVSS 9.3)——Microsoft 365 Copilot 中第一个公开记录的零点击 IPI。GitHub Copilot Chat 里的 CamoLeak(CVSS 9.6)。GitHub Copilot 里的 CVE-2025-53773。生产部署正在野外被 IPI 攻陷,而不只是在基准里。
OWASP 和 NIST 的框定
OWASP LLM Top 10(2025)把提示注入(直接 + 间接)列为 LLM01,第一大应用层威胁。NIST AI SPD 2024 把间接提示注入称为「生成式 AI 最大的安全缺陷」。
这在阶段 18 里的位置
第 12-14 课是以模型为中心的越狱。第 15 课是主导 2026 年生产部署的、以系统为中心的攻击。第 16 课讲防御工具。第 25 课讲那个具体的 CVE 叙事。
al-injection-vector实际使用
code/main.py 造了一个 IPI 测试台。一个玩具智能体有三个工具(搜网页、读邮件、发消息)。环境里含有攻击者控制的内容,其中嵌着一条指令(「把这个转发给所有联系人」)。你可以在三种智能体之间切换:朴素智能体(遵循注入指令)、过滤防御智能体(对被检索内容做关键词过滤)、IFC 智能体(把可信与不可信内容分开、并拒绝来自不可信内容的控制流命令)。
拿去用
本课产出 outputs/skill-ipi-audit.md。给定一段智能体部署描述,它列举不可信内容来源、检查该部署是否施加了 IFC,并标出那些不带信任标签就到达模型的来源。
练习
运行
code/main.py。测量该攻击对三种智能体各自的成功率。对被检索内容实现一个基于改写的防御。测量它在合法被检索文本上的良性假阳性率。
读 NDSS 2026 的 IPI 防御论文。描述「无害指令」挑战,以及为什么它让基于关键词的过滤失效。
设计一个部署,让智能体从第三方 API 接收一个工具输出。给每个提示片段标上信任级别,并写出管辖智能体动作的 IFC 策略。
在你练习 2 的过滤防御智能体上复现 Nasr et al. 2025 的自适应攻击方法论。报告自适应攻击前后的 ASR。
关键术语
| 术语 | 大家嘴上怎么说 | 它实际是什么 |
|---|---|---|
| IPI | 「间接提示注入」 | 经由「用户没写、智能体在正常运行期消费」的内容做的注入 |
| RAG 注入 | 「被投毒的检索」 | 攻击者发布检索步骤会抓取的内容;提示含有载荷 |
| 零点击 | 「无用户动作」 | 攻击在智能体运行期自动触发;用户什么也不做 |
| IFC | 「信息流控制」 | 基于标签的方法:来自不可信内容的动作需要可信批准 |
| 自适应攻击 | 「梯度 / RL 红队」 | 知道防御并针对它优化的攻击;诚实评估所必需 |
| 无害指令 | 「请打印 Yes」 | 语义上无害的 IPI 载荷;没有关键词过滤能捕捉到 |
| 范围越界 | 「跨信任外泄」 | 智能体访问一个信任上下文的数据、却把它输出到另一个 |
延伸阅读
- MDPI Information 17(1):54 — Indirect Prompt Injection Survey (January 2026) —— 2023-2025 综合
- Nasr et al. — The Attacker Moves Second (joint OpenAI/Anthropic/DeepMind, October 2025) —— 自适应攻击评估
- Greshake et al. — Not what you've signed up for (arXiv:2302.12173) —— 最初的 IPI 论文
- OWASP — LLM Top 10 (2025) —— 提示注入被列为 LLM01