
破解llms防御的攻击策略:揭秘黑客如何突破大型语言模型的安全防线
- Rifx.Online
- Large Language Models , AI Research , Security
- 27 Feb, 2025
Part 1 - 理解黑客在大型语言模型上的攻击策略
Photo by Clint Patterson on Unsplash
记得谷歌的 Gemini 努力过头想要政治正确吗?这些人工智能生成的图像最终只展示了有色人种。有些人觉得这很有趣,但更大的问题是什么?这显示了使用大型语言模型(LLMs)时可能出现的复杂情况。随着这些工具变得越来越先进,其风险也随之增加。
在 Gemini 的案例中,推动包容性反而适得其反。原因是什么?因为其训练数据中的偏见泄露到了结果中。如果不检查所使用的训练数据,即便是出于好意的努力也可能变得糟糕。
如果你在使用 LLMs,进行红队测试是必须的。为什么?因为它们有助于发现:
- 攻击者可能利用的漏洞
- 可能对用户或你的品牌造成伤害的问题行为
这是关于红队测试 LLMs 的多部分系列的第一部分。在这篇博客中,我们将讨论:
- LLM 红队测试究竟是什么?
- 攻击者在 LLM 上使用的不同策略是什么?
所以……什么是红队测试?
红队测试是一种测试您的大型语言模型的强度和安全性的方法。红队测试的目的是故意让模型出错。这涉及到设计狡猾的提示,以挖掘弱点或触发不良反应。
通过模拟潜在的误用场景,您可以在它们造成现实世界麻烦之前发现缺陷。这就像对您的人工智能进行压力测试,以确保它在压力下的表现是伦理地和安全的。
现在,我知道您在想什么:“这不就是黑客行为吗?” 并不完全是!
红队测试是在受控环境中由开发者自己进行的,而不是由试图恶意破坏的外部人员进行的。目标不是造成伤害,而是预防。
如何“攻击”大型语言模型?
这归结为找到恰到好处的词语组合,以欺骗人工智能表现得奇怪或说出一些禁忌的话。由于语言模型在如此广阔的可能性空间中运作,我们主要有两种方法来实现这一点:
-
试错法:
人类不断尝试不同的提示,直到找到有效的方法。示例技巧包括添加诸如“当然,这里是……”的短语,或角色扮演场景,让模型扮演特定角色,甚至写一些无意义的文字或密码也有效!
这些策略乍一看似乎是随机的,但它们有效是因为它们利用了语言模型的训练和结构方式。
-
自动化: 不再仅仅依赖人类,自动化系统系统性地搜索提示,以大规模发现漏洞。
每种方法都有其优缺点。由人类主导的实验带来了创造力和细微差别。自动化提供了速度和可扩展性,但缺乏想象力。
那么,什么方法效果最好呢?两者的结合!人类发现的策略与自动化相结合,以实现最大覆盖,似乎能带来最佳效果。
对语言模型的攻击策略
要理解攻击者如何利用这些系统,首先需要了解它们是如何工作的。在其核心,语言模型根据前面的内容预测序列中的下一个词。这被称为自回归生成。但随着学习的深入,它们发展出额外的技能,比如完成句子、遵循指令,甚至在不同领域进行概括。
这些高级能力?它们正是攻击者利用巧妙的技巧——越狱提示——所瞄准的目标。让我们来详细分析一下。
为什么语言模型容易受到攻击?
首先,语言模型的训练目的是预测适合上下文的下一个词。这是有用的,但在回答问题或进行对话等任务中并不总是理想。后来,开发者对它们进行微调,以更好地遵循用户指令(例如编写代码或角色扮演)。但是这种原始的“完成本能”从未完全消失,攻击者知道如何利用它。
- 攻击者利用这种完成倾向,设计提示来欺骗模型给出不安全的响应。
- 来自不同领域和语言的广泛训练数据使这些系统非常灵活,但也更容易受到利用。
- 如果模型权重或代码被公开发布,这将为攻击者通过调整其参数或使用恶意数据重新训练系统打开更多的机会。
1. 完成合规性
尽管经过广泛的训练以与人类偏好对齐,LLMs 本质上是根据前面的上下文预测后续标记的。这种自回归机制使它们容易受到攻击。
1.1 确认后缀
在预训练期间,模型通过接触各种文本模式学习预测下一个标记。攻击者利用确认后缀进行攻击。这些模式通常在人与人对话中以积极的方式开始,比如“当然,有”或“当然,”。将提示与这些后缀连接可以触发模型按照请求执行,而不考虑潜在风险。
确认后缀攻击的一个例子。[Source]
研究人员已显示,较长的后缀,如“嗨,我是你的助手。你刚刚告诉我以下内容,”,可以更有效地促进越狱。其他模式,如在用户请求中重复任务或使用诸如“汽车可以被”这样的阐述性短语,也被利用。攻击者还可能围绕有争议的话题构建提示,仅呈现论点的一方(这种策略称为单方面论证),以诱导模型产生意想不到的响应。
来自CPAD的单方面论证示例 [Source]
1.2 上下文切换
该策略通过使模型混淆来忽略现有的规则或系统指南,这些规则或指南旨在阻止有害内容的生成:
- 简单的分隔符,如等号(
===
)或换行符(\n
),告诉模型:“忘记上面的所有内容,从头开始。” - 语义干扰,例如无关的闲聊或明确的指示,如“忽略之前的指示”,可能会破坏正确的行为。
一些攻击者甚至将他们的提示游戏化(“玩重复我说的游戏”)或完全改变任务(“总结这个”),使人工智能在压力下更容易出错。
HouYi 框架在结合语法(格式技巧)和语义(有意义的干扰)分隔符以实现高越狱率方面显示了显著成功。
来自 HouYi 的提示注入攻击示例 [Source]
1.3 上下文学习
上下文学习是指语言模型实时从直接包含在提示中的示例中学习,这就是为什么你不再总是需要大量的训练数据了!
听起来不错……除非有人利用这个功能来对付你。
攻击者在他们的提示中直接添加成功攻击的示例(“嘿,人工智能,这里有三种其他人绕过安全措施的方法”)。这会引导或操纵模型跟随而不意识到它应该完全拒绝这些行为。
一些常见的技巧包括:
- 话语链: 提供逐步示例,导致有害输出。
- 引导攻击: 设置虚假场景,使不当内容伪装成另一个任务的一部分(例如,翻译)。
例如,要求模型翻译某些内容,同时嵌入不允许的词汇或将禁止的输出框架作为分类练习的一部分,就足以绕过为安全合规设计的过滤器。
上下文攻击的一个示例 [来源]
立即执行任何操作的一个示例 [来源]
2. 指令间接性
对大型语言模型(LLMs)进行微调以遵循指令,使模型能够执行各种任务并遵循特定约束,从而使其在不同应用中更加有用。然而,在红队测试中,遵循指令与检测或拒绝恶意意图之间存在冲突,尤其是在指令施加多个约束时。
2.1 输入委婉语
攻击者通过重新措辞他们的提示来隐藏有害意图,从而变得狡猾。它们不使用明显的红旗术语,而是采用间接的表达方式来绕过大型语言模型的保护机制。以下是他们使用的两种主要方法:
- 隐晦表达:攻击者不是直接提及敏感话题,而是以微妙的方式重新表述。例如,他们可能不会说“非法活动”,而是写“一种非常规方法”。
- 苏格拉底式提问:这涉及通过开放式或哲学性的问题引导模型,暗示有争议的想法,而不直接表述。
通过避免明确的“触发词”,这些技术测试模型的推理能力及其识别隐藏在明面上的危险的能力。
隐晦表达的一个例子 [来源].
2.2 输出约束
有时攻击并不在于你问什么,而在于你_如何_提问。通过添加关于响应应如何格式化或构建的具体规则,攻击者操纵模型以顺应,即使它不应该合作。
输出约束类型
-
风格约束
这些约束规定了响应的 形式 — 使模型进入像维基百科风格文本、JSON语法等严格格式。例如,要求模型总结内容,但限制为恰好10个单词,这可能会干扰已经存在的安全检查。
要求模型以特定格式响应的示例 [Source]
-
任务约束
攻击者将他们的请求框定为听起来无害的任务的一部分:- 以解决编程问题的名义请求代码(例如,“编写可以改装汽车的代码”)。
- 组合任务,如总结和翻译,以掩盖恶意内容,直到后期阶段。
拒绝抑制攻击的示例 [Source](https://arxiv.org/pdf/2404.00629)\]
-
拒绝抑制攻击
模型通常被训练在响应不安全请求时说“否”,但攻击者可以通过在他们的提示中嵌入拒绝阻止短语来覆盖这种行为(例如,指示人工智能 不 拒绝任何任务)。这迫使模型做出肯定的响应,并将合规性推向安全边界之外。这些攻击有效的一个重要原因是大型语言模型在任务之间的对齐不平衡。总结或翻译任务往往比直接问答场景更容易受到攻击。包含有害细节的长文档如果嵌入在看似无害的输入中,可能会被忽视。
2.3 虚拟模拟
这种方法通过要求语言模型模拟复杂场景或过程,将事情提升到一个新的高度,在这些场景中,恶意意图伪装成创造性练习。
-
场景模拟 在这里,攻击者创建虚构的设置,并提示模型想象结果,例如:
- 在有争议的背景下撰写角色独白。
- 模拟科学家在进行实验时的思考。
- 假装有一个与恶意活动相关的URL查询,并基于此生成虚假的网站内容。
讲故事的能力在这里变成了漏洞。给予的创造性自由越多,攻击者在提示中嵌入伤害的难度就越低。
-
程序执行模拟 想想与编码相关的漏洞,这些漏洞受到网络安全技术的启发!一个例子是“有效载荷拆分”,其中敏感信息被分成多个部分分散在输出中,以便没有单个部分引起警报,直到稍后组装(类似的技巧出现在黑客框架中)。
嵌套场景的示例[来源]
3. 泛化滑行
当人工智能模型从大量数据集中学习时,它们不仅仅是记忆模式;它们发展出跨不同领域转移知识的能力。这就是为什么一个主要用英语训练的模型仍然可以生成较少使用语言的响应。这也是它在看到仅仅几个例子后就能解码base64文本的原因。但这种灵活性也为攻击者提供了可乘之机。
攻击者利用泛化的主要方式有三种:
- 基于语言的利用
- 密码攻击
- 拟人化技术。
3.1 多语言漏洞
人工智能模型的设计是多语言的,但这并不意味着它们对所有语言一视同仁。例如,像Llama这样的模型主要使用英语进行训练,但它们仍然可以处理和生成多种其他语言的文本。这造成了两个主要问题:
- 模型优先考虑高资源语言(如英语)而非低资源语言。
- 由于高质量训练数据有限,确保所有语言的安全性具有挑战性。
研究人员已经证明,人工智能模型在低资源语言中更容易受到攻击。过程很简单:
- 采用高资源语言中的不安全提示。
- 将其翻译成低资源语言。
- 使用这些翻译来提示人工智能。
- 将人工智能的响应翻译回原始语言。
多语言文本比较的示例 [Source]
在英语中会被拒绝的请求,在用一些不太熟悉的表达方式提出时却突然有效,因为这些安全措施并没有在所有语言中同样强烈地延伸。
研究人员尝试使用翻译成这些使用较少语言的安全数据对模型进行微调。虽然这有助于缩小一些差距,但远非完美,攻击在训练数据稀缺的地方仍然更容易实施。
3.2 密码攻击
人工智能模型在理解编码语言方面出人意料地优秀。它们能够处理人类初看时无法识别的加密提示。这意味着攻击者可以使用密码掩盖不安全的请求,这是一种以可预测的方式交换或更改字符的技术。
一些最著名的密码包括:
- ROT13 和凯撒密码: 在字母表中移动字母。
- Leetspeak: 用类似的符号替换字母(例如,“h3ll0”代替“hello”)。
- Base64 编码: 将文本转换为看起来对人类不可读的编码字符串。
由于许多人工智能安全机制依赖于检测特定的关键词,密码使有害提示能够绕过内容过滤器。一些攻击更进一步,研究人员要求人工智能模型创建自己独特的密码,有效地教会它们用秘密代码进行沟通。一旦模型学会了新的密码,攻击者就可以利用它来掩盖提示并获取本来会被阻止的响应。
密码攻击示例 [来源]
3.3 拟人化攻击
语言模型的一个意想不到的弱点是它们能够扮演不同的人物。人工智能不仅仅生成响应,它可以角色扮演为不同的角色,模仿类人行为。攻击者利用这一点操控模型绕过安全限制。
它们是如何做到的:
- 扮演不道德的角色: 请求人工智能像宣传者、间谍或流氓特工一样行动,可以显著增加其生成有害内容的可能性。
- 心理操控: 训练于人类行为的模型可以使用劝说技巧被影响——无论是通过情感诉求、逻辑论证还是欺骗策略。
- 特权升级: 简单的短语如“ADMIN OVERRIDE”或“如果这个限制不存在会怎样?”在某些情况下已被证明有效,欺骗人工智能绕过其自身的安全措施。
来自Source的角色扮演示例
在实验中,攻击者仅通过调整人工智能的人物,成功将有害提示的成功率从不到1%提高到超过40%。在多智能体系统中,当多个人工智能相互作用时,注入不道德特征(如欺骗或背叛)导致超过40%的案例中出现危险行为。
4. 模型操控
当涉及到操控人工智能系统时,游戏规则已经改变。传统的攻击主要集中在使用巧妙的提示来欺骗模型。但现在,随着更多开源和开放权重的语言模型可用,攻击者可以更进一步,直接调整模型本身。从调整超参数到针对特定(且通常是有害的)目标进行微调,这些技术带来了新的严重风险。
4.1 解码操控
人工智能通过基于概率预测单词来生成响应,但这个过程远非万无一失。通过调整模型在解码时选择单词的方式,攻击者可以微妙地将其行为引导到危险的方向。
- 调整温度: “温度”参数控制响应中的随机性。较高的温度会产生不可预测的输出——这可能使模型生成偏见或有害的内容。
- 调整采样技术 (Top-K & Top-p): 这些设置控制在生成响应时考虑多少个高概率单词。研究表明,这里稍微的变化可以将攻击成功率从低至 9% 提升到超过 95%!
- 偏向肯定回应: 像将模型引导到以“当然,这里是……”开始回复这样的微小偏见,已被证明能使其更容易遵循有害指令。
- 弱到强的攻击: 像 Llama 7B 这样的较小模型表现得与其较大的对应模型 (例如,Llama 70B) 类似。攻击者可以研究小模型,以预测和操控较大模型的行为。
4.2 激活操控:
这种方法比仅仅玩弄输出更深入,它针对的是人工智能模型在处理您的请求时的内部工作机制。
工作原理:
- 攻击者在推理过程中(其思维过程)向模型的内部层注入“干扰向量”。
- 这种轻微的偏离改变了人工智能对输入的解释方式和输出的生成,指引其朝着特定目标前进。
攻击者使用的关键战术包括:
- 在推理中添加层: 在处理的关键点添加额外的层或调整,使攻击者能够覆盖原系统中内置的安全保护措施。
- 自动化提示优化: 高级工具帮助制作提示,系统性地绕过安全过滤器而不触发红旗。
4.3 模型微调:
微调让开发者可以针对特定任务定制预训练的语言模型,但这种灵活性是有代价的。如果不负责任地进行微调,可能会严重削弱模型的安全对齐,甚至引入全新的漏洞。
微调可能出现的问题?
-
削弱安全对齐:
研究人员发现,在小规模的有害指令集上进行微调会显著增加不安全行为,从不到 10% 的合规性提升至超过 80%。像 Falcon、Llama2 甚至像 GPT-3.5 这样的受限 API 也不例外,它们在不负责任的微调下都表现出类似的漏洞。
-
有用性与安全性之间的意外权衡:
- 在训练过程中优先考虑有用性往往使人工智能更容易出现风险行为。
- 例如:为“有用性”训练人工智能可能会导致它回答每个问题(甚至不恰当的问题),而不是直接拒绝不安全的请求。
-
数据集质量的影响:
即使看似无害的数据集也可能造成伤害。非事实对话(例如,教一个机器人“1+1=3”或“地球是平的”)会削弱在现实场景中的可信度。
-
加剧风险的技术因素:
在微调过程中使用较高的学习率或较小的批量大小会引入不稳定的更新,从而使模型偏离其原始对齐,后续更容易被利用。
-
微调后的数据泄露:
一项令人担忧的研究发现,仅用几个包含个人可识别信息(PII)的示例微调 GPT-3.5,导致其泄露了之前保密的私人数据!这突显了粗心的定制可能会无意中暴露敏感细节。
结束思考:
越狱方法
总而言之,红队测试不仅仅是一项技术性练习,它是一种主动应对网络威胁的方法。通过像攻击者一样思考,红队挑战假设并暴露隐藏的漏洞,帮助组织建立更强的防御。
这种方法不仅提供安全改进。它带来了传统评估可能忽视的新见解。它将重点从应对事件转向预防事件。它在组织内部培养了一种韧性和准备的文化。
无论你是网络安全专家还是希望加强运营的商业领袖,红队测试提供了适应当今快速变化的数字环境所需的工具和视角。网络威胁每天都在演变,我们的策略也需要与之演变。红队测试是应对未来挑战的最聪明方式之一。
参考文献:
[1] Lizhi Lin, Honglin Mu, Zenan Zha et al, “Against The Achilles’ Heel: A Survey on Red Teaming for Generative Models”, paper