AIxiv专栏是机器之心发布学术和技术内容的专栏。几年来,机器之心AIxiv专栏已收到2000余篇报道,覆盖全球各大高校和企业的顶级实验室,有效促进了学术交流和传播。如果您有优秀的作品想要分享,请随时投稿或联系我们进行举报。提交电子邮件:;
本文介绍了一种针对 LLM 提示词注入攻击的通用防御框架 ( )。第一篇论文已被 2025接收。第一作者陈思哲是加州大学计算机科学系博士生,meta FAIR访问研究员。他的研究兴趣是真实场景中的人工智能安全。他的导师是David(UCB)、郭川(meta)、()。
一作主页:

项目报告:

提示词注入攻击:背景
LLM强大的语言能力使其能够广泛部署在LLM应用系统(LLM-)中。这时LLM需要访问外部数据(如文件、网页、API返回值)来完成任务。在这个交互场景中,有以下三方:

系统对外部数据源的访问提供了新的攻击视角:攻击者可以在第三方数据中注入额外的指令来覆盖LLM应用程序的原始指令。如下图所示,A餐厅老板在点评网站yelp上发布了一条包含提示词注入攻击的评论,误导LLM忽略其原来的指令(推荐一些不错的餐厅),转而推荐评价较差的A餐厅。


提示词注入攻击被OWASP安全社区列为LLM应用系统的最大威胁[1],对更广泛的LLM应用造成重大安全障碍。所部署的工业级LLM应用系统(Docs[2]、Slack AI[3]、[4])经过测试,可以被即时词注入攻击破坏,导致隐私内容泄露。
提示词注入攻击:原因
第一个原因:LLM输入中,没有指令和数据分离,两者直接拼接成单个LLM输入。

在这方面,我们提出了一个安全前端,在组织 LLM 输入时显式分离指令和数据。
第二个原因:在 LLM 训练中,模型被教导遵循输入中的任意指令。
对此,我们提出结构化指令微调( )和安全对齐( )来训练LLM识别安全前端组织的输入,从中生成高质量的输出,并能够鲁棒地提示词注入攻击。

防御策略 1:安全前端
在LLM输入上,我们设计了一个分隔符(),只能被系统用来分隔指令和数据。安全前端会预留一些LLM(下图中的[MARK],[INST],...)用于指令/数据分离,并删除数据部分可能包含的特殊分隔符,使其只能应用由系统(而不是数据提供者/攻击者)使用的LLM。

防御策略2:微调结构化指令
在LLM训练期间,我们模拟提示词注入攻击,并教导模型忽略数据中的任何注入指令,仅遵循LLM应用系统的原始指令(由安全前端分离和定义)。具体来说,我们从原始指令微调数据集中生成了新的“结构化指令微调数据集”,其中部分包含提示词注入攻击的样本,如下图所示。在此数据集上,我们利用标准 SFT(微调)算法来微调模型。

防御策略 3:安全协调
LLM训练的时候,除了指令微调之外,还有一个对齐的步骤,我们也可以做防御。安全对齐为 SFT 数据集中的每个样本构造一个偏好数据集 ( ):
在此数据集上,我们使用标准偏好优化 ( ) 算法对模型进行微调。

即时词注入攻击:防御结果
防御策略1+2称为StruQ (Sec'25),防御策略1+3称为 。
如下图所示,StruQ/模型保持了与无防御模型相同的性能(- by )。
对于未经优化的即时词注入攻击,StruQ模型实现了<2%的攻击成功率和0%的攻击成功率(Max ASR Opt.-Free)。
对于基于优化的提示词注入攻击,StruQ 显着降低了成功率,并进一步将成功率降低了 4 倍以上至不到 15%(Max ASR Opt.-based)。

提示词注入攻击:防御总结
我们提出了即时词注入攻击成功的两个原因,并一一设计了防御措施。
由于LLM输入中的指令和数据没有分离,我们提出了一个安全前端,使用只能由系统在组织LLM输入时使用的定界符来分离指令和数据。
由于在 LLM 训练中,模型被教导遵循输入中的任意指令,因此我们提出结构化指令微调( )和安全对齐( )来训练模型仅遵循 LLM 应用系统设计的指令。
以下是三种防御策略,它们适用于模型训练。

[1]
[2]
[3]
[4]


