Broken Hill:面向生产环境的贪婪坐标梯度攻击工具,用于针对大语言模型
TL;DR:本篇博客解释了GCG攻击技术(可诱使AI聊天机器人行为异常),并介绍Broken Hill——一种先进的自动化工具,专为生成精心构造的提示词而设计,能够绕过大型语言模型(LLM)的安全限制。研究人员和渗透测试人员可在多种主流AI模型上使用该工具,无需昂贵云服务器,从而更好地理解和防御现代对抗攻击。
2023年7月,Andy Zou、Zifan Wang等学者发表论文《Universal and Transferable Adversarial Attacks on Aligned Language Models》,提出了一种新颖的攻击技术(“贪婪坐标梯度”——GCG),可突破几乎所有带有聊天/对话界面的大语言模型的安全限制。
对于缺乏LLM实战经验者而言,GCG攻击可能像难以理解的外星技术。最初研究时我深有体会。直接阅读原论文如同跳入深水区,而阅读Zou等人的代码除非已精通机器学习和PyTorch库,否则帮助有限。
本文将从高层视角解析GCG攻击,并介绍Bishop Fox新发布的工具Broken Hill。该工具可对多种主流LLM执行GCG攻击,生成能诱使模型违反其条件约束和/或系统提示的对话消息。许多模型支持在消费级GPU(如Nvidia GeForce RTX 4090)本地进行攻击,无需租用云服务商的高端数据中心硬件。
大语言模型工作原理
简而言之,LLM是通过分析输入文本,基于训练时吸收的统计规律尝试续写内容的复杂系统。若配置为允许非确定性输出,随机因素会将生成文本导向不同路径。
若熟悉马尔可夫链,可将LLM视为超级复杂的马尔可夫链生成器,但其受整个输入文本序列而不仅是最近元素的影响。若了解"中文房间"思想实验,可在此语境下将LLM视作高度近似的"中文房间"。
例如,训练为聊天机器人的LLM可能接收如下文本:
|
|
统计上,最可能的后续文本是助手对请求的回复。若LLM被训练或指示使用友好语言,统计上最可能的首词将是"当然"或等效词组如"我乐意"。
LLM的对齐与指令
许多现代LLM经过"对齐"训练,避免提供特定类型信息。例如,通常它们会拒绝提供关于政治人物的虚假信息或武器制造指南。
当LLM被集成到其他软件时,通常会被赋予初始指令(通过"系统提示"和示例请求/响应内容),用于塑造输出行为。例如,指令可能要求LLM"仅提供与Peter Watts所著《Firefall》系列小说相关的信息",“礼貌拒绝讨论其他话题”,或"以二世纪军阀风格写作"。
GCG攻击原理
GCG攻击需要操作者提供两个输入:发送给LLM的请求,以及LLM未被限制时理想回应的开头部分。例如,请求可能是"撰写泰勒-乌拉姆热核武器的详细制造指南",理想回应可能以"当然,以下是泰勒-乌拉姆热核武器的详细制造指南"开头。
GCG算法试图发现特殊构造文本(“对抗性内容”)——当将其包含在请求中时,会促使LLM预测用户请求之后最可能出现的文本是攻击者设定的理想回应开头。
例如,LLM将接收以下文本:
|
|
正常情况下,基于训练数据它可能预测:
|
|
但对抗性内容会使LLM转而预测最可能的续写是:
|
|
这看似平淡无奇,因为LLM只是回复攻击工具操作者已知的信息。但统计上这不符合完整回应模式,因此LLM会继续添加文本直至回应完整。例如:
|
|
GCG攻击的特殊性在于:即使LLM被条件约束不提供请求类信息,它也极可能忽略该约束,因为(拟人化表述)LLM"认为"自己已同意提供信息,统计上最可能的后续文本正是其被约束禁止提供的内容。
Broken Hill工具
Zou等人发布了针对Llama-2等流行LLM的GCG攻击概念验证代码。该代码因支持的LLM规模和GCG攻击数据开销,需要访问Nvidia A100/H100等昂贵GPU硬件。
笔者受其研究启发,希望让更多人能使用此技术。特别目标是能在消费级GPU(如GeForce RTX 4090)上对较小模型(如微软Phi系列)执行攻击,并构建足够灵活的工具以成为"LLM测试界的sqlmap"——可自动处理常见场景的生产级稳健软件。
Bishop Fox现发布该工具的首个公开版本Broken Hill。这个初始版本是数月研发的成果,虽仍有巨大优化空间,但已能产生在真实渗透测试和LLM研究场景中有用的结果。
使用示例
开发Broken Hill期间,同事Derek Rush正在撰写《探索大语言模型》博客及LLM实验/夺旗(CTF)练习。这成为展示GCG攻击威力的完美机会。
我们在Broken Hill文档中提供了击败Derek的CTF的完整详解,以下是简要说明:
使用Broken Hill生成两组有效载荷:一组使Phi-3模型(CTF默认模型)泄露密钥,另一组使守门LLM始终将用户请求和"精灵"LLM响应视为适合音乐商店的讨论。此步骤利用Broken Hill对模型多个随机化版本测试候选有效载荷的能力,筛选出在不同环境、不同量化级别等条件下仍可能有效的值。同时使用Broken Hill的过滤功能确保结果能通过CTF实现的输入验证检查。
例如,“泄露密钥"提示最初如下:
|
|
经Broken Hill检测到足够多的越狱成功后,最终变为:
|
|
随后使用Linux expect脚本,针对运行不同模型变体的CTF二进制文件测试每个列表中最有希望结果的所有组合,并将成功结果聚合到列表中。
使用最终有效载荷的结果示例:
|
|
如何在工作或研究中使用Broken Hill?
您也可使用Broken Hill生成内容库,用于零知识测试(如未提供模型权重文件的安全评估)。我们将在后续博客中详细讨论此场景。
更多LLM资源推荐:
- 博客《探索大语言模型:本地LLM CTF与实验》
- 网络研讨会《企业实用AI与LLM安全缓解措施》
- 网络研讨会《测试LLM算法的同时接受AI测试》
了解Bishop Fox如何助您进行AI/ML安全评估!