技术WHITEHOLE
红队与越狱防护:用例集与复查节奏
红队测试,指的是主动扮演攻击者,尝试让模型说出不该说的内容或执行不该做的动作。它的产出不是一次结论,而是一套可复用的用例集与一套防护复查节奏。本文给出攻击面的划分、用例集怎么攒、防护分层的方式,以及复查频率该由什么决定
技术红队测试安全对齐
红队测试,指的是主动扮演攻击者去试探系统的防护边界。它的价值不在于「测出问题」这个结果,而在于把试探过程沉淀成可重复执行的用例集 —— 只有这样,后续每次改动才能验证防护有没有退化
攻击面分几类
- 提示注入:通过输入内容试图改变系统既定的行为规则。
- 角色扮演绕过:借助虚构场景或假设情境,诱导模型突破原有约束。
- 数据外带:诱导模型输出本不该出现在答案里的内部信息。
- 越权动作:让模型调用它本不应调用的接口或执行超出授权范围的操作。
- 多轮诱导:把违规请求拆成多轮看似正常的对话,逐轮逼近目标。
最后一类在多轮对话场景里尤其常见,单轮检测往往看不出来,需要结合整段会话判断。
用例集怎么攒
- 从真实使用中收集:用户实际尝试过的越界请求,比构造出来的样本更贴近现实。
- 分类归档:按攻击面归类,便于针对性复查某一类防护。
- 标注期望行为:每条用例都要写明正确结果是什么,否则无法判断是否通过。
- 版本化维护:用例集本身也要有版本,改动之后重新跑一遍才有对比基线。
防护分层
- 输入过滤:拦截明显异常的请求形态,但不应作为唯一防线。
- 权限约束:让模型本身拿不到不该拿的数据与接口,这是最有效的一层。
- 输出过滤:对生成结果做检查,拦截越界内容。
- 动作确认:涉及真实业务动作时增加确认环节,避免错误被自动执行。
分层的作用是让单点绕过不致命。只有一层防护时,绕过一次就等于穿透;四层同时存在时,攻击者需要连续突破多道判断,成本会显著上升。
复查节奏由什么决定
- 模型换代:新版本的行为分布会变,旧结论不再适用。
- 提示模板变更:模板是行为约束的一部分,改动后需要重新验证。
- 新场景上线:新场景引入了新的数据与动作范围。
- 权限范围扩大:可访问的内容变多,越界后果随之变大。
- 定期基线:即使没有明显变更,也应有固定周期的复跑,用于发现缓慢退化。
低成本起步的做法
红队工作看起来门槛很高,实际可以从很小的范围开始,关键是让记录能积累下来
- 先做一类:从最容易出问题的攻击面入手,把这一类做扎实再扩展,比一开始铺开覆盖面更容易坚持。
- 复用日常问题:把使用者反馈过的异常情况直接转成用例,成本最低。
- 固定执行人:每次由同一个人执行,减少判定标准漂移。
- 每次改动跑一遍:把用例集接进变更流程,而不是等到专项检查时才想起来。
验收
- 有一份按类别整理的用例集,且每条都写明期望行为。
- 用例集有版本记录,历史运行结果可查。
- 分层防护的每一层都有对应的验证方式,而不是只验证最终结果。
- 不可接受的行为单独列出,并且数量为零。