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, 大语言模型, 逆向工具, 零日漏洞检测, 鲁棒性评估