0xalexhex/redjudge
GitHub: 0xalexhex/redjudge
RedJudge 是一个开源的 LLM 红队自动化测试套件,通过多维度攻击向量与多裁判交叉评分系统,对大语言模型的安全鲁棒性进行 CI 式的量化评估。
Stars: 2 | Forks: 0
# RedJudge - 自动化 LLM 红队 / 鲁棒性测试套件
**v0.2.0** · [快速入门.md](QUICKSTART.md) · [分析报告.md](WRITEUP.md) (发现) · [更新日志.md](CHANGELOG.md) · [发现列表.md](FINDINGS.md)
一个 CI 风格的 LLM 鲁棒性评估测试套件。
可插拔的 **Behaviors × Attacks × Targets × Judge -> Scorecard**,基于 HarmBench 的解耦模式构建。
支持测试本地开放权重模型、API 以及(受限的)Web 聊天 UI。
## 快速开始
详细版本:[快速入门.md](QUICKSTART.md)。简而言之,targets 和 judges 是 `provider:model`
快捷方式(无需 JSON):
```
cd redjudge
# 离线 smoke test(无 creds,无 network):
python3 run.py --target dryrun --smoke
# 将 standard benchmarks 拉取到 ./data(已 gitignored,未 bundled):
python3 scripts/get_datasets.py
# 在本地 model 上进行真实的 harmful-content benchmark,由 validated judges 评分:
python3 run.py --benchmark strongreject_small --limit 15 \
--target ollama:llama3.1:8b --guard ollama:llama-guard3:8b --judge ollama:llama3.1:8b
# 通过 OpenRouter 使用 API models(一个 key 通用于所有;judges 保持在本地,因此只需为 answers 付费):
python3 run.py --benchmark strongreject_small --limit 15 --budget 2.0 \
--target openrouter:openai/gpt-5.5 --target openrouter:anthropic/claude-sonnet-5 \
--guard ollama:llama-guard3:8b --judge ollama:llama3.1:8b
# 自带数据集(自动检测 goal/behavior/Goal/forbidden_prompt 列):
python3 run.py --benchmark path/to/your.csv --target ollama:llama3.1:8b --guard ollama:llama-guard3:8b
# 更重度的自动化 jailbreaks(opt-in - query-heavy)。TAP 需要一个单独的 attacker model:
python3 run.py --benchmark strongreject_small --limit 15 --attacks tap bon \
--target ollama:llama3.1:8b --attacker ollama:llama3.1:8b \
--guard ollama:llama-guard3:8b --judge ollama:llama3.1:8b
```
输出内容:`results//scorecard.md`(包含有害 ASR + 平均 StrongREJECT 分数 + Llama Guard 风险类别 + 拒绝过度对照组)以及 `results.jsonl`(完整的对话记录)。如果不使用 `--guard`,scorecard 将被
标记为 UNCALIBRATED(未经校准,这只是一个启发式数值,而非具备说服力的 ASR)。多次传递 `--target` 参数即可生成
对比排行榜。高级用户依然可以使用完整的 JSON 配置(`--target-spec`)。
## 数据集(按需获取,不提交到仓库)
`scripts/get_datasets.py` 会将标准的学术基准测试拉取到被 gitignore 忽略的 `data/` 目录中:
`advbench` · `jbb_harmful` / `jbb_benign` · `strongreject` / `strongreject_small` · `xstest`。本仓库
**不包含**任何实际的有害内容——这些是 HarmBench/JBB 使用的相同应当拒绝的行为集,旨在*衡量鲁棒性*,且已获得明确许可。可参考 `--benchmark ` 或指定路径。
## 攻击套件 - injection · agentic · multimodal
除了单轮 jailbreak 之外,三个内置套件涵盖了现代高影响力的攻击类别。所有攻击均通过 **obedience-aware** judge 使用无害标记(无有害内容)进行衡量,因此仅引用注入指令的模型不会被错误地计为被攻破。
```
# Indirect prompt injection(6 个 carriers x 4 种 techniques)+ 一个 Spotlighting DEFENSE-LIFT 数字:
python3 run.py --suite injection --target ollama:llama3.1:8b
# Agentic tool-abuse:基于 MOCK sandboxed tools 的 ReAct agent;injection 植入于 tool output 中。
# agent 是否会 exfiltrate / pay / delete?(确定性的 task_done judge;包含一个干净的 control)
python3 run.py --suite agentic --target ollama:llama3.1:8b
# Multimodal:指令被渲染为 TEXT IN AN IMAGE,发送给 vision model:
python3 run.py --suite multimodal --target vision:llama3.2-vision:11b
```
## 已实现的功能
- **Attacks** (`redteam/attacks.py`):`direct`(对照组)、`encoding`(base64/rot13/leet 混淆)、
`manyshot`(Anthropic 多重示例,无害样本)、`multiturn`(Crescendo 式的逐步升级)、
`pair`(攻击者 LLM 迭代优化)、`tap`(Tree of Attacks with Pruning - PAIR 推广至
剪枝 beam search,Mehrotra 等人 2024)、`bon`(Best-of-N - 抽样 N 个输入增强并
保留任何能攻破模型的样本,Hughes 等人 2024)。所有这些都是针对所提供行为进行操作的*机制*。
`tap`/`bon` 属于查询密集型(树搜索 / N 次采样),因此它们被设为 opt-in,通过 `--attacks tap`/
`--attacks bon` 开启,而不包含在默认设置中。
- **Targets** (`redteam/targets.py`):`dryrun` mock · `openai_compat` (Ollama/vLLM/LM Studio/OpenAI/Together/Groq/OpenRouter) · `anthropic` · `webui` (受限)。
- **Judge** (`redteam/judge.py`):**经过验证的集成方案** - `llama-guard`(Meta Llama Guard 3
分类器,*权威的*有害内容 ASR) + `strongreject`(忠实的 StrongREJECT 自动评分器,
校准至 0..1 的实用性) + `canary`(确定性提取) + `refusal` 启发式交叉验证。
权威的 judge 决定最终判定;其余结果将被记录。两名 judge 加上抽查机制可确保
ASR 具备说服力,而不是像单个自研评分器那样容易产生接近 100% 的虚高数据。
- **Behaviors** (`redteam/behaviors.py`):无害冒烟测试集(canary 提取 + 拒绝过度对照)
+ `load_benchmark()` - 命名的标准基准测试 (AdvBench / JBB / StrongREJECT / XSTest) 或自定义
CSV/JSONL,自带拒绝过度控制。数据集由 `scripts/get_datasets.py` 获取。
- **Report** (`redteam/report.py`):鲁棒性评分卡 + 排行榜 + 按攻击 × target 细分的 ASR。
- **持久记忆聊天** (`chat.py`):与实时
target 进行连续的多轮对话(每轮重新发送记忆 -> 形成 Crescendo 压力),捕获 `reasoning_content` 以进行 CoT 泄露
检测。模式包括:`--send` / `--interactive` / `--auto`(自动攻击者) / `--show` / `--reset`。
DeepSeek-R1 推理泄露发现正是通过此方式复现的 - 详见 `WRITEUP.md`。
## 尚未实现(计划阶段中的下一步)
- **GCG / AutoDAN (white-box):**需要一个具有梯度访问权限的本地 HF/transformers 模型 - 添加一个
暴露 logits 的 `targets` adapter 以及 `gcg` 攻击(使用 `nanogcg`)。仅限 White-box -> 然后
将后缀**迁移**到 black-box adapter。(本地 RTX 3090 使其具备可行性。)
- **真正的 many-shot / AutoDAN-Turbo:**进一步深化 jailbreak 攻击(N=128+ 有害示例;
自我提升的策略库)。TAP (tree-of-attacks) 现已实现(`--attacks tap`)。
- **Multimodal 音频** + 由 LLM obedience-judge 评分的钓鱼 / 内容注入目标。
- **Web-UI 驱动:**将 Playwright 集成到 `WebUITarget.chat` 中(受限)。
- **标准 agentic 基准测试:**通过
`--suite agentic` 测试套件运行真正的 AgentDojo / InjecAgent / AgentHarm 数据集(循环和 judge 已存在;只需接入数据集 + tool schema)。
## 添加插件
继承协议并注册:`Target` 需要 `name` + `chat(messages)->str`;`Attack`
需要 `name` + `run(behavior, target, judge)->AttackResult`;`Judge` 需要 `grade(...)->(bool, dict)`。
## 授权 / 安全
- **本地及您自己的部署:**不受限制,包括 white-box。
- **API:**遵循各服务提供商的使用 / 红队测试政策;使用其漏洞赏金 / 红队测试计划。
- **Web UI:**除非设置 `REDTEAM_WEBUI_AUTHORIZED=1`,否则 `WebUITarget` 将抛出异常 - **仅**为您自己
托管的 UI 或经过授权 / opt-in 的竞技场设置此环境变量;对第三方聊天 UI 进行自动化测试可能违反 ToS。
请负责任地披露任何真实的测试发现。
- 评分使用标准化的基准测试行为,因此该测试套件旨在*衡量鲁棒性*,而无需您
编写新的有害内容。
标签:AI安全, AI风险缓解, Chat Copilot, DLL 劫持, LLM红队评估, Petitpotam, 大语言模型, 逆向工具, 零日漏洞检测, 鲁棒性评估