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 或本地模型的新 生成器。 仓库包含编写和测试插件的快速入门指南。

文档与社区

何时使用 – 如果您正在构建或部署基于 LLM 的服务,并需要一种自动化方式来发现提示注入、幻觉、数据泄露或恶意输出风险,garak 将为您提供现成的攻击组合和系统化的报告格式。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目