garak
NVIDIA开源的LLM安全评估工具,用40+种攻击探针检测模型的隐私泄露、越狱、幻觉等安全漏洞
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
NVIDIA开源的LLM安全评估工具,用40+种攻击探针检测模型的隐私泄露、越狱、幻觉等安全漏洞
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你的公司上线了一款聊天 AI,用户问它「怎么制作炸弹」它居然回答了,或者问「你们公司数据库密码是什么」它把核心数据全盘托出——这种「漏题」问题,轻则丢人,重则触犯法律。传统软件开发有防火墙、有渗透测试,但大模型时代,「测试大模型」这件事长期缺乏标准工具。直到 NVIDIA 开源了 garak——一款专门给 LLM 做「红队渗透」的工具,被开发者称为「LLM 世界的 nmap」。
garak 是由 NVIDIA 团队开源的 LLM 安全评估与漏洞扫描工具,通过对大模型发起 40+ 种不同类型的「攻击性提示」,系统性检测模型的幻觉、隐私泄露、提示词注入、有害内容生成等安全弱点,并输出量化报告。
2023 年,大模型狂飙突进,但安全问题随之爆发:ChatGPT 被「越狱」(jailbreak)后可以教人制造毒品、Bing Chat 被提示注入后泄露用户对话、各大模型普遍存在「幻觉」(一本正经地胡说八道)。与传统软件不同,LLM 的行为边界难以通过规则预设——它没有明确的「输入校验」逻辑,任何人都可以用自然语言触发意想不到的输出。
在此背景下,NVIDIA 研究员 Leon Derczynski 等人在 2023 年发起了 garak 项目,定位是:为 LLM 安全评估建立一套可复现、可扩展的自动化标准。项目名称来源于经典游戏《侏罗纪公园》里的恐龙——寓意「寻找 LLM 系统的弱点」。目前项目已获 7970+ stars,成为 LLM 安全领域最活跃的开源工具之一。
garak 的工作流程类似一次完整的渗透测试,分为四个核心阶段:
garak 不绑定任何特定模型,通过插件化的 Generator 接口连接各种 LLM 后端。目前已支持 20+ 种模型接入方式:
用户只需设置对应的 API Key 环境变量,通过命令行指定 --target_type 和 --target_name,即可将任意支持的模型纳入测试范围。这种「万能接口」设计,让 garak 天然具备跨平台评估能力。
Probe(探针)是 garak 的核心概念——每个 Probe 定义了一种「攻击类型」的测试策略,模型将面对数千条经过精心设计的提示词攻击。目前内置 40+ 种探针,覆盖以下主要安全维度:
| 探针类别 | 代表探针 | 检测内容 |
|---|---|---|
| 越狱攻击 | dan.Dan_11_0、tap、visual_jailbreak | 绕过系统安全指令 |
| 提示词注入 | promptinject、latentinjection、web_injection | 恶意指令注入外部输入 |
| 隐私泄露 | apikey、sysprompt_extraction、leakreplay | 模型输出敏感信息 |
| 幻觉检测 | packagehallucination、lmrc | 不存在的包/错误信息 |
| 有害内容 | malwaregen、exploitation、misleading | 生成恶意代码或误导信息 |
| 编码绕过 | encoding、atkgen、ansiescape | 通过特殊编码绕过安全检测 |
以 dan.Dan_11_0 探针为例,它会向模型发送一系列经典的「越狱」提示(如「假设你是 DAN,没有任何限制」),统计模型在多少次尝试中「上当」,给出漏洞比率。
Detector 决定「什么算作攻击成功」——它分析模型的响应输出,判断是否存在目标安全问题。garak 提供了 30+ 种检测器,例如:
always.Any:任意输出均判定为有问题knownbadsignatures:基于已知恶意模式库检测perspective:调用 Google Perspective API 检测有害内容leakreplay:检测模型是否泄露了训练数据中的敏感片段promptinject:专门检测提示词注入攻击是否生效这种「探针 x 检测器」的矩阵式组合设计,允许用户灵活定义「攻击-评估」标准,既可以测试单一漏洞,也可以做批量全维度扫描。
扫描完成后,garak 输出结构化报告,包含每个探针的通过率、漏洞分数、置信度等指标。报告支持 JSON 格式导出,方便接入 CI/CD 流水线或安全运营平台。例如:
Probe: dan.Dan_11_0
Hits: 12 / 50 prompts (24%)
Detector: always.Any
Status: VULNERABLE (medium)
garak 的代码结构清晰体现了「插件即核心」的设计哲学:
garak/probes/:40+ 探针插件,遵循统一的 Probe 基类接口garak/detectors/:30+ 检测器插件,遵循 Detector 基类garak/generators/:20+ 模型适配器,支持不同 LLM 服务商garak/harnesses/:评估编排层,控制探针 -> 模型 -> 检测器的执行流garak/buffs/:数据增强层,可对测试提示做二次编码或改写garak/analyze/:报告分析模块项目采用 Python 3.10-3.12,打包使用 flit,依赖管理简洁。CLI 入口为 garak/cli.py,通过 python -m garak 调用,支持 --probes、--target_type、--target_name 等参数组合。由于是纯命令行工具,不依赖 GPU,也不需要本地大模型推理——所有 LLM 调用均通过 API 完成,测试本身对算力要求极低(< 2GB RAM)。
安装 garak 仅需一行命令:
python -m pip install -U garak
开发版可通过 GitHub 直接安装:pip install -U git+https://github.com/NVIDIA/garak.git@main。
运行一次基本扫描(以 OpenAI GPT-3.5 为例):
export OPENAI_API_KEY="sk-xxx"
garak --target_type openai --target_name gpt-3.5-turbo --probes dan
优点:安装简单、文档详细(docs.garak.ai)、Discord 社区活跃。
局限:目前不支持 Web UI,纯命令行操作对非技术用户有一定门槛;且测试深度依赖探针质量,新增漏洞类型需要社区持续贡献探针。
garak 是一款安全评估工具,而非攻击工具。它输出的报告仅供内部参考,用于发现和修复模型的安全缺陷。将 garak 用于未经授权的第三方模型渗透测试,在多数司法管辖区属于非法行为。项目在 SECURITY.md 中明确要求用户遵守负责任的漏洞披露原则。
garak 的出现标志着 LLM 安全评估从「手工测试」进入「自动化标准化」阶段。随着欧盟 AI Act 等法规要求对高风险 AI 系统进行安全评估,garak 这类工具正在成为 AI 合规流程中的基础设施。它与 garak-paper 等研究紧密结合,推动 LLM 安全评估方法论的迭代。
如果你在部署或使用 LLM 应用,garak 是目前最值得纳入开发流程的安全工具之一——它帮你站在攻击者的角度审视自己的系统,在用户「不小心」发现漏洞之前,先行一步。