USENIX Sec’25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

本文介绍对 LLM 提示词注入攻击(prompt injection)的通用防御框架。 首篇论文已被安全顶会 USENIX Security 2025 接收,第一作者陈思哲是 UC Berkeley 计算机系博士生,Meta FAIR 访问研究员,研究兴趣为真实场景下的 AI 安全。 他的导师是 David Wagner (UCB), 郭川 (Meta), Nicholas Carlini (Google)。

本文介绍对 LLM 提示词注入攻击(prompt injection)的通用防御框架。首篇论文已被安全顶会 USENIX Security 2025 接收,第一作者陈思哲是 UC Berkeley 计算机系博士生,Meta FAIR 访问研究员,研究兴趣为真实场景下的 AI 安全。他的导师是 David Wagner (UCB), 郭川 (Meta), Nicholas Carlini (Google)。

一作主页:https://sizhe-chen.github.io

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

项目报告 slides:https://drive.google.com/file/d/1baUbgFMILhPWBeGrm67XXy_H-jO7raRa/view?usp=sharing

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

  • 论文地址:https://arxiv.org/pdf/2402.06363
  • 项目主页:https://sizhe-chen.github.io/StruQ-Website
  • 代码仓库:https://github.com/Sizhe-Chen/StruQ

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

  • 论文地址:https://arxiv.org/pdf/2410.05451
  • 项目主页:https://sizhe-chen.github.io/SecAlign-Website
  • 代码仓库:https://github.com/facebookresearch/SecAlign

提示词注入攻击:背景

LLM 强大的语言能力,使其被广泛部署于 LLM 应用系统(LLM-integrated applications)中。此时,LLM 需要访问外部数据(如文件,网页,API 返回值)来完成任务。在这个交互场景下,有以下三方:

  • 指令(可信的):来自 LLM 应用系统开发者
  • 模型(可信的):来自开发者或 API 供应方
  • 数据(不可信的):来自外部或第三方

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

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

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

提示词注入攻击,被 OWASP 安全社区列为对 LLM 应用系统的最大威胁 [1],对更广泛的 LLM 应用造成重大安全阻碍。部署的工业级 LLM 应用系统(Google Docs [2], Slack AI [3], ChatGPT [4]),经测试可以被提示词注入攻击攻破,造成私有内容的泄露。

提示词注入攻击:原因

第一个原因:LLM 输入中,没有分离指令和数据,二者被直接拼接为单个 LLM 输入。

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

对此,我们提出一个安全前端(secure front-end),在组织 LLM 输入时,显式分离指令和数据。

第二个原因:LLM 训练中,模型被教导遵循输入中的任意指令。

对此,我们提出结构化指令微调(structured instruction tuning)和安全对齐(secure alignment),训练 LLM 识别安全前端组织的输入,从中生成高质量的输出,并对提示词注入攻击鲁棒。

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

防御策略 1:安全前端

在 LLM 输入上,我们设计只能被系统使用的分隔符(delimiters),分离指令和数据。安全前端会留出一些 LLM special tokens(如下图中的 [MARK], [INST], …),用于指令 / 数据分离,并删除数据部分可能含有的特殊分隔符,使其仅能被 LLM 应用系统(而非数据提供方 / 攻击者)所使用。

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

防御策略 2:结构化指令微调

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

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

防御策略 3:安全对齐

在 LLM 训练时,除了指令微调,还有对齐这一步骤,我们同样可以在此做防御。安全对齐构建一个偏好数据集(preference dataset),对于每一个 SFT 数据集中的样本:

  • 采样另一个随机样本 s’,用于模拟提示词注入攻击
  • 偏好数据集中,LLM 输入是被注入了 s’ 指令的样本 s
  • 偏好数据集中,LLM 理想输出是对 s 指令的回复
  • 偏好数据集中,LLM 不良输出是对 s’ 指令的回复

在此数据集上,我们利用标准偏好优化(direct preference optimization)算法微调模型。

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

提示词注入攻击:防御结果

防御策略 1+2 被称为 StruQ (USENIX Sec’25),防御策略 1+3 被称为 SecAlign。

如下图所示,StruQ/SecAlign 模型保持和未防御模型相同的性能(general-purpose utility by AlpacaEval2 WinRate)。

对于无优化的提示词注入攻击,StruQ 模型实现了 < 2% 攻击成功率,SecAlign 实现 0% 攻击成功率(Max ASR Opt.-Free)。

对于基于优化的提示词注入攻击,StruQ 显著降低其成功率,SecAlign 又进一步将成功率降低 4 倍以上,到 15% 以下(Max ASR Opt.-Based)。

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

提示词注入攻击:防御总结

我们提出提示词注入攻击成功的两个原因,并逐一对它们设计防御。

由于 LLM 输入中,没有分离指令和数据,我们提出安全前端(secure front-end),在组织 LLM 输入时,用只能被系统所用的分隔符,分离指令和数据。

由于 LLM 训练中,模型被教导遵循输入中的任意指令,我们提出结构化指令微调(structured instruction tuning)和安全对齐(secure alignment),训练模型只遵循 LLM 应用系统设计的指令。

以下是三个防御策略,在模型训练 pipeline 中的位置。

USENIX Sec'25 | LLM提示词注入攻击如何防?UC伯克利、Meta最新研究来了

[1] https://owasp.org/www-project-top-10-for-large-language-model-applications。

[2] https://embracethered.com/blog/posts/2023/google-bard-data-exfiltration。

[3] https://promptarmor.substack.com/p/data-exfiltration-from-slack-ai-via。

[4] https://thehackernews.com/2024/09/chatgpt-macos-flaw-couldve-enabled-long.html。

给TA打赏
共{{data.count}}人
人已打赏
理论

3B模型长思考后击败70B!HuggingFace逆向出o1背后技术细节并开源

2024-12-17 21:02:00

理论

人工智能的过去、现在和未来

2024-12-18 7:45:18

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
搜索