NVIDIA/garak
the LLM vulnerability scanner
garak – LLM 漏洞扫描器
是什么 – garak 是一个用于对大型语言模型(LLM)进行红队风格测试的开源命令行工具包。它运行大量“探测器”,尝试让模型产生幻觉、泄露数据、服从恶意提示、生成有毒或非法内容等,并使用内置的“检测器”判断模型是否失败。可以将其视为 LLM 版的 nmap/Metasploit。
为何重要 – 随着 LLM 被部署到产品中,开发者需要了解模型在对抗性提示下的行为。garak 自动化了这一发现过程,帮助团队在真实攻击发生前识别出安全相关的弱点。
支持的模型 – 任何可通过以下方式访问的生成式模型:
- Hugging Face Hub(本地流水线或推理 API)
- OpenAI、Azure OpenAI、Cohere、Groq、Replicate、AWS Bedrock、NVIDIA NIM 等
- 本地 GGUF/llama.cpp 二进制文件
- 任意 REST 端点(通过一个小型 YAML 配置文件)
安装方法
# 从 PyPI 安装稳定版
python -m pip install -U garak
# 或安装最新 GitHub 版本
python -m pip install -U git+https://github.com/NVIDIA/garak.git@main
开发建议使用 Conda 环境(Python 3.11–3.13)。
运行扫描 – 基本命令如下:
python -m garak --target_type <generator> --target_name <model>
--target_type指定 garak 使用的插件(例如huggingface、openai、bedrock)。--target_name是模型标识符(例如gpt2、meta/llama-3.1-8b-instruct)。- 默认运行所有内置探测器;可通过
--spec probes.<family>或具体探测器(如--spec probes.dan.Dan_11_0)缩小范围。 - 结果以每探测器的 PASS/FAIL 表格形式输出,并将详细 JSONL 报告保存到文件以供后续分析。
示例 – 测试 OpenAI 的 gpt-5-nano 是否存在基于编码的提示注入:
export OPENAI_API_KEY=sk-…
python -m garak --target_type openai --target_name gpt-5-nano --spec probes.encoding
示例 – 对 Hugging Face 的 gpt2 模型运行经典的“DAN”越狱攻击:
python -m garak --target_type huggingface --target_name gpt2 --spec probes.dan.Dan_11_0
探测器目录(部分)
| 探测器 | 目标 |
|---|---|
blank |
发送空提示 – 基线测试 |
atkgen |
自动生成有毒输出(使用微调过的 GPT-2) |
badchars |
Unicode 扰动攻击(不可见字符、同形字符) |
dan |
各种“现在就做任何事”越狱提示 |
encoding |
通过 MIME/quoted-printable 编码实现提示注入 |
leakreplay |
检查模型是否复现训练数据 |
malwaregen |
尝试让模型输出恶意代码 |
promptinject |
实现 Agency Enterprise PromptInject 框架(NeurIPS 2022 奖项) |
snowball |
强制模型陷入“雪球式幻觉”循环 |
xss |
检测可能用于跨站脚本或数据外泄的响应 |
输出与日志
garak.log– 跨运行的连续调试日志。- 每次运行的 JSONL 文件 – 每次生成及其评估结果均被记录。
- 命中日志 – 仅记录触发检测器的尝试。
- 一个小的辅助脚本(
analyse/analyse_log.py)可用于汇总最频繁的命中。
扩展 garak – 该框架以插件为中心。您可以添加:
- 新的 探测器(继承自
garak.probes.base.TextProbe)。 - 新的 检测器(继承自
garak.detectors.base.Detector)。 - 用于自定义 API 或本地模型的新 生成器。 仓库包含编写和测试插件的快速入门指南。
文档与社区
- 完整用户指南: https://docs.garak.ai/
- API 参考: https://reference.garak.ai/
- Discord 聊天、Twitter @garak_llm,以及 DEF CON 演讲幻灯片均在 README 中链接。
- 项目采用 Apache-2.0 许可证,已发布于 PyPI。
何时使用 – 如果您正在构建或部署基于 LLM 的服务,并需要一种自动化方式来发现提示注入、幻觉、数据泄露或恶意输出风险,garak 将为您提供现成的攻击组合和系统化的报告格式。
相关
- 项目
- 项目
- 项目
- 项目
- 项目