mcpField
R
red-teaming-llms-with-garak

red-teaming-llms-with-garak

github.com/mukul975安全35.2k67 次安装8 周前更新
代码仓库

关于 red-teaming-llms-with-garak

此技能介绍如何使用开源 LLM 漏洞扫描器 garak,通过对抗性探测评估模型。内容涵盖扫描、结果解读和缓解措施复测,测试对象须获得授权。

主要功能

  1. 01运行提示注入和越狱探测
  2. 02测试泄漏及不安全输出风险
  3. 03检测本地模型和 API 端点
  4. 04查看命中率和生成的报告
  5. 05缓解后比较测试结果

适用场景

  1. 01建立 LLM 安全评估基线
  2. 02验证防护规则或提示词变更
  3. 03更新后对端点进行回归测试
  4. 04为 AI 风险评估记录发现

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill red-teaming-llms-with-garak

安装后在 Claude Code 中输入/red-teaming-llms-with-garak确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
standards.md
scripts/
agent.py

详细介绍

使用 garak 对 LLM 进行红队测试

法律与授权使用声明: 本技能仅用于经授权的 AI 安全测试和教育目的。仅探测你拥有或已获得明确书面许可进行测试的模型、API 密钥和端点。对第三方 LLM API 进行自动化探测可能违反其服务条款并消耗计费 token。未经授权探测你无法控制的系统可能违法。

概述

garak(Generative AI Red-teaming and Assessment Kit)是由 NVIDIA 维护的开源大模型漏洞扫描器。它扮演的角色类似于 Nessus 等网络漏洞扫描器对主机所扮演的角色,但对象是大模型:它向目标模型发送数千条对抗性提示词(“probes”),捕获生成内容,并对响应运行自动化“detectors”以判定每次尝试是否成功。探测家族涵盖提示词注入(promptinject、latentinjection)、越狱(dan)、训练数据和系统提示词泄露(leakreplay)、恶意软件生成(malwaregen)、跨站脚本载荷生成(xss)、基于编码的绕过(encoding)、有害内容等。garak 在论文《garak: A Framework for Security Probing Large Language Models》(arXiv:2406.11036)中有详细描述,并通过 NVIDIA/garak GitHub 仓库分发。

该扫描器与生成器无关。它可以针对本地加载的 Hugging Face 模型、OpenAI 兼容 API、AWS Bedrock、Replicate、Cohere、NIM 端点、GGUF/llama.cpp 模型,以及通过 JSON 生成器规范指定的任意 REST 端点。运行后,garak 会输出一个 .report.jsonl 行分隔日志,记录每次尝试和检测器判定;一个人类可读的 .report.html;一个 garak.log 调试日志;以及一个已确认漏洞的命中日志。终端输出会打印按探测、按检测器的通过/失败摘要及命中率(例如 dan.Dan_11_0 jailbreak: FAIL ok on 38/40),这是你解读的主要产物。

本技能对应 MITRE ATLAS 技术 AML.T0051(LLM 提示词注入) 和 AML.T0054(LLM 越狱),因为 garak 将两者都付诸实践:它大规模构造提示词注入和越狱输入,并衡量目标的护栏是否守住。它通过为已部署的 AI 系统提供可重复、定量的安全/韧性测量,支持 NIST AI RMF MEASURE-2.7 子类别。

何时使用

  • 当你需要在部署前后对 LLM 进行快速、可重复的基线安全评估时。
  • 当验证护栏、系统提示词或安全微调确实降低了越狱和注入成功率时(运行前后对比并比较命中率)。
  • 当为 AI 风险评估或模型卡安全章节产出证据时(NIST AI RMF MEASURE-2.7)。
  • 当分类哪些 OWASP LLM Top 10 风险(LLM01 提示词注入、LLM02 敏感信息泄露、LLM07 系统提示词泄露)确实在你的模型中显现时。
  • 当在 CI 中对 LLM 端点进行模型或提示词变更后的回归测试时。

前提条件

  • Python 3.10+(推荐 3.12)及虚拟环境。
  • 从 PyPI 安装 garak:
    python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
    python -m pip install -U garak
    garak --version
    
  • 如需最新版本:
    python -m pip install -U git+https://github.com/NVIDIA/garak.git@main
    
  • 如果探测托管模型,需要目标的 API 密钥(例如 export OPENAI_API_KEY="sk-...")。
  • 对目标进行测试的书面授权,并了解 token 成本(探测会产生数千次调用)。

目标

  • 枚举可用的探测和检测器,并选择一个范围明确的套件。
  • 针对本地 Hugging Face 模型、OpenAI 兼容 API 和任意 REST 端点配置 garak。
  • 运行提示词注入、越狱和泄露探测家族并捕获报告。
  • 解读按探测的命中率输出和 .report.jsonl。
  • 在应用缓解措施后重新运行,以证明风险降低。
  • 为 AI 风险评估产出可辩护的发现产物。

MITRE ATT&CK 映射

本技能使用 MITRE ATLAS(ATT&CK 的对抗性机器学习配套框架)技术 ID。

ID战术官方名称相关性
AML.T0051ML 攻击准备 / 影响LLM 提示词注入garak 的 promptinject 和 latentinjection 探针会构造恶意提示词,以颠覆模型的预期行为。
AML.T0054权限提升 / 防御规避LLM 越狱garak 的 dan 及相关探针试图绕过安全护栏,使模型生成受限内容。

工作流

