SELFDEFEND: LLMs Can Defend Themselves against Jailbreaking in a Practical Manner
英文题目:《SELFDEFEND: LLMs Can Defend Themselves against Jailbreaking in a Practical Manner》
中文题目:《SELFDEFEND:LLM 以一种实用的方式防御越狱攻击》
论文作者:Xunguang Wang, Daoyuan Wu, Zhenlan Ji, Zongjie Li, Pingchuan Ma, Shuai Wang, Yingjiu Li, Yang Liu, Ning Liu, Juergen Rahmel
发布于: USENIX
发布时间:2024-06-08
级别:CCF-A
论文链接: https://doi.org/10.48550/arXiv.2406.05498
论文代码:null
摘要
Jailbreaking(越狱)是一种新兴的对抗性攻击,它绕过了现成的 (off-the-shelf) 大型语言模型 (LLM) 中部署的安全对齐机制,并且已经演变为多种类别:基于人的、基于优化的、基于生成的,以及最近的间接和多语言越狱。然而,提供一种实用的越狱防御方法是具有挑战性的,因为它不仅需要处理上述所有越狱攻击,还需要对用户提示 (prompt) 产生可忽略不计的延迟,并且与开源和闭源 LLM 兼容。受到传统安全概念中影子堆栈 (shadow stack) 如何防御内存溢出攻击的启发,本文介绍了一种通用的 LLM 越狱防御框架,名为 SELFDEFEND,它建立了一个影子 LLM 作为防御实例(处于检测状态),以便在正常堆栈中同时保护目标 LLM 实例(处于正常回答状态),并与其协作以进行基于检查点的访问控制。SELFDEFEND 的有效性建立在我们的观察之上,即现有的 LLM 可以识别用户查询中的有害提示或意图,我们使用主流的 GPT-3.5/4 模型针对主要的越狱攻击进行了实证验证。为了进一步提高防御的鲁棒性并最大限度地降低成本,我们采用了一种数据蒸馏方法来调整专门的开源防御模型。当部署用于保护 GPT3.5/4、Claude、Llama-2-7b/13b 和 Mistral 时,这些模型优于七种最先进的防御方法,并且与基于 GPT-4 的 SELFDEFEND 的性能相匹配,同时具有显著更低的额外延迟。进一步的实验表明,经过调整的模型对于自适应越狱和提示注入具有鲁棒性。
本文聚焦的问题
解决目前的防御越狱攻击的方法无法同时达成的四点目标:应对所有类型越狱攻击;对正常用户提示的延迟可忽略;能解释恶意查询的危害点;兼容开源与闭源 LLM。
本文提出的方法
文章首先分析了当前的防御,并提出了4个指标:
O1:处理所有类型的越狱攻击。 理想的防御机制应能应对论文第2节中列出的所有越狱攻击类别,包括基于人工的、基于优化的、基于生成的、间接的和多语言的越狱攻击。
O2:对用户提示造成可忽略的延迟。 防御机制不应影响用户体验,对正常用户提示造成的延迟应为零或可忽略不计。
O3:为潜在的越狱查询提供解释。 当防御机制检测到任何可能与越狱相关的查询时,应提供有用的解释,说明为何该查询被认为是恶意的。
O4:兼容开源和闭源LLM。 提出的越狱防御方法应能保护白盒和开源LLM,以及黑盒和闭源LLM。

为了解决这些不足,论文提出了 SELFDEFEND 框架,它借鉴了传统安全领域“影子栈”的概念,通过同时运行一个防御LLM(shadow LLM)来保护目标LLM,旨在实现:
O1:处理所有类型的越狱攻击(通过双层保护和精心设计的检测提示)。
O2:对正常用户提示造成可忽略的延迟(防御LLM的输出通常很短)。
O3:为潜在的越狱查询提供解释(通过识别有害部分)。
O4:兼容开源和闭源LLM(防御LLM无需修改目标LLM的内部细节)。
SELFDEFEND 框架如下图所示:

1、分发 P_query
用户提交的任何查询 P_query(无论是正常的请求,还是潜在的越狱或对抗性提示),都会被SELFDEFEND系统同时分发给两个LLM实例:
LLM_target: 这是位于“正常栈”(Normal Stack)中的目标LLM实例,它将像平时一样处理用户请求。
LLM_defense: 这是位于“影子栈”(Shadow Stack)中的防御LLM实例,它将专注于检测潜在的越狱企图。
2、并行处理 P_query
LLM_target 的处理: LLM_target 会逐个token地生成其响应。然而,这些输出在被返回给用户之前,会被暂时缓存起来。它会等待“影子栈”的检测结果来触发一个“检查点”(Checkpoint)。
LLM_defense 的处理: LLM_defense 会使用一个专门定制的检测提示来封装 P_query,以检测其中的有害部分(通过 P_direct)或有害意图(通过 P_intent)。
P_direct(直接提示): 如图所示,该提示会直接询问LLM:“您能否识别以下句子中哪些部分可能违反您的安全策略?”并要求LLM返回原始的有害部分,或在没有问题时返回“No”。这种方法适用于直接包含恶意指令的越狱攻击。

P_intent(意图提示): 这种提示则旨在理解查询的真实意图,即使恶意指令被隐蔽或间接表达。它首先总结查询的意图,然后从总结出的意图中提取任何违反安全策略的部分。

LLM_defense 的输出结果通常很简短:如果检测到没有问题,它会快速输出“No”;如果检测到有害内容,它会输出识别到的“有害部分”(Harmful Portion)。
3、触发检查点
如果 LLM_defense 输出“No”: 这表明用户查询是安全的。此时,检查点被触发,LLM_target 缓存的正常响应会被释放,并返回给用户,几乎没有额外的延迟。
如果 LLM_defense 输出“有害部分”: 这表明用户查询是越狱攻击。此时,LLM_target 的响应会被阻止,系统会返回一个预设的拒绝模板:“我无法满足您的请求,因为您的[有害部分]违反了我们的安全策略。”,并附上LLM_defense识别出的具体有害部分,提供了可解释的拒绝理由。
阅读总结
优点:
1、防御覆盖全面,对抗能力强。
2、低延迟高效率,不影响用户体验。
缺点:
1、特定攻击场景下防御能力不均衡,两种检测提示(Pdirect/Pintent)的优势场景存在明显差异。
2、多语言防御能力依赖训练数据,低资源语言适配不足。
未来可将 “影子栈” 设计扩展至多模态场景:例如,为图像 - 文本 LLM(如 GPT-4V)构建 “多模态影子检测器”,同步分析图像中的视觉线索(如隐藏的文字、危险物品图像)与文本提示,覆盖 “视觉诱导 + 文本越狱” 的复合攻击。