首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >garak:别只测 AI 会不会回答,也要测它会不会被攻击打穿

garak:别只测 AI 会不会回答,也要测它会不会被攻击打穿

作者头像
沈宥
发布2026-06-24 15:09:42
发布2026-06-24 15:09:42
2270
举报

很多团队做 AI 应用测试时,第一反应还是功能测试:

  • 问题能不能回答
  • RAG 能不能召回
  • Prompt 改完效果有没有变好
  • Agent 工具调用是否按预期执行

这些当然重要,但上线以后还有另一类问题更危险:

  • 用户能不能绕过系统提示词
  • 模型会不会泄露敏感信息
  • RAG 会不会被 Prompt Injection 带偏
  • 输出里会不会出现有害内容、错误事实或不该出现的内部信息

这类问题不能只靠测试同学临时想几句攻击 Prompt。你需要一套能重复执行、能输出报告、能进入回归流程的 LLM 安全扫描工具。

garak 就是这个方向里值得补上的工具。它的全称是 Generative AI Red-teaming & Assessment Kit,官方定位是 LLM vulnerability scanner。它不是用来证明“模型绝对安全”,而是用一组攻击探针持续发现模型或对话系统可能失败的方式。

30 秒先看结论

如果你的团队已经在做 AI 客服、RAG 问答、Agent 工具调用、内部知识库助手,garak 可以作为上线前安全扫描补充项。

它最适合做三件事:

  • 上线前风险扫描:看模型或 AI 应用是否容易被 jailbreak、prompt injection、data leakage 等攻击打穿
  • 防护策略对比:同一组 probes 跑裸模型、系统提示词、防护 rails、输入输出审核,判断风险是否真的下降
  • 安全回归沉淀:把攻击样本、命中结果、日志报告固定下来,避免每次都靠人工经验重试

这篇文章不会把 garak 吹成万能安全平台。更准确地说,它是 LLM 安全测试里的“扫描器”:能把风险暴露出来,但最后怎么定级、怎么修复、怎么进门禁,还要结合业务场景判断。

一、为什么这不是旧式功能测试?

官方 README 对 garak 的描述很直接:它会检查 LLM 是否能以我们不希望的方式失败,并探测 hallucination、data leakage、prompt injection、misinformation、toxicity、jailbreak 等弱点。

这和普通 AI 质量评测不一样。

普通评测更关注:

  • 回答是否正确
  • 召回是否命中
  • 格式是否符合要求
  • 业务用例是否通过

garak 更关注:

  • 能不能被诱导泄露
  • 能不能被绕过约束
  • 能不能生成危险内容
  • 能不能在特殊编码、越狱语句、恶意提示下失控

下面是当前 NVIDIA/garak 仓库截图,可以看到它已经作为 NVIDIA 组织下的开源项目维护,README 也明确标注了 LLM vulnerability scanner 这个定位。

二、garak 的核心结构:generator、probe、detector、report

从测试工程角度看,garak 的链路可以拆成四段:

  • generator:被测对象,可以是 OpenAI、Hugging Face、Bedrock、LiteLLM、REST 接口等
  • probe:攻击或测试方法,例如 DAN、encoding、prompt injection、leak replay
  • detector:判断模型输出是否命中风险
  • report:记录扫描日志、命中样本和结果文件

这套结构的好处是:你不再需要每次靠人工临时写攻击句子,而是可以把同一组 probes 固定下来,对同一个系统重复跑。

三、安装和最小运行方式

官方 README 给出的标准安装方式是:

代码语言:javascript
复制
python -m pip install -U garak

如果要安装 GitHub main 分支的更新版本:

代码语言:javascript
复制
python -m pip install -U git+https://github.com/NVIDIA/garak.git@main

先查看可用 probes:

代码语言:javascript
复制
garak --list_probes

扫描 OpenAI 模型的 encoding 类攻击,官方 README 示例是:

代码语言:javascript
复制
export OPENAI_API_KEY="你的真实 key"
python3 -m garak --target_type openai --target_name gpt-5-nano --probes encoding

扫描 Hugging Face 上的 GPT-2 是否容易被 DAN 11.0 影响:

代码语言:javascript
复制
python3 -m garak --target_type huggingface --target_name gpt2 --probes dan.Dan_11_0

注意:真实团队试点时,不建议直接对生产环境乱跑红队 payload。先用测试环境、脱敏样本、低权限 Key,把扫描流程和报告解析跑通。

四、最实用的方式:做“防护前后对比”

不要一上来就问“这个 AI 应用安全吗”。这个问题太大,也很容易变成空泛讨论。

更可执行的问题是:

  • 裸模型扫描结果如何
  • 加系统提示词后是否改善
  • 加输入过滤后是否改善
  • 加输出审核后是否改善
  • 加完整 Guardrails 后是否改善

NVIDIA NeMo Guardrails 文档里就用 garak 对不同防护配置做过扫描对比,例如 bare_llm、general instructions、dialog rails、moderation rails 等配置。这个思路很适合测试团队复用:同一个系统,同一组 probes,只改防护策略,看风险是否下降。