阶段 1:枚举探针与检测器
  1. 列出 garak 附带的所有探针,以便确定本次运行的范围:
    garak --list_probes
    
  2. 列出检测器(对探针是否成功进行评分的模块)和生成器(目标连接器):
    garak --list_detectors
    garak --list_generators
    
  3. 阅读探针分类体系。主要类别:
    • promptinject — PromptInject 框架的直接注入。
    • latentinjection — 隐藏在文档/编码文本中的指令(间接注入)。
    • dan — "Do Anything Now"及相关越狱(例如 dan.Dan_11_0)。
    • leakreplay — 诱导模型复现记忆/训练数据或隐藏提示词文本。
    • encoding — base64/ROT13 等注入绕过。
    • xss — 输出跨站脚本攻击载荷(markdown/HTML 数据外泄)。
    • malwaregen — 请求可规避杀毒软件或恶意代码。
阶段 2:探测本地 Hugging Face 模型
  1. 对本地模型运行单个越狱探针以验证设置:
    python -m garak --target_type huggingface --target_name gpt2 --probes dan.Dan_11_0
    
  2. 对聊天模型运行更完整的测试套件:
    python -m garak \
      --target_type huggingface \
      --target_name meta-llama/Llama-3.2-1B-Instruct \
      --probes promptinject,dan,leakreplay \
      --report_prefix llama32_baseline
    
阶段 3:探测 OpenAI 兼容 API
  1. 导出密钥并运行注入 + 泄露探针:
    export OPENAI_API_KEY="sk-..."
    python -m garak \
      --target_type openai \
      --target_name gpt-4o-mini \
      --probes promptinject,latentinjection,leakreplay \
      --generations 5 \
      --parallel_attempts 8 \
      --report_prefix gpt4omini_injection
    
    • --generations 控制每个提示词生成多少个补全(越多 = 统计置信度越高,成本也越高)。
    • --parallel_attempts 提高远程 API 的吞吐量。
阶段 4:探测任意 REST 端点
  1. garak 可通过 JSON 生成器规范以任意 HTTP API 为目标。创建 rest.json:
    {
      "rest": {
        "RestGenerator": {
          "name": "my-llm-gateway",
          "uri": "https://llm.internal.example/v1/chat",
          "method": "post",
          "headers": { "Authorization": "Bearer $ENV_TOKEN", "Content-Type": "application/json" },
          "req_template_json_object": { "model": "internal-bot", "prompt": "$INPUT" },
          "response_json": true,
          "response_json_field": "$.output"
        }
      }
    }
    
  2. 对其运行 garak:
    export ENV_TOKEN="..."
    python -m garak \
      --target_type rest \
      -G rest.json \
      --probes promptinject,dan \
      --report_prefix internal_gateway
    
阶段 5:运行精选配置和完整扫描
  1. 对于可重复的评估,将所有内容固定在 YAML/JSON 配置中并传入 --config:
    python -m garak --config assessment.yaml
    
    # assessment.yaml
    plugins:
      model_type: openai
      model_name: gpt-4o-mini
      probe_spec: promptinject,latentinjection,dan,leakreplay,xss,malwaregen
    run:
      generations: 5
      parallel_attempts: 8
    reporting:
      report_prefix: quarterly_llm_assessment
    
  2. 对于穷举式扫描(缓慢、昂贵),完全省略 --probes 以运行所有探针。
阶段 6:解读命中率报告
  1. 阅读终端摘要。每一行的格式为 probe.Class detector: PASS|FAIL ok on N/M。FAIL 且 ok 比例较低意味着模型频繁产生不安全行为——这是高严重性发现。
  2. 打开机器可读报告并汇总失败项:
    # Every attempt with detector verdicts is one JSON line
    jq -r 'select(.entry_type=="eval") | "\(.probe)\t\(.detector)\t\(.passed)/\(.total)"' \
      garak.<timestamp>.report.jsonl | sort
    
  3. 在浏览器中打开生成的 .report.html,查看格式化评分卡和每个探针的细分。
  4. 从命中日志中提取实际成功的攻击字符串,作为概念验证证据。
阶段 7:缓解并重新测试
  1. 应用一项控制措施(收紧系统提示词,添加输入/输出护栏(如 Llama Guard 或 LLM Guard),或更换模型)。
  2. 使用新的 --report_prefix 重新运行完全相同的探针集。
  3. 比较各次运行的命中率,以量化报告中的风险降低程度。

工具与资源

资源用途链接
NVIDIA/garak源代码、探针列表、问题https://github.com/NVIDIA/garak
garak 文档命令行参考、生成器配置https://docs.garak.ai/ 和 https://reference.garak.ai/
garak 论文(arXiv:2406.11036)方法论与设计https://arxiv.org/abs/2406.11036
OWASP Top 10 for LLM Applications探针所映射的风险分类体系https://genai.owasp.org/
MITRE ATLASAML 技术定义https://atlas.mitre.org/

探针系列参考

探针系列目标OWASP LLM 映射
promptinject直接提示词注入LLM01
latentinjection间接 / 隐藏上下文注入LLM01
dan越狱 / 护栏绕过LLM01 / safety
leakreplay训练数据与提示词泄露LLM02 / LLM07
encoding基于编码的过滤器绕过LLM01
xssMarkdown/HTML 数据外泄载荷LLM02
malwaregen恶意代码生成misuse

验证标准

  • 已安装 garak,且 garak --version 执行成功。
  • 已通过 --list_probes / --list_detectors 枚举探针和检测器。
  • 已针对目标完成至少一次探针运行,并设置了 --report_prefix。
  • 已生成并定位到 .report.jsonl、.report.html 和 garak.log。
  • 已提取每个探针的命中率,并按严重程度排序。
  • 已从命中日志中捕获成功的攻击字符串作为证据。
  • 已应用一项缓解措施,并完成对比重跑,显示命中率发生变化。
  • 已针对 OWASP LLM Top 10 和 MITRE ATLAS 记录发现结果,用于风险评估。

评论

支持 Markdown