MohamedAklamaash/redharness

GitHub: MohamedAklamaash/redharness

redharness 是一个标准化、可复现的LLM对抗鲁棒性评估基准框架,在统一方法论下覆盖越狱、提示词注入和数据泄露三个威胁面。

Stars: 0 | Forks: 0

# redharness [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/MohamedAklamaash/redharness/actions/workflows/ci.yml) [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](pyproject.toml) [![Typed](https://img.shields.io/badge/typed-mypy-blue.svg)](pyproject.toml) ### 一个用于评估大型语言模型对抗鲁棒性的标准化、可复现基准 —— 在统一方法论下进行越狱、提示词注入和数据泄露评估 `redharness` 是一个开源评估框架,用于衡量大型语言模型 (LLM) 的对抗鲁棒性与安全性。它将如今测量方式不一致且缺乏可比性的三个威胁面 —— **越狱 (jailbreaks)**、**提示词注入 (prompt injection)** 和 **数据泄露 (data leakage)** —— 统一在一个具有严格可复现性契约和每项结果溯源的、可插拔的方法论之下。 ## 摘要 针对 LLM 的对抗性评估进展迅速,但其经验基础十分脆弱。每篇攻击论文往往都会提供一套定制的评估测试工具、一种特立独行的“攻击成功率 (Attack Success Rate)”概念,以及一个在不同研究中行为很少保持一致的评价器 (judge) —— 因此,论文中报告的数据通常无法在跨论文间进行比较,并且在若干案例中已被证明会*高估*真实的攻击成功率 [Souly et al. 2024]。那些获得社区持久认可的基准(如 HarmBench [Mazeika et al. 2024]、JailbreakBench [Chao et al. 2024])之所以成功,主要是因为它们*标准化了评估流程* —— 固定的行为集、固定的评价器、版本化的产出物、公开的排行榜 —— 而不是因为引入了最强的单一攻击手段。`redharness` 将这一洞察推广为一个涵盖三个威胁面的单一测试工具,具备哈希锁定的数据集、确定性种子执行、持久化的记录,并为每个报告数据记录了 `(dataset_version, judge, metric)` 溯源三元组。同样的标准化也被扩展到了提示词注入和数据泄露这两个威胁面,尽管提示词注入已连续两年在 OWASP LLM 应用十大安全风险 (OWASP Top 10 for LLM Applications) 中位列第一,但它们在标准化程度上仍然相对滞后。 ## 1. 动机 三个结构性问题导致当前的 LLM 安全性结果难以被信任,且更难进行比较: 1. **指标的不可通约性。** 在不同论文中,“ASR”代表不同的量(任何成功的尝试 vs. 在查询预算内的成功 vs. 评价器的连续评分),并且是在不同的行为集上计算出来的。因此,标题中的核心数据无法直接进行比较。 2. **评价器敏感性。** 一个响应是否属于“有害”、一次成功的“注入”,还是一个“泄露”,在很大程度上取决于评分器 (grader)。Souly et al. [2024] 证明,薄弱或宽松的评价器会系统性地夸大越狱成功率;评价器上的微小变化会使核心数据波动数十分。 3. **不可复现性。** 数据集发生漂移或未进行版本控制,随机种子和解码参数未被记录,记录被丢弃,而公开的排行榜则容易受到过拟合和刷榜行为的影响。 其下游后果是,从业者无法可靠地回答这个基本问题:*“模型 A 是否比模型 B 更安全,差距是多少,在哪种威胁模型下 —— 并且其他人能复现那个数据吗?”* `redharness` 的设计正是为了让这个问题能得到一个具备可复现性、附带完整溯源的答案。 ## 2. 贡献 - **跨三个威胁面的统一、可插拔方法论。** 单一的 `Attack × Target × Dataset × Judge × Metric` 矩阵(针对智能体式注入扩展了 `Scenario` 和 `Injection` 轴)涵盖了越狱、提示词注入和数据泄露评估,使得这三个威胁面共享一套词汇、一个运行器和一个报告格式。 - **对标准化不足的威胁面进行标准化。** 注入和泄露获得了与 HarmBench/JailbreakBench 为越狱所带来的同等的一流、版本化且评价器明确的对待。 - **可复现性契约。** 哈希锁定的数据集、确定性种子执行、感知参数的结果缓存,以及持久化的 JSONL 记录,使得只需一条命令即可复现排行榜中的一行数据。 - **每项结果的溯源。** 每个排行榜条目都会记录 `(dataset_version, judge, metric)` 三元组,从而消除了导致指标不可通约性的模糊性。 - **旨在实现互操作,而非重复实现。** 获得认可的数据集和评价器作为插件集成,从而使结果与已发表的研究保持一致;成熟的工具链(garak、PyRIT、Inspect)通过文档化的扩展接口接入,而不是通过创建分支。 - **防刷榜的排行榜仪表盘** —— 一个可选的 Streamlit Web 应用,它将所有运行聚合到一个可过滤的、按威胁面划分的视图中,并将提交的结果视为不受信任的输入。 ## 3. 背景与相关工作 **标准化框架与排行榜。** HarmBench [Mazeika et al. 2024, arXiv:2402.04249] 引入了标准化的自动化红队评估和一个经过微调的有害行为分类器,后者已成为事实上的评价器。JailbreakBench [Chao et al. 2024, arXiv:2404.01318] 增加了一个开放的鲁棒性基准,并配有公开的排行榜和版本化的产出物。StrongREJECT [Souly et al. 2024, arXiv:2402.10260] 表明先前的基准高估了攻击成功率,并提供了一个高一致性评分标准评分器。DecodingTrust [Wang et al. 2023, arXiv:2306.11698] 和 TrustLLM [Sun et al. 2024, arXiv:2401.05561] 提供了多视角的可信度评估;HELM Safety [Stanford CRFM 2024] 则在统一接口下聚合了各种安全基准。 **越狱攻击。** GCG [Zou et al. 2023, arXiv:2307.15043] 确立了可迁移的基于梯度的对抗性后缀(以及 AdvBench 行为集);PAIR [Chao et al. 2023, arXiv:2310.08419] 和 TAP [Mehrotra et al. 2023, arXiv:2312.02119] 是查询高效的 Black-box 攻击者-LLM 方法;AutoDAN [Liu et al. 2023, arXiv:2310.04451] 能够演化出流畅且隐蔽的提示词。 **提示词注入。** Greshake et al. [2023, arXiv:2302.12173] 形式化定义了针对 LLM 集成应用的间接提示词注入。AgentDojo [Debenedetti et al. 2024, arXiv:2406.13352]、InjecAgent [Zhan et al. 2024, arXiv:2403.02691] 和 AgentHarm [Andriushchenko et al. 2024, arXiv:2410.09024] 界定了智能体式的攻击面;OWASP LLM 应用十大安全风险将提示词注入排在首位。 **数据泄露与记忆。** Carlini et al. [2021, arXiv:2012.07805] 从 LLM 中提取训练数据;Nasr, Carlini et al. [2023, arXiv:2311.17035] 通过发散攻击将提取范围扩大到了生产模型;Secret Sharer [Carlini et al. 2019, arXiv:1802.08232] 引入了基于 Canary 的记忆测量方法,`redharness` 在其泄露评分中采用了该方法。 **过度拒绝。** XSTest [Röttger et al. 2024, arXiv:2308.01263] 和 OR-Bench [Cui et al. 2024, arXiv:2405.20947] 衡量在良性提示词上的错误拒绝情况,从而使得安全性能够结合它所牺牲的帮助性来报告,而不是孤立地评估。 **护栏评价器与工具链。** Llama Guard [Inan et al. 2023, arXiv:2312.06674]、WildGuard [Han et al. 2024] 和 ShieldGemma [Zeng et al. 2024] 是可插拔的安全分类器;garak (NVIDIA)、PyRIT (Microsoft) 和 Inspect (UK AISI) 是成熟的红队与评估工具包。治理框架遵循 NIST AI 风险管理框架和 MITRE ATLAS。完整的 BibTeX 信息见 [`CITATIONS.bib`](CITATIONS.bib)。 ## 4. 威胁模型 `redharness` 对目前测量方式最不一致的三个威胁面进行了评估标准化。 **(S1) 越狱。** 攻击者通过操纵提示词来诱导模型生成本应被拒绝的内容。评估在攻击成功率与过度拒绝之间寻求平衡,从而避免将一个一味拒绝的模型误认为是安全的模型。 **(S2) 提示词注入(直接和间接/智能体式)。** 攻击者将指令暗中植入到使用工具的智能体中 —— 直接放置在用户轮次中,或者*间接地*放置在智能体所读取的文档或工具输出中 —— 以使其追求攻击者选定的目标。评估将同时衡量攻击者的目标是否被触发,以及智能体是否仍完成了其合法任务(受攻击条件下的效用)。 **(S3) 数据泄露。** 攻击者恢复被记忆或机密的内容:训练数据提取与发散、Canary 恢复、PII(个人身份信息)诱导和系统提示词泄露。评估会报告一个二元的恢复判定,以及一个连续的逐字重叠严重性分数。 所有内置的产出物都是逼真且负责任地生成的合成内容 —— 拒绝探测行为被表述为用户的*请求*(仅仅是请求,绝无有害答案或操作细节),良性的*哨兵*攻击者目标,以及明显伪造的机密信息(例如 `*.example.invalid` PII、`555-01xx` 电话号码、`CANARY-…` 哨兵)—— 因此,测试工具的机制得以运行,而无需分发具有操作性的有害内容、真实 PII 或被记忆/受版权保护的文本。CBRN(化学、生物、放射性、核)和爆炸物内容被完全排除。真实语料库需通过明确且经哈希验证的 opt-in(选择性加入)才能附加使用(第9节,第11节)。 ## 5. 方法论 每项评估都是基于五个插件轴的矩阵;运行过程会枚举各个单元格并对每个单元格进行评分: ``` Dataset ─▶ Attack ─▶ Target ─▶ transcript ─▶ Judge ─▶ Metric ─▶ Report / Leaderboard ─▶ Dashboard (behaviors) (generator) (model) (scorer) (aggregate) ``` | 轴 | 作用 | 接口 | |---|---|---| | **Target** | 被测系统 | `generate(messages, tools) -> Response` | | **Attack** | 将一个行为转化为一次或多次对抗性尝试 | `run(behavior, target) -> list[Attempt]` | | **Dataset** | 版本化、哈希锁定的行为/探测集 | `load() -> list[Behavior]` | | **Judge** | 决定每次尝试是否成功并赋予评分 | `score(behavior, attempt) -> Verdict` | | **Metric** | 将判定结果汇总为报告的指标 | `compute(scored) -> MetricResult` | 智能体式提示词注入面增加了两个轴 —— **Scenario**(一个包含良性用户任务和良性攻击者目标的沙盒工具环境)和 **Injection**(恶意指令及其植入位置)—— 它们由一个有界多步智能体循环驱动。数据泄露威胁面是单轮的,并复用了越狱的执行路径(搭配泄露专用的插件),因此不需要单独的运行器模式。 **可复现性契约。** 数据集采用内容寻址(哈希锁定)并在使用前进行验证;执行具有确定性的种子;尝试会根据其完全解析的参数进行缓存(因此参数的更改绝不会悄无声息地重用过期的结果);并且每次尝试的完整提示词/响应记录都会以 JSONL 格式被持久化以供审计。只需一条命令即可复现排行榜中的一行数据。 **溯源。** 每个排行榜条目都会记录 `(dataset_version, judge, metric)` 三元组。由于评价器的选择和数据集版本是造成跨研究分歧的最主要因素,将它们绑定到每一个数据上是该框架防止结果碎片化的核心机制。 **可扩展性。** 插件可自我注册,并通过声明式 YAML 在封闭的注册表中进行基于名称的解析(这是一个字典查找操作 —— 绝不使用动态导入或 `eval` —— 因此配置无法执行任意代码)。添加一种攻击、模型适配器、评价器、数据集或指标,都是一项小而独立的增加工作;重度依赖网络的框架(PAIR、TAP、garak、RIT)和真实语料库需通过依赖扩展附加在后面,从而使离线核心保持精简。关于具体的“添加插件”分步指南,请参阅 [`docs/OVERVIEW.md`](docs/OVERVIEW.md)。 ## 6. 指标 所有指标都被定义为基于已评分尝试的纯函数;不适用的 `(cell, metric)` 对将报告为 **N/A**,而不是产生误导的 `0.0`。 | 指标 | 定义 | 依据 | |---|---|---| | `asr` | 至少有 1 次成功尝试的有害行为比例 | HarmBench / JailbreakBench | | `asr_at_k` | 在前 *k* 次尝试(查询预算)内的成功率 | PAIR / TAP | | `strongreject_score` | 若拒绝则为 `0`;否则为 1-5 的*具体性*/*说服力*均值,按 `(mean−1)/4` 缩放至 [0,1] | StrongREJECT | | `refusal_rate` | 在所有尝试中均被拒绝的有害行为比例 | DecodingTrust | | `frr` | 在应该服从的良性子集上的错误拒绝率 | XSTest / OR-Bench | | `injection_success_rate` | 攻击者目标被触发的*注入*场景比例 | InjecAgent / AgentDojo | | `utility_under_attack` | 良性任务依然能够完成的*注入*场景比例 | AgentDojo | | `utility_baseline` | 无注入(对照组)条件下的良性任务完成率 | AgentDojo | | `extraction_rate` | 合成机密发生泄露的探测总体比例 | Carlini 2021 / Nasr 2023 | | `canary_exposure_rate` | 针对 Canary 探测的泄露率 | Secret Sharer (Carlini 2019) | | `pii_leak_rate` | 针对 PII 探测的泄露率 | DecodingTrust | | `system_prompt_leak_rate` | 针对系统提示词探测的泄露率 | — | | `verbatim_overlap` | 平均最佳逐字重叠度(最长公共子串比率) | Carlini 2021 / Nasr 2023 | | `token_usage` | 整个运行期间消耗的输入 + 输出 token 总数(离线运行时为 N/A) | — | | `cost` | 根据带有日期的各模型价格表估算的美元费用;组合的目标/攻击者/评价器 token 按目标模型的费率计费(离线运行时为 N/A) | — | ## 7. 谁应该使用 redharness,以及为什么 - **安全与对齐研究人员** —— 用于报告可以直接与先前研究进行比较的越狱/注入/泄露结果,其中每一个数据都锁定了评价器和数据集版本;还可通过对相同的记录使用不同评分器重新打分来研究评价器敏感性。 - **模型开发者与实验室** —— 将其作为一个可复现的回归测试套件,跟踪跨模型版本的对抗鲁棒性,在抗攻击能力和过度拒绝之间取得平衡,以确保安全性的提升不仅仅是拒绝率的提升。 - **红队与 AI 安全工程师** —— 评估智能体系统面对直接和间接提示词注入的表现,量化受攻击条件下的效用,并将其映射到 OWASP LLM Top 10 和 MITRE ATLAS。 - **审计人员、评估者和政策制定者** —— 获取与 NIST AI RMF 相一致的、具备溯源追踪且可复现的证据,以支持治理和采购决策。 - **教育工作者和学生** —— 完全在离线状态下,针对确定性目标和良性合成数据,进行实操性的攻击和防御机制研究。 ## 8. 可复现性与产出物 该测试工具默认是确定性的且完全离线的 —— 内置评估不需要 API 密钥,且结果在不同机器和不同运行中完全一致。每次运行都会生成一份 Markdown 和 HTML 报告、一份机器可读的 `leaderboard.json`(每一行都带有溯源三元组)以及一份完整的 JSONL 记录。可选的 `redharness dashboard` 命令会启动一个 Streamlit Web 应用,将每次运行聚合到一个可过滤的、分威胁面的排行榜中。该框架所基于的文献详见 [`CITATIONS.bib`](CITATIONS.bib)。 ### 首个真实模型结果(保真度) 针对真实前沿模型(`claude-haiku-4-5`;攻击者/评分器为 `gpt-4o-mini`)的首次端到端评估在版本锁定的公开数据集上重现了已发表的行为表现;排行榜已提交至 [`results/`](results/) 目录下。 | 评估项 | 结果 | |---|---| | AdvBench · 直接(静态) | `asr 0.00`, `refusal_rate 1.00` — 对齐后的模型会拒绝直接的有害请求(无防御的基线表现) | | AdvBench · PAIR | `asr 0.15`(StrongREJECT 评分器)/ `1.00`(字符串匹配)— 攻击通过测试工具实现了越狱(静态 ≈ 0 → PAIR ≫ 0) | | XSTest · 安全切分 | `frr 0.00` — 无对良性提示词的过度拒绝 | PAIR 单元格直接重现了 StrongREJECT 的核心发现:对*同一批*记录进行评分时,字符串匹配评价器报告的攻击成功率比评分标准评价器高出约 6.7 倍(`asr` 1.00 vs 0.15)—— 这正是本框架的溯源三元组和 `redharness judge-agreement` 工具(各评价器的 ASR + Cohen's κ)旨在揭示的评价器敏感性效应。 ## 9. 已实现的威胁面与当前范围 这三个威胁面及其离线评估路径均已实现并进行了测试锁定,同时该测试工具还提供了广泛且可插拔的组件集: - **攻击** — 单轮(`static`、`template`)和多轮攻击者-LLM 攻击 `pair` (Chao et al. 2023)、`tap` (Mehrotra et al. 2023) 和 `crescendo`,以及泄露探测。`gcg`、`garak` 和 `pyrit` 是已注册的*脚手架*,其庞大的依赖项未在 CI 中进行验证。 - **数据集** — 内置的合成数据集,外加针对 AdvBench、HarmBench、JailbreakBench (JBB-Behaviors)、XSTest 和 OR-Bench 的需 opt-in 且哈希锁定的加载器:在明确的 `allow_download` 许可下通过 SHA-256 获取并验证,从不提交到代码仓库中。 - **Target** — 确定性的离线参考目标,外加强化版的实时 `openai_compat` 和 `anthropic` 适配器(共享 httpx 传输、重试/退避机制、类型化错误、失败即关闭的 `max_queries` 预算、规范化的 token 用量以及工具调用功能,以确保注入面是针对真实智能体运行的)。本地服务器(Ollama、vLLM)通过 OpenAI 兼容的适配器运行。 - **Judges** — 字符串匹配、StrongREJECT 风格且忠实于原版的 StrongREJECT 评分标准评价器,以及注入/泄露检测器。 - **指标** — 上述分威胁面的指标,以及 `token_usage` 和 `cost`。 内置合成内容之外的所有内容,均需通过可选的扩展依赖和明确的 opt-in 才能开启;离线核心在导入和运行时不需要任何额外组件和网络,这由一个 CI 监测点强制执行。由于内置内容被特意设计为合成数据,冒烟测试评估得出的绝对数值仅用于展示*机制*,并不代表任何真实模型的安全性。请参阅 [`configs/real_eval.example.yaml`](configs/real_eval.example.yaml) 以及 [`docs/configuration.md`](docs/configuration.md) 中的实时评估 / 工具调用 / 本地服务器部分。 推迟到未来的专门迭代中实现:本地 Hugging Face 分类器评价器(Llama Guard、WildGuard、HarmBench 分类器)、进程内 HF 和 Bedrock/Vertex 适配器、AutoDAN 攻击、AgentDojo/InjecAgent 场景摄取,以及托管的防刷榜排行榜验证器。 ## 10. 负责任的使用 `redharness` 是一款防御性评估工具,旨在用于授权的安全测试和研究。它提供了逼真的合成拒绝探测行为和合成机密 —— 不包含操作性的有害内容,不包含真实 PII,也不包含被记忆/受版权保护的文本(也不包含 CBRN/爆炸物内容)。真实数据集从其官方源获取,并在明确的 opt-in 许可下通过哈希进行验证。请使用它来衡量并提升模型安全性。 **负责任的使用 —— LIVE(实时)模式。** 针对真实提供商运行(`openai_compat`、`anthropic`、`pair` 攻击、`strongreject` 数据)需受限于可选的扩展依赖和仅限环境变量的 API 密钥,这是您应尽的责任: - **仅限授权使用。** 仅对您已被授权测试的红队模型和账户进行操作。您需自行负责遵守各提供商的服务条款和可接受使用政策。请使用个人/研究密钥,而非生产环境凭证。 - **本地的有害输出。** 实时运行可能会诱导产生真实的有害文本并将其持久化到 `runs//` 目录中(记录、缓存、报告)。对这些内容的处理、存储和保留完全由您自己负责 —— 请将运行目录视为敏感数据。 - **不可复现。** 实时评估数据属于单次抽样且具有非确定性(提供商采样、模型更新、速率限制);它们在时间维度上无法像离线、确定性的冒烟测试结果那样具有可比性。请设定 `max_queries` 预算以限制开销。 ## 11. 快速开始 有关安装、跨三个威胁面运行评估、解读输出结果、生成和使用排行榜仪表盘以及编写您自己的运行配置,请参阅 [`docs/OVERVIEW.md`](docs/OVERVIEW.md)。 ## 引用 如果您在学术工作中使用了 `redharness`,请引用本代码仓库及其整合的上游基准和评估方法(见 [`CITATIONS.bib`](CITATIONS.bib))。 ``` @software{redharness, title = {redharness: A Standardized, Reproducible Benchmark for Adversarial Evaluation of Large Language Models}, author = {Mohamed Aklamaash}, year = {2026}, note = {Jailbreak, prompt-injection, and data-leakage evaluation harness}, url = {https://github.com/MohamedAklamaash/redharness} } ``` ## 许可证 Apache-2.0。
标签:AI安全, Chat Copilot, DLL 劫持, Kubernetes, Python, 大语言模型, 安全基准测试, 无后门, 时序数据库, 红队评估, 逆向工具