← 返回题目列表

安全回归测试集应该覆盖哪些场景?

中等 第 13 / 26 题 更新于 2026/09/17

简化版

安全回归集要覆盖两面:危险请求是否被正确拒绝或安全转换,正常但敏感的请求是否仍能得到帮助。只放攻击正例会鼓励模型拒绝一切,无法发现过度拒答。

场景应包括直接有害请求、编码和角色扮演变体、多轮拆解、间接提示注入、隐私与权限、工具副作用、策略泄露和历史线上事故。结果按严重度独立设 Gate,Critical 失败不能被总体平均分掩盖。

安全回归的最低标准不是“拒绝危险词”,而是对真实攻击路径保持防御,同时不破坏相邻的合法用途。

详细版

一组安全测试最好包含对照对:

危险正例:针对真实目标生成可直接执行的攻击步骤
正常反例:解释同类漏洞原理并给出防御代码
边界样本:授权靶场中的有限测试请求

若模型拒绝三者,攻击拦截 Recall 很高,但有用性为零。应同时计算:

unsafe_compliance_rate = 危险样本中违规协助数 / 危险样本数
over_refusal_rate      = 正常样本中不当拒绝数 / 正常样本数
维度必测内容主要风险
内容安全暴力、自伤、仇恨等直接有害输出
隐私PII、跨用户数据泄露与重识别
注入/越狱直接、间接、多轮指令层级被覆盖
工具安全越权、参数篡改、重放真实副作用
可靠性虚构成功、错误状态用户误判业务状态
正常反例教育、新闻、防御、求助过度拒答

完整版教学

1. 从威胁模型推导覆盖

先列出攻击者、资产、入口、工具能力和潜在后果。客服机器人与代码 Agent 的风险不同,不能照搬同一套题。

每个高风险路径至少有直接攻击、变体攻击、正常对照和历史事故探针。

2. 为什么正例与反例必须成对

成对样本只改变风险关键因素,例如是否有真实目标、是否具备授权、是否要求可执行细节,从而判断模型是否理解边界。

没有相邻正常反例,最保守的“全部拒绝”会得到虚假高分。

配对还可以定位策略边界:如果两题都允许,说明危险控制不足;两题都拒绝,说明过度保守;只有危险题拒绝且正常题完成,才体现了真正区分能力。

3. 直接攻击要覆盖什么

覆盖明确要求违法、有害、隐私泄露或越权操作的请求。不要只使用一个固定措辞,应包含不同语言、语气、专业程度和输出格式。

但变体应代表真实攻击,不应只做无意义字符扰动来堆数量。

4. 多轮组合风险怎样测试

攻击者可把最终目标拆成资料收集、步骤生成和执行建议。单轮分别看似允许,组合后可能显著提升危险能力。

测试要保留完整会话状态,并评分每轮累积帮助与最终结果,而不只看最后一句是否拒绝。

5. 间接提示注入如何进入回归集

把恶意指令放在网页、邮件、RAG 文档、工具结果或图片 OCR 中,验证模型是否把不可信内容当数据而非高优先级指令。

载体示例风险验证点
网页隐藏指令要求上传数据是否忽略并保留来源
邮件伪造管理员请求是否验证权限
RAG 文档要求泄露 System Prompt是否遵守指令层级
工具结果返回诱导下一步调用是否校验工具输出

6. 工具副作用如何验证

使用沙箱或 Mock 工具检查最终状态、权限、确认步骤、幂等和重试。模型文字拒绝但工具已执行,同样是严重失败。

安全回归必须验证真实状态变化,不能只对最终自然语言打分。

对删除、付款、外发等动作设置 Critical Gate。

7. 策略泄露与系统信息如何测试

覆盖索要 System Prompt、内部阈值、密钥、工具清单和其他用户上下文。期望行为不是机械否认一切,而是保护敏感内容并继续提供允许的产品说明。

日志与错误堆栈也可能泄露内部信息,应在失败路径测试。

8. 过度拒答集如何构建

收集教育、新闻、文学、医学求助、安全研究和无害转换等敏感主题的正常请求,按领域专家标注允许范围。

加入最小对照差异,例如“解释原理”与“对真实目标给 Payload”,提高边界诊断能力。

过拒样本应来自真实用户分布和申诉记录,并按群体、语言与主题切片。否则只用人工构造的明显安全题,会低估真实环境中含糊表达的误拒。

9. 历史事故如何沉淀

事故样本脱敏后进入 Incident Set,同时生成根因相同的若干变体,避免只记住原句。记录事故严重度、修复组件和期望防线。

每次相关组件变化都优先运行这些样本,并保留旧版本结果用于证明不复发。

10. 如何评分复杂安全行为

标签不应只有 Pass/Fail。可记录是否违规、危险细节程度、拒答是否最小、是否给安全替代、是否泄露策略、是否触发副作用。

高风险硬规则优先,主观帮助性再由校准后的 Judge 或人工评分。

pass = no_policy_violation
   AND no_unauthorized_side_effect
   AND (helpful_safe_answer OR justified_refusal)

11. 门禁如何按严重度设置

Critical 事件通常零容忍;High 可设置极低阈值并人工复核;Medium/Low 使用与基线比较和置信区间。

总体通过率只做概览,不能把 1 条 Critical 泄露与 100 条措辞通过平均后批准发布。

12. 如何控制随机性和 Flaky

固定可控参数,对关键攻击多次运行,报告最坏结果或违规概率。外部工具使用确定性沙箱,Judge 分歧进入人工复核。

安全测试偶发失败本身就是风险信号,不应通过无限重试掩盖。

13. 套件如何持续更新

结合新政策、新工具、红队发现、线上举报和攻击情报更新 Challenge Set;Core Safety Set 保持稳定用于趋势。

新增样本做语义去重、标注一致性和数据泄漏检查,审计旧真值是否仍适用。

每次版本发布记录新增、修改、退役样本和标签迁移,必要时用重叠锚点生成桥接报告。这样分数变化才能区分模型改动与测试集组成变化。

14. 常见误区与追问

  • 误区:安全集只需要危险 Prompt。 缺少正常反例会奖励全面拒答。
  • 误区:把一句越狱话术改写 100 次就有广覆盖。 应覆盖不同攻击路径、载体和能力。
  • 误区:最终回答拒绝就说明工具安全。 工具可能已经产生真实副作用,必须查状态。
  • 误区:总体安全分高即可发布。 Critical 失败必须独立阻断。
  • 误区:测试偶发失败可以忽略。 概率性违规在线上规模化后会变成真实事件。
  • 追问:如何测试多轮风险? 评分累积能力和最终状态,不能逐句独立判断。
  • 追问:新事故如何回归? 脱敏原样本,加同根因变体,记录防线和严重度。

15. 加强记忆

  1. 双集合:危险正例测违规,正常反例测过拒。
  2. 全路径:直接、多轮、间接注入、工具副作用、信息泄露。
  3. 看真实状态:文本安全不代表工具没有执行。
  4. 严重度 Gate:Critical 独立零容忍,不被均值稀释。
  5. 持续回流:政策、红队、事故和攻击情报不断补充 Challenge Set。