4.3 间接提示注入技术

间接提示注入(Indirect Prompt Injection)是一种更加隐蔽和危险的攻击形式。恶意指令不是由用户直接输入,而是隐藏在 LLM 处理的外部数据源中。

4.3.1 间接注入原理

攻击流程

spinner

图 4-6:间接提示注入攻击时序图

与直接注入的对比

特征
直接注入
间接注入

攻击者角色

用户本人

第三方

Payload 位置

用户输入

外部数据

受害者

系统所有者

其他用户

检测难度

相对容易

更加困难

攻击规模

单次攻击

可能影响多个用户

4.3.2 RAG 系统攻击

检索增强生成(RAG)系统是间接注入的主要目标:

攻击场景

spinner

图 4-7:RAG 系统间接注入攻击场景流程图

攻击者将包含恶意指令的文档上传到知识库,当用户查询触发检索时,恶意内容被纳入模型上下文。

Payload 设计

挑战

  • 恶意内容被埋在正常内容中,难以检测

  • 向量检索基于语义相似度,无法识别恶意意图

  • 同一 Payload 可能影响多个用户

4.3.3 网页浏览攻击

当 LLM 具备网页浏览能力时,攻击者可以在网页中植入恶意指令:

攻击方式

  1. 公开网页投毒:在攻击者控制的网站中植入 Payload

  2. SEO 操纵:使恶意页面在特定查询下排名靠前

  3. 隐藏文本:使用 CSS 隐藏恶意指令(对人不可见,但模型可读)

  4. 评论区注入:在论坛、评论区等用户生成内容区域植入

隐藏 Payload 技术

这段文字对网页浏览者不可见,但 LLM 在解析网页内容时会读取到。

4.3.4 邮件与日历攻击

公开研究与演示表明,通过“日历邀请”等被动接收的数据渠道也可能实现间接注入:

攻击流程

spinner

图 4-8:日历服务间接注入攻击时序图

Payload 示例

类似攻击也可通过邮件附件、邮件正文等渠道实施。

4.3.5 供应链注入

攻击者可以在更上游的位置植入恶意内容:

攻击点

攻击点
描述
影响范围

开源数据集

污染公开的训练/RAG 数据集

所有使用该数据集的系统

API 响应

恶意 API 返回包含 Payload 的数据

集成该 API 的应用

翻译/总结服务

在处理过程中注入内容

使用该服务的用户

共享文档

在协作文档中植入 Payload

读取该文档的用户

4.3.6 多阶段注入

复杂的间接注入可能涉及多个阶段:

spinner

图 4-9:多阶段间接注入攻击流程图

示例

  1. 第一阶段:Payload 指示模型提取系统提示

  2. 第二阶段:利用系统提示信息设计更精准的攻击

  3. 第三阶段:执行数据窃取或其他恶意操作

4.3.7 跨应用攻击

在多个 LLM 应用协同工作的环境中,间接注入可能跨应用传播:

场景示例

spinner

图 4-10:跨应用间接注入传播路径流程图

恶意内容可能在一个应用中被“清洗”后传递到另一个应用,绕过单点防护。

4.3.8 智能体系统的放大效应

当 LLM 具备自主操作能力(即作为智能体运行)时,间接注入的危害被显著放大:

危险场景

智能体能力
间接注入可能导致

发送邮件

钓鱼邮件、垃圾邮件传播

文件操作

数据窃取、文件删除

API 调用

未授权操作、资金转移

代码执行

恶意代码运行

控制流劫持 恶意 Payload 可能完全接管智能体的控制流:

4.3.9 间接注入防御要点

针对间接注入的防御更加复杂,核心思路包括:

  • 数据源隔离:限制模型对不可信数据源的访问

  • 内容预处理:对外部数据进行安全过滤

  • 权限最小化:限制智能体的操作权限

  • 来源标记:区分系统指令、用户输入和外部数据

  • 异常检测:监控模型行为的突变

间接提示注入代表了 LLM 安全面临的严峻挑战。随着 LLM 与更多外部系统集成,这类风险将持续增长。下一节将通过真实案例进一步说明提示注入的实际影响。

最后更新于