4.3 间接提示注入技术
间接提示注入(Indirect Prompt Injection)是一种更加隐蔽和危险的攻击形式。恶意指令不是由用户直接输入,而是隐藏在 LLM 处理的外部数据源中。
4.3.1 间接注入原理
攻击流程
图 4-6:间接提示注入攻击时序图
与直接注入的对比
攻击者角色
用户本人
第三方
Payload 位置
用户输入
外部数据
受害者
系统所有者
其他用户
检测难度
相对容易
更加困难
攻击规模
单次攻击
可能影响多个用户
4.3.2 RAG 系统攻击
检索增强生成(RAG)系统是间接注入的主要目标:
攻击场景
图 4-7:RAG 系统间接注入攻击场景流程图
攻击者将包含恶意指令的文档上传到知识库,当用户查询触发检索时,恶意内容被纳入模型上下文。
Payload 设计
挑战
恶意内容被埋在正常内容中,难以检测
向量检索基于语义相似度,无法识别恶意意图
同一 Payload 可能影响多个用户
4.3.3 网页浏览攻击
当 LLM 具备网页浏览能力时,攻击者可以在网页中植入恶意指令:
攻击方式
公开网页投毒:在攻击者控制的网站中植入 Payload
SEO 操纵:使恶意页面在特定查询下排名靠前
隐藏文本:使用 CSS 隐藏恶意指令(对人不可见,但模型可读)
评论区注入:在论坛、评论区等用户生成内容区域植入
隐藏 Payload 技术
这段文字对网页浏览者不可见,但 LLM 在解析网页内容时会读取到。
4.3.4 邮件与日历攻击
公开研究与演示表明,通过“日历邀请”等被动接收的数据渠道也可能实现间接注入:
攻击流程
图 4-8:日历服务间接注入攻击时序图
Payload 示例
类似攻击也可通过邮件附件、邮件正文等渠道实施。
4.3.5 供应链注入
攻击者可以在更上游的位置植入恶意内容:
攻击点
开源数据集
污染公开的训练/RAG 数据集
所有使用该数据集的系统
API 响应
恶意 API 返回包含 Payload 的数据
集成该 API 的应用
翻译/总结服务
在处理过程中注入内容
使用该服务的用户
共享文档
在协作文档中植入 Payload
读取该文档的用户
4.3.6 多阶段注入
复杂的间接注入可能涉及多个阶段:
图 4-9:多阶段间接注入攻击流程图
示例
第一阶段:Payload 指示模型提取系统提示
第二阶段:利用系统提示信息设计更精准的攻击
第三阶段:执行数据窃取或其他恶意操作
4.3.7 跨应用攻击
在多个 LLM 应用协同工作的环境中,间接注入可能跨应用传播:
场景示例
图 4-10:跨应用间接注入传播路径流程图
恶意内容可能在一个应用中被“清洗”后传递到另一个应用,绕过单点防护。
4.3.8 智能体系统的放大效应
当 LLM 具备自主操作能力(即作为智能体运行)时,间接注入的危害被显著放大:
危险场景
发送邮件
钓鱼邮件、垃圾邮件传播
文件操作
数据窃取、文件删除
API 调用
未授权操作、资金转移
代码执行
恶意代码运行
控制流劫持 恶意 Payload 可能完全接管智能体的控制流:
4.3.9 间接注入防御要点
针对间接注入的防御更加复杂,核心思路包括:
数据源隔离:限制模型对不可信数据源的访问
内容预处理:对外部数据进行安全过滤
权限最小化:限制智能体的操作权限
来源标记:区分系统指令、用户输入和外部数据
异常检测:监控模型行为的突变
间接提示注入代表了 LLM 安全面临的严峻挑战。随着 LLM 与更多外部系统集成,这类风险将持续增长。下一节将通过真实案例进一步说明提示注入的实际影响。
最后更新于
