stevenmcdermott-sys/mini-garak-owasp
GitHub: stevenmcdermott-sys/mini-garak-owasp
一个基于 OWASP LLM Top 10 2025 的红队教学实验,通过手写探针与 DeepTeam 框架的对比分析,揭示 LLM 安全检测工具的方法论差异与覆盖缺口。
Stars: 0 | Forks: 0
# mini-garak-owasp
**一个 OWASP LLM Top 10 2025 红队教学实验:手写的探针框架、真正的 DeepTeam 框架,以及揭示两者差异的对比分析。**
本仓库是 mini-garak 教学系列的后半部分。
第 1–3 课(原始的 `mini-garak`)从零开始构建了一个 LLM 扫描器,以展示 garak 在底层是如何工作的。本系列的第 4–6 课将这一理念延伸至一个生产级框架和方法论对比。
所有内容均针对一个手写的**模拟**脆弱 LLM 进行攻击。这里没有真正的漏洞利用、没有能在生产模型上生效的越狱方法,也没有真正的机密信息。"密码"是 `hunter2`。
**注意事项 — 已在 1.0.6 版本上验证。离线课程不存在此类暴露风险 — 它们仅使用标准库,具有良好的长期稳定性。**
## 课程进度
| 课程 | 文件 | 教学内容 |
| --- | --- | --- |
| 4 | `mini_garak_owasp.py` | 将你自己的探针映射到 OWASP LLM Top 10(2025);构建一个诚实的覆盖矩阵,区分*已覆盖*、*缺口*和*无法以此方式测试*。 |
| 5 | `deepteam_owasp.py` | 使用真正的 [DeepTeam](https://github.com/confident-ai/deepteam) 框架驱动相同的评估。你的模拟模型成为被测系统;DeepTeam 提供攻击、模拟 LLM 和 LLM 评判器。 |
| 6 | `diff_harnesses.py` | 在相同目标上运行两个框架,将每一次分歧归类为*方法论缺口*或*检测器分裂* — 然后输出对话记录,以便人工解决分歧并记录真实基准。 |
第 6 课的核心是回答"我应该信任哪种方法论?"这个问题的诚实答案:**都不要盲目信任。** 存在分歧的行正是需要人工处理的地方。
## 快速开始(离线,无需 API 密钥)
```
python3 mini_garak_owasp.py # Lesson 4: coverage matrix
python3 deepteam_owasp.py --selftest # Lesson 5: plumbing check
python3 diff_harnesses.py --deepteam-mock # Lesson 6: diff logic
python3 diff_harnesses.py --deepteam-mock --transcripts # + evidence dump
```
需要 Python 3.10+(使用了 `str | None` 联合类型)。第 4 课和离线/模拟 diff **零依赖**。只有运行真实的 DeepTeam 时才需要 `deepteam` 包。
## 真实运行 DeepTeam
DeepTeam 需要自身具备能力的 LLM 来承担两个你的手写框架所没有的角色:一个编写对抗性提示的*模拟器*和一个对响应进行评分的*评判器*。选择一个后端,然后保存并对比:
```
pip install -r requirements.txt
export ANTHROPIC_API_KEY=... # or OPENAI_API_KEY for --backend openai
# 1. 昂贵,一次性——捕获结果和每个案例的转录记录:
python3 deepteam_owasp.py --backend claude --only LLM_06 LLM_07 --save dt.json
# 2. 免费,可重复——对拆分行的证据进行差异分析和转储:
python3 diff_harnesses.py --deepteam-json dt.json --transcripts
```
后端选项:`claude`(deepeval `AnthropicModel`)、`openai`(`gpt-4o-mini`)、`ollama`(完全本地化;评判器较弱,适合测试机制,不适合信任评分数据)。
## 方法论说明
两个框架在 **LLM03 供应链**和 **LLM04 数据与模型投毒**上存在合理分歧。mini-garak 将它们标记为*超出范围* — 提示框架无法检测被投毒的依赖项或含有后门的"休眠"模型。而 DeepTeam 则测试它们的*行为代理指标*。两者都没有错;它们回答的是不同的问题。diff 将此标记为*方法论缺口*(预期之内),而非*检测器分裂*(正则表达式和 LLM 评判器对同一条响应得出相反结论 — 这些行才真正需要人工介入)。
## 仓库结构
```
mini-garak-owasp/
├── README.md
├── LICENSE (MIT)
├── .gitignore
├── requirements.txt (deepteam — only for the live Lesson 5/6 run)
├── mini_garak_owasp.py Lesson 4
├── deepteam_owasp.py Lesson 5
└── diff_harnesses.py Lesson 6
```
## 与真实工具的映射
| 本仓库 | 生产级等价物 |
| --- | --- |
| `mini_garak_owasp.py` 探针/检测器 | [garak](https://github.com/NVIDIA/garak) |
| `deepteam_owasp.py` | [DeepTeam](https://github.com/confident-ai/deepteam) `OWASPTop10()` |
| OWASP LLM Top 10(2025) | [genai.owasp.org](https://genai.owasp.org/llm-top-10/) |
## 教学范围与安全性
本仓库中的每个脚本都攻击一个手写的 `FakeVulnerableLLM`,该模型被刻意设计为具有特定的、有文档记录的弱点,以固定概率触发。这里没有可用的漏洞利用。这些材料用于理解 LLM 红队工具的架构以及不同检测方法之间的分歧。对于真实的评估,请使用 [garak](https://github.com/NVIDIA/garak) 或 [DeepTeam](https://github.com/confident-ai/deepteam),并遵循你所在组织的授权测试政策。
## 许可证
MIT — 详见 `LICENSE`。
标签:AI安全, AI风险缓解, Chat Copilot, CISA项目, DeepTeam, garak, LLM裁判, OWASP LLM Top 10, Python, 云安全监控, 反取证, 安全评估, 对抗攻击, 差分分析, 提示注入, 攻击技术, 敏感信息检测, 教学实验室, 数据泄露防护, 方法论差距分析, 无后门, 模型仿真, 模型扫描器, 测试框架, 渗透测试框架, 漏洞模型, 红队测试与评估, 网络探测, 自动生成攻击, 虚拟LLM, 覆盖矩阵, 防御, 集群管理, 静态分析