一、项目简介
Garak(全称 garak: A Framework for Security Probing Large Language Models)是 NVIDIA 开源的大语言模型漏洞扫描器,自称为 “LLM 界的 nmap”。它的使命非常纯粹:检查 LLM 是否会以我们不希望的方式失败。
- GitHub 仓库:github.com/NVIDIA/garak
Stars:⭐ 8,052 Forks:1,005 - License:Apache 2.0
- 最新版本:v0.15.1(2026-06-05 发布)
- 贡献者:98 人
- 文档:docs.garak.ai
- 论文:arXiv:2406.11036
Garak 最初创建于 2023 年 5 月,随后迁移至 NVIDIA 组织,成为 AI 基础设施安全领域的重要开源工具。其在 DEF CON 上做过展示,并拥有活跃的 Discord 社区和学术论文支撑。
二、产品定位:为什么说它是『LLM 界的 nmap』?
Garak 的产品定位有几个非常清晰的战略性选择,使其与同类工具截然不同。
2.1 『红队工具』而非『评估框架』
这是 Garak 与其他工具最根本的差异。Garak 明确表示自己的分数 没有科学有效性(FAQ 原文:“Do these results have scientific validity? No.”——这些结果有科学有效性吗?没有)。
相比之下,Giskard、LangSmith 等工具强调评估的可靠性和可重复性。Garak 的哲学是:扫描不是为了打分,而是为了发现弱点。这有点像早期渗透测试工具的态度——不纠结评分的严谨性,追求是否能找到漏洞。
2.2 模仿 nmap 的用户心智模型
Garak 的 README 和 FAQ 反复将自己的用户心智锚定在 nmap(网络扫描器)和 Metasploit(渗透测试框架)上,这不是简单的比喻:
| 类比对象 | 用户思维映射 |
|---|---|
| nmap | 输入目标模型 → 自动尝试大量探针 → 输出脆弱点报告 |
| Metasploit | 模块化插件体系(probes / detectors / generators)、可扩展的 exploit 库 |
这一认知锚定精确瞄准了安全工程师群体——他们有 nmap / MSF 的使用经验,理解”扫描→发现→利用”的工作流。
2.3 聚焦 Security 而非 Safety
Garak 有意识地聚焦于 security(安全) 而非 safety(对齐/伦理安全):
“It’s not a tool for assessing social biases… The focus isn’t safety, it’s security.”
这意味着 Garak 不关心模型是否有偏见、是否政治正确,它关心的是:模型能否被绕开防护?能否被注入恶意指令?能否泄露训练数据?
2.4 NVIDIA 背书的战略意义
2023 年项目在个人研究机构下创立,后续迁移到 NVIDIA/garak 组织并非偶然。NVIDIA 作为 AI 基础设施最大供应商,需要一个:
- 证明其 GPU / NIM 平台安全的工具
- 覆盖模型供应链安全(从训练到部署)的风险检测
- 为客户提供”买 NVIDIA 产品前先用 Garak 扫一遍”的安全背书
2.5 产品形态取舍
| 做 / 不做 | Garak 的选择 |
|---|---|
| UI | 命令行 TUI(不做 Web UI),完全面向开发者 / 安全工程师 |
| 插件体系 | 高度模块化,四种插件类型(probes / detectors / generators / evaluators) |
| 报告输出 | JSONL 逐次日志 + Hit 日志 + 分析脚本(不做可视化仪表盘) |
| 模型支持 | 极其广泛:HF / OpenAI / Bedrock / GGUF / REST / NIM / Ollama… 20+ generators |
| 自动化 | 预留了脚本化和 CI/CD 集成路径 |
| 商业版 | 暂无,完全开源 |
| 论文支撑 | 有 arXiv 论文,但产品迭代远超论文版本 |
三、架构设计:五层模块化体系
Garak 的架构设计受 Metasploit 启发,采用 五层插件体系,每层职责清晰、可独立扩展。
3.1 Probes(探针)——攻击方法库
目前 Garak 拥有 43 个探针模块,覆盖从经典到前沿的攻击向量。按攻击类型分类如下:
| 探针类别 | 模块 | 说明 |
|---|---|---|
| 越狱攻击 | dan, goodside, grandma | DAN 系列、Riley Goodside 攻击、奶奶攻击 |
| 提示注入 | promptinject, encoding, latentinjection | 编码绕过、隐藏提示注入 |
| 数据泄露 | leakreplay, propile, sysprompt_extraction | 训练数据重放、PII 泄露检测、系统提示提取 |
| 有害内容生成 | malwaregen, xss, av_spam_scanning, exploitation | 恶意代码 / 脚本 / 漏洞利用生成 |
| 幻觉与误导 | snowball, misleading, dr, divergence | 雪球式幻觉、虚假信息支持 |
| 对抗攻击 | gcg, suffix, badchars, sata | 对抗后缀、Unicode 扰动 |
| 语义 / 内容 | continuation, lmrc, realtoxicityprompts, donotanswer | 不当延续、毒性、不应答话题 |
| Agent 安全 | agent_breaker, fitd, web_injection | Agent 框架攻击、函数注入 |
| 多模态 | visual_jailbreak, audio | 视觉越狱、音频攻击 |
| 其他 | atkgen, glitch, goat, tap, phrasing, topic, smuggling, ansiescape, apikey, fileformats, test | 自适应攻击、Glitch Token、多轮攻击、数据走私等 |
关键特性:探针有 Tier 分级(定义在 _tier.py 中),用户可以根据场景选择从浅到深的测试深度。
3.2 Detectors(检测器)——失败模式检测
31 个检测器模块,涵盖多种自动检测失败模式的路径:
- 关键词 / 模式匹配:
always,dan,continuation,knownbadsignatures - 分类器 API:
perspective(Google Perspective API) - LLM as Judge:
judge(用 LLM 评估 LLM 的输出) - 专用检测:
leakreplay,malwaregen,packagehallucination,propile - 安全防护集成:
shields,unsafe_content,mitigation - 多模态:
visual_jailbreak,encoding,ansiescape
3.3 Generators(生成器)——模型连接层
25 个生成器模块,连接不同类型的 LLM:
| 类别 | 支持的模型后端 |
|---|---|
| 云端 API | OpenAI、Cohere、Groq、Mistral、Replicate、AWS Bedrock、Watsonx |
| 本地 / 开源 | Hugging Face(本地 Pipeline + Inference API)、GGML / GGUF(llama.cpp)、Ollama |
| 企业 / 自部署 | NVIDIA NIM、NVCF、REST API、LangChain Serve、WebSocket |
| 框架集成 | LiteLLM、LangChain、Guardrails、Rasa |
| 测试专用 | test.Blank、test.Repeat |
3.4 Evaluators(评估器)& Harnesses(调度框架)
- probewise(默认调度器):逐探针执行
- 报告输出为 JSONL 格式,含完整 prompt / response / score 映射
- 支持
garak.analyze.qual_review进行定性审查
3.5 关键创新特性
- ProPILE 探针(v0.15.1 新增):PII 泄露检测,行业首创的开源 PII 泄露自动化测试工具
- ATKGEN:自适应攻击生成——用一个 LLM 实时攻击另一个 LLM
- Agent Breaker:专门针对 Agent 框架的攻击探针
- Multi-turn 攻击:通过
suffi、tap等支持多轮对话攻击 - GGUF 支持:可直接扫描本地 llama.cpp 模型
simonw/llm支持(v0.15.1):支持 Simon Willison 的 LLM CLI 工具集成
四、快速上手指南
4.1 安装
# 通过 PyPI 安装
pip install -U garak
# 或从源码安装最新开发版
pip install -U git+https://github.com/NVIDIA/garak.git@main
4.2 基本使用
# 列出所有可用的探针
garak --list_probes
# 扫描一个 Hugging Face 开源模型
garak --target_type huggingface --target_name gpt2
# 扫描 OpenAI 模型(需配置 API Key)
export OPENAI_API_KEY="sk-..."
garak --target_type openai --target_name gpt-4o-mini
# 指定特定探针(例如只跑 DAN 越狱测试)
garak --target_type openai --target_name gpt-4o-mini --probes dan
# 扫描本地 GGUF 模型
garak --target_type ggml --target_name /path/to/model.gguf
# 生成 HTML 报告
garak --report_html output.html
4.3 输出说明
Garak 的扫描输出分为几个部分:
- 控制台输出:实时进度条 + 每个检测器的 FAIL / PASS 状态
- JSONL 报告:每轮尝试的完整日志(prompt → response → score 的完整映射)
- Hit 日志:只记录触发了漏洞的尝试(方便快速定位问题)
- garak.log:调试日志
- 分析脚本:
garak/analyse/analyse_log.py分析发现最多的探针和触发模式
五、竞品对比
5.1 主要竞品一览
| 维度 | Garak(NVIDIA) | PyRIT(Microsoft) | Giskard | Tencent AI-Infra-Guard | ART(IBM) |
|---|---|---|---|---|---|
| Stars | ~8,052★ | ~1,500-2,000★ | ~5,420★ | ~3,854★ | ~4,300★ |
| 定位 | LLM 漏洞扫描器 | 生成式 AI 风险识别框架 | LLM 测试与评估框架 | 全栈 AI 红队平台 | 对抗鲁棒性评估 |
| 核心哲学 | 像 nmap 一样扫描漏洞 | 自动化红队攻击 | 全面质量评估 | 平台化生态系统 | 对抗样本鲁棒性 |
| 聚焦领域 | Security(安全) | Safety + Security | Safety + Quality | Security(Agent 安全) | Adversarial Robustness |
| 攻击库深度 | 43+ 探针模块 | 规模较大,偏攻击生成 | 偏评估,攻击较少 | 中等(偏 Agent 方向) | 经典对抗攻击 |
| 模型支持 | 20+ generators(极广) | 中等(主攻 Azure/OpenAI) | 中等(LangChain 为主) | 中等 | 偏传统 ML/DL |
| UI | CLI / TUI | CLI / Python SDK | Web UI + Python SDK | CLI + Web | Python SDK |
| 学习曲线 | 中等(类 nmap CLI) | 中等(Python API) | 较低(Web UI) | 中等 | 较高(需对抗知识) |
| 更新频率 | 高(月均 3+ 版本) | 中等 | 中等 | 活跃 | 低 |
5.2 核心差异深度分析
Garak vs PyRIT(最直接的竞品):
- PyRIT 由微软开发,更强调端到端红队自动化——自动生成攻击 → 发送 → 检测 → 迭代
- Garak 更像一个漏洞扫描器——内置大量预定义探针,系统性覆盖已知攻击向量
- 关键差异:PyRIT 更擅长”发现你不知道的新攻击路径”(通过自适应生成),Garak 更擅长”系统化验证已知攻击”(通过全面探针库)
Garak vs Giskard:
- Giskard 是个更全面的 AI 质量平台——覆盖性能、偏见、鲁棒性、安全性等多个维度
- Garak 是纯粹的红队安全工具——不做非安全的评估,把一件事做到极致
- 关键差异:Giskard 适合质量团队做全面评估,Garak 适合安全团队做定向攻击测试
Garak vs Tencent AI-Infra-Guard(3,854★):
- 腾讯的方案更偏向平台化和生态系统思维(覆盖 OpenClaw Agent),而 Garak 保持纯粹的 LLM 扫描器定位
- Garak 的优势在于 NVIDIA 背书、更成熟的插件体系、更大的社区和更活跃的更新频率
5.3 Garak 的差异化优势
- “最像漏洞扫描器”的心智模型——安全工程师无需学习新范式
- 探针数量与覆盖度——在开源领域无出其右
- NVIDIA 品牌背书——企业用户信任度高
- 模型支持广度——20+ 模型后端,实际上的”LLM 通用扫描器”
- 持续活跃开发——月均多次更新、持续新增探针
- 明确的安全定位——不做”大而全的 AI 评估”,聚焦安全漏洞
六、适用场景
| 场景 | 说明 |
|---|---|
| CI/CD 安全门禁 | 将 Garak 集成到模型发布流水线,每次更新前自动扫描 |
| 供应商安全评估 | 采购第三方 LLM API 前,用 Garak 统一扫描不同供应商 |
| 模型选型对比 | 在多个候选模型上运行相同探针,横向比较脆弱性 |
| 安全审计 / 合规 | 生成 JSONL 报告作为审计证据 |
| 红队演练 | 在受控环境中系统化探索模型脆弱性边界 |
| 企业内部安全测试 | 在部署自建模型前做安全自检 |
| 学术研究 | 测试新的攻击方法、对比不同防御措施效果 |
| 模型版本回归测试 | 模型更新后快速检查新版本是否引入了新的脆弱点 |
七、社区与生态
| 指标 | 数据 |
|---|---|
| 贡献者总数 | 98 人 |
| 核心维护者 | leondz(Leon Derczynski, NVIDIA)、jmartin-tech(Jeffrey Martin) |
| 发布频率 | ~每月 3-5 个版本 |
| Open Issues | 330(含 feature requests + 新插件提议) |
| 社区渠道 | Discord(活跃)、Twitter @garak_llm |
| 学术影响力 | arXiv 论文引用,DEF CON 演讲 |
| 三平台 CI | Linux / Windows / macOS 全平台自动测试 |
社区持续活跃,核心维护团队以 NVIDIA 研究员为主,同时有大量外部贡献者。最新版本 v0.15.1(2026-06-05)合并了 10+ 个 PR,涵盖新探针、新生成器和多项改进。
八、总结
Garak 是当前开源领域最成熟、最活跃、覆盖最广的 LLM 安全漏洞扫描工具。它的优势不在于技术深度(如某些对抗攻击专门工具),而在于产品定位的清晰和工程化的成熟度。
| 维度 | 评分 | 说明 |
|---|---|---|
| 产品定位 | ⭐⭐⭐⭐⭐ | “LLM 的 nmap” 这个定位极其精准 |
| 功能完整度 | ⭐⭐⭐⭐⭐ | 43+ 探针、25+ 模型后端、31+ 检测器 |
| 社区活跃度 | ⭐⭐⭐⭐⭐ | 98 贡献者、月均多版本、Discord 活跃 |
| 文档质量 | ⭐⭐⭐⭐ | 有正式文档站 + 论文 + FAQ |
| 易用性 | ⭐⭐⭐ | CLI 方式对非安全背景用户有门槛 |
| NVIDIA 背书 | ⭐⭐⭐⭐⭐ | 企业用户信任度极高 |
| 技术前瞻性 | ⭐⭐⭐⭐ | 已覆盖 Agent 攻击、多模态、PII 泄露等前沿主题 |
适用判断:如果团队需要一个在生产环境中可使用的、覆盖全面的开源 LLM 安全扫描工具,Garak 是当前最佳选择。如果需求是”模型全面质量评估”(包括性能、偏见、安全性),应配合 Giskard 使用。如果需求是”深度自适应攻击生成”,应考虑 PyRIT。
参考资料
- NVIDIA/garak GitHub 仓库
- Garak 官方文档
- arXiv 论文:garak: A Framework for Security Probing Large Language Models
- Garak - ReadTheDocs
- PyRIT - Microsoft 生成式 AI 红队框架
- Giskard - AI 质量评估平台
- Tencent AI-Infra-Guard - 腾讯 AI 红队平台
- msoedov/agentic_security - LLM 漏洞扫描器
文档信息
- 本文作者:zhupite
- 本文链接:https://zhupite.com/ai/garak.html
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)