对测开来说,关键不是“报告截图好不好看”,而是把结果转成可比较数据:

  • 本次命中了哪些 probes
  • 哪些风险类别上升
  • 哪些风险类别下降
  • 是否出现新增高风险样本
  • 哪些结果需要人工复核

五、社区接入信号:为什么它值得进入工具箱?

除了官方 README 和 NVIDIA 文档,garak 也开始出现在安全工具链集成讨论里。

例如 DefectDojo 社区有一个 issue 提议新增 garak parser,把 garak 的 JSONL 扫描结果映射成 DefectDojo Findings。这个信号说明:garak 不只是“本地跑一下看结果”,它的输出也有机会进入更标准的漏洞管理流程。

注意这里不要过度解读。一个 issue 不能代表行业普遍采用,但它能说明 garak 的报告格式已经被安全平台集成场景关注。

六、它和 Promptfoo、PyRIT、Giskard 怎么区分?

这些工具经常被放在一起说,但测试团队选型时可以简单一点:

工具

更适合的方向

测试团队视角

garak

LLM 漏洞扫描、红队探针、风险发现

更像安全扫描器

Promptfoo

Prompt / 模型 / RAG 回归评测

更像 AI 应用测试框架

PyRIT

红队自动化和攻击编排

更偏安全团队和红队流程

Giskard

AI 模型质量与风险测试

更偏完整 AI 测试平台

更现实的组合是:

  • Promptfoo 跑业务用例和 Prompt 回归
  • garak 跑 LLM 安全漏洞扫描
  • Langfuse 记录线上 trace 和异常样本
  • Guardrails / NeMo Guardrails 做防护策略验证

也就是说,garak 不替代已有测试框架,它补的是“安全扫描”这一层。

七、使用 garak 的 5 个注意事项

  1. 扫描结果不是最终安全结论

garak 能发现风险,但不能证明系统安全。没有命中不代表没有漏洞。

  1. detector 也可能不稳定

LLM 红队扫描里,判断攻击是否成功本身也有不确定性。高风险结果建议二次验证。

  1. 不要盲目全量跑

全量 probes 成本和噪声都可能很高。先按业务风险选 probes,再逐步扩展。

  1. 不要在生产环境乱测

红队 payload 可能触发敏感输出、日志污染或外部调用。先隔离环境,再扩大范围。

  1. 要把结果转成可行动项

仅仅知道“某类攻击命中”不够,还要能追到防护策略、业务接口、Prompt 模板或工具权限。

八、一个 1 周试点方案

建议测试团队这样落地:

第 1 天:确定被测对象

选一个低风险 AI 应用,比如内部知识库问答或测试环境客服机器人。

第 2 天:跑最小 probes

先只跑 3 类:

  • encoding
  • dan
  • prompt injection

第 3 天:生成基线报告

把裸模型或当前版本作为 baseline,记录命中风险和样本。

第 4 天:加防护后复扫

增加系统提示词、输入过滤、输出审核或 Guardrails,再跑同一组 probes。

第 5 天:沉淀发布前检查

把结果分成三类:

  • 可接受风险
  • 需要人工复核
  • 发布阻断项

九、总结

garak 不是“让 AI 更聪明”的工具,它解决的是另一个问题:

AI 应用上线前,能不能用结构化方式发现安全薄弱点。

对测试团队来说,它的价值不在一次扫描报告,而在于把 LLM 安全测试变成可重复的工程动作:

  • 同一组 probes 可以反复跑
  • 不同防护策略可以横向比较
  • 风险结果可以进入回归和门禁
  • 安全测试不再完全依赖人工经验

如果你们已经在做 RAG、Agent、AI 客服或内部知识库助手,garak 值得作为安全扫描补充项进入测试工具箱。

参考资料:

  • NVIDIA/garak GitHub:https://github.com/NVIDIA/garak
  • garak 官网:https://garak.ai/
  • garak Reference Docs:https://reference.garak.ai/
  • NVIDIA NeMo Guardrails LLM Vulnerability Scanning:https://docs.nvidia.com/nemo/guardrails/evaluation/llm-vulnerability-scanning
  • DefectDojo garak parser issue:https://github.com/DefectDojo/django-DefectDojo/issues/14878
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 质量工程与测开技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 30 秒先看结论
  • 一、为什么这不是旧式功能测试?
  • 二、garak 的核心结构:generator、probe、detector、report
  • 三、安装和最小运行方式
  • 四、最实用的方式:做“防护前后对比”
  • 五、社区接入信号:为什么它值得进入工具箱?
  • 六、它和 Promptfoo、PyRIT、Giskard 怎么区分?
  • 七、使用 garak 的 5 个注意事项
  • 八、一个 1 周试点方案
    • 第 1 天:确定被测对象
    • 第 2 天:跑最小 probes
    • 第 3 天:生成基线报告
    • 第 4 天:加防护后复扫
    • 第 5 天:沉淀发布前检查
  • 九、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档