garak:NVIDIA 开源的 LLM 漏洞扫描器,一条命令体检大模型安全
📖 简介
📝 详细介绍
问题所在
LLM 上线后最尴尬的场景:你自认为对齐做得不错,但用户用一种咒语就让机器人讲出了不该讲的话——或者更糟,泄露了系统提示词里的密钥。NVIDIA 的 garak 就是针对这个问题的体检工具:一条命令,跑完一组探测(probe),把 Prompt 注入、越狱、数据泄露等漏洞量化给你看。
仓库速览
| 指标 | 数据 |
|---|---|
| Stars | 4.5k+ |
| 主要语言 | Python |
| 开源协议 | Apache License 2.0 |
| 最后活跃 | 2025 年 2 月 |
项目背景
garak 最初是 NVIDIA 内部定位为大模型"红队工具"的项目,创始成员来自其 AI 安全研究团队。他们的出发点很实际——当时各类 LLM 安全评测散落在脚本和 Jupyter Notebook 里,没有统一调度、没有标准化输出,更没有可持续维护的检测集。garak 把这些测试整理成框架,让开发者和安全工程师在 CI/CD 或模型上线前快速执行一轮可复现的扫描。
garak 解决的核心痛点不是"找到某个漏洞",而是把"找漏洞"这件事变成工程化、标准化、可持续迭代的流程。
核心功能解析
结构化探测(Probe)体系
garak 把安全测试拆成独立探测插件,每个插件针对一种特定漏洞,例如 promptinject、dan、malwaregen、dataisland 等。探测由一组按照攻击模板生成的用例构成,全部模型对话在扫描结束后统一汇总为 JSONL/HTML 报告。
# 探针列表
garak --list_probes
# 按标签跑一组检测
garak --model_type huggingface --model_name Qwen/Qwen2.5-7B-Instruct --probe_tags prompt_injection
项目提供了清晰的中毒(payloads)与向量生成逻辑,就算你只需要检查某一条安全规则,也能精准拿到报告而非一摞日志。
多后端生成接口
这类扫描器最怕的坑是没有真实模型接入层。garak 内置多种 generator 后端:OpenAI、Hugging Face、Ollama、Replicate,甚至自托管 vLLM 服务。你可以在本地模型上先跑一轮,再对云端模型复跑同一批探测,保证评估纬度一致。
# 用 ollama 本地模型扫描
garak --model_type ollama --model_name llama3 --probe_tags toxicity
# 自托管 vLLM 接入方式
garak --model_type http --model_name http://localhost:8000/v1/chat/completions
固定种子与可复现报告
安全评测如果把把随机性带入结果就会丧失信任。garak 在同一探测集上支持确定性随机器设置,让复测结果具备可对比性。它还按 report_type 导出 JS(可交互报告)、HTML 或纯文本。
快速上手
pip install garak
# 对 Hugging Face 模型做一次全量默认探测
garak --model_type huggingface --model_name meta-llama/Llama-3.1-8B-Instruct
# 输出 JSONL 报告供后端分析
garak --model_type huggingface --model_name meta-llama/Llama-3.1-8B-Instruct --report_type jsonl
等几分钟就能在终端看到总览,含成功率、攻击类型、样例,完成后自动聚合 score。
技术亮点:把扫描器做成一门 DSL
深入源码你会发现 garak 的架构价值不在"探测用例多",而在对攻击原语的抽象:Probe 负责行为模板的生成与拼接;Generator 只暴露最小对话接口;Evaluator 决定"什么时候算攻击成功"。三者解耦后,新增一个扫描类别只需要定义新的 Probe 并返回行为结果(yes/no/unknown),核心引擎完全无须改动。
另一个值得玩味的设计是 garak 将探测结果区分为三个层级:未能走通(model refuses)、漏洞命中、出现"思考/逃逸"痕迹——这个三元判断比简单二进制检测要诚实得多。你可以看到模型是否潜在具备安全意识但失败率不稳定,实际生产中这个区分很有价值。
安全工具必须具备可信的负数结果——即"模型没被这种攻击打穿"必须可复现。garak 的设计正在努力消除误报与偶然性。
同类对比
| 项目 | 核心定位 | 后端支持 | 漏洞类型覆盖 | 扩展成本 |
|---|---|---|---|---|
| garak | LLM 漏洞扫描器,单命令快速体检 | OpenAI / HF / Ollama / 兼容 HTTP | 注入、越狱、幻觉、数据泄露等多类 | 中低,插件化很好 |
| Microsoft PyRIT | 红队自动化全链路框架 | 多云端 API,有 Attack Orchestrator | 需要自己组合攻击策略 | 高 |
| TextAttack | NLP 模型鲁棒性评估 | Hugging Face 为主要目标 | 文本扰动能耗侧而非恶意行为注入 | 中 |
| Promptfoo | LLM 应用评测、回归测试 | OpenAI / Anthropic / 本地等 | 侧重于 prompt 输出质量和“宪法校验” | 低(专注评测矩阵) |
取舍:PyRIT 更适合有专职红队团队的深度对抗攻防,promptfoo 适合日常质量回归,而 garak 作为"上线前全科检查"的定位最为清晰——不需要大量编排逻辑,默认就能得到可解读的威胁清单。
总结
如果你维护 LLM 应用且还没一套自动化的攻击仿真流程——比如准备发布新模型或被评测方要求提供基础安全报告——garak 是切入点最低、得到结论最快的一个开源选择,建议直接让它跑起来并纳入回归流水线。
AI 项目推荐
信息安全- 标签
- #AI安全 #漏洞扫描 #LLM #红队测试 #NVIDIA
- 浏览
- 👁️ 16
- 发布日期
- 2026-09-09