Broken Hill
Broken Hill 是一款已产品化、开箱即用的自动化攻击工具,它使用贪婪坐标梯度(greedy coordinate gradient, GCG)攻击生成精心构造的提示词,以绕过大型语言模型(LLM)中的限制。该攻击方法详见 Andy Zou、Zifan Wang、Nicholas Carlini、Milad Nasr、J. Zico Kolter 和 Matt Fredrikson 的论文《Universal and Transferable Adversarial Attacks on Aligned Language Models》。
Broken Hill 能够生成稳健的提示词,成功越狱(jailbreak)那些配置与生成提示词所用模型不同的 LLM。例如:
- 参数数量更多或更少的同一模型
- 例如,提示词是使用 Gemma 的 20 亿参数版本生成的,但被用于攻击基于 Gemma 70 亿参数版本的实现。
- 权重被量化为不同数据类型的同一模型
- 例如,提示词是使用权重以
FP16 格式存储的 Phi 3 版本生成的,但被用于攻击 ollama 默认版本(权重被量化为 4 位 q4_0 整数格式)的 Phi 3。
- 随机化设置不同的同一模型
- 例如,非默认的 temperature 或随机种子。
- 甚至可能是与生成提示词所用模型不同的模型
该工具部分基于 与《Universal and Transferable Adversarial Attacks on Aligned Language Models》论文相关的 llm-attacks 仓库 的一个深度定制版本,并整合了 nanoGCG 中的一些算法。
Zou、Wang、Carlini、Nasr、Kolter 和 Fredrikson 的原始研究是在配备 80GiB 显存(VRAM)的高端云/托管服务商硬件上进行的,例如 Nvidia A100 和 H100。对个人而言,购买这些 GPU 通常过于昂贵,而租用其访问权限也可能产生高额账单。
我们最初的目标是大幅提升这一迷人研究领域的可及性:打造一款工具,使其能够在 GeForce RTX 4090 上对尽可能多的模型执行 GCG 攻击。RTX 4090 是当前一代支持 CUDA 的消费级 GPU 中显存最大(24GiB)的一款。RTX 4090 仍然昂贵,但直接购买一块的价格(截至本文撰稿时)与租用一台配备 A100 或 H100 的云实例一个月大致相当。此外,在信息安全领域,至少有一小部分人已经拥有一块或多块用于哈希破解和/或游戏的 RTX 4090。
从 0.34 版本开始,Broken Hill 还可以在没有 CUDA 硬件的设备上以可接受的速度进行处理(尽管性能相比 CUDA 硬件有所降低),甚至可以在 Mac OS 和 Windows 上使用(不过主要在 Linux 上进行测试)。这使得攻击可以由更广泛的受众执行,并且可以攻击比先前版本所允许的更大规模的模型。
文档
Broken Hill 的文档因材料量庞大,单独存放于其自身的目录树中。
Broken Hill 版本历史
一篇从宏观层面介绍 Broken Hill 的博客文章
BishopFox.com 上的 Broken Hill 工具页面
功能特性
- 丰富的命令行界面
- 支持众多模型家族,其中许多提供足够小的尺寸,可在 RTX 4090 上运行(具体细节请参阅「Model notes」文档)。部分亮点包括:
- Azurro 的 APT 模型家族
- Falcon
- Gemma(包括第三方衍生模型,例如
Vikhr-Gemma-2B-instruct)
- Gemma 2
- GLM-4
- GPT-J、GPT-Neo 和 GPT-NeoX
- Guanaco
- Llama(包括第三方衍生模型,例如
Llama-68M-Chat-v1 和 alpaca-13b)
- Llama-2(包括第一方和第三方衍生模型,例如 Meta-Llama-Guard-2、Swallow 和 Youri)
- Llama-3(包括第一方和第三方衍生模型,例如 Llama-Guard-3、Swallow 和 Youko)
- MPT
- Mamba
- Mistral(包括第三方衍生模型,例如 Intel 的 Neural Chat)
- Mixtral
- OPT
- Orca-2
- Phi-1 至 Phi-3.5
- Pythia(包括第三方衍生模型,例如 OpenAssistant 模型中基于 Pythia 的子集)
- Qwen 1、1.5 和 2(包括第三方衍生模型,例如
nekomata-7b-instruction)
- RedPajama-INCITE
- SOLAR
- SmolLM
- Snowflake Arctic
- StableLM 1 和 2
- TinyLlama
- Vicuna
- 结果可以 JSON 格式输出,便于筛选/分析
- 支持在多种不同的随机化设置下,针对同一个 LLM 测试每一轮迭代的对抗性数据,以帮助剔除脆弱的结果
- 每一轮迭代自动备份状态,允许在遇到错误时从检查点恢复,或在测试结束后继续执行更多迭代。
- 内置自测功能,帮助验证攻击配置是否正确,以及是否会产生有用的结果
- 验证对话是否以模型训练时使用的格式提供
- 验证在不包含对抗性内容时,模型不会提供所请求的输出
- 验证在给定模拟 GCG 攻击理想结果的提示词时,模型能够提供所请求的输出
- 除损失值之外,用于引导对抗性内容生成方向的附加技术
- 基于越狱次数回滚到最高水位(high-water-mark)结果
- 要求损失值达到(或接近)之前的结果
- 支持以 JSON 格式指定自定义越狱检测规则,使测试用例的检测更加准确
- 为 Zou、Wang、Carlini、Nasr、Kolter 和 Fredrikson 开发的默认方法提供改进的越狱检测规则
- 可选的预配置拒绝列表(denylist),帮助避免生成包含侮辱性词语、脏话等内容的对抗性结果
- 过滤及其他用于改善结果的控件
- 大量用于测试 GCG 攻击变体的实验性选项
- 以及其他各种功能
未来版本计划
- 能够测试或重新分析现有结果(针对其他模型/配置、使用不同的越狱检测规则等)
- 将使「可迁移」对抗性内容的发现更加直接
- 将允许在能够装入设备内存的模型上测试结果,即使 GCG 攻击所需的数据(梯度、反向传播数据等)无法装入
- 将允许在不重新运行内容生成的情况下,测试修订后的越狱检测规则
- 更全面的自测,以进一步优化对话模板
- 更灵活的回滚模型
- 可配置的随机化规则,帮助生成更多独特变体("Gamma garden mode")
- 内置输出结果数据供后续工作使用的功能(而不是在当前版本中使用
jq)
- 改进的默认越狱检测逻辑
- 额外的损失算法
- 支持运行由中心节点协调的 Broken Hill 系统集群
- 更多的攻击模式
- 国际化