跳到主要内容
技术WHITEHOLE

红队与越狱防护:用例集与复查节奏

红队测试,指的是主动扮演攻击者,尝试让模型说出不该说的内容或执行不该做的动作。它的产出不是一次结论,而是一套可复用的用例集与一套防护复查节奏。本文给出攻击面的划分、用例集怎么攒、防护分层的方式,以及复查频率该由什么决定

技术红队测试安全对齐

红队测试,指的是主动扮演攻击者去试探系统的防护边界。它的价值不在于「测出问题」这个结果,而在于把试探过程沉淀成可重复执行的用例集 —— 只有这样,后续每次改动才能验证防护有没有退化

攻击面分几类

  • 提示注入:通过输入内容试图改变系统既定的行为规则。
  • 角色扮演绕过:借助虚构场景或假设情境,诱导模型突破原有约束。
  • 数据外带:诱导模型输出本不该出现在答案里的内部信息。
  • 越权动作:让模型调用它本不应调用的接口或执行超出授权范围的操作。
  • 多轮诱导:把违规请求拆成多轮看似正常的对话,逐轮逼近目标。

最后一类在多轮对话场景里尤其常见,单轮检测往往看不出来,需要结合整段会话判断。

用例集怎么攒

  • 从真实使用中收集:用户实际尝试过的越界请求,比构造出来的样本更贴近现实。
  • 分类归档:按攻击面归类,便于针对性复查某一类防护。
  • 标注期望行为:每条用例都要写明正确结果是什么,否则无法判断是否通过。
  • 版本化维护:用例集本身也要有版本,改动之后重新跑一遍才有对比基线。

防护分层

  • 输入过滤:拦截明显异常的请求形态,但不应作为唯一防线。
  • 权限约束:让模型本身拿不到不该拿的数据与接口,这是最有效的一层。
  • 输出过滤:对生成结果做检查,拦截越界内容。
  • 动作确认:涉及真实业务动作时增加确认环节,避免错误被自动执行。

分层的作用是让单点绕过不致命。只有一层防护时,绕过一次就等于穿透;四层同时存在时,攻击者需要连续突破多道判断,成本会显著上升。

复查节奏由什么决定

  • 模型换代:新版本的行为分布会变,旧结论不再适用。
  • 提示模板变更:模板是行为约束的一部分,改动后需要重新验证。
  • 新场景上线:新场景引入了新的数据与动作范围。
  • 权限范围扩大:可访问的内容变多,越界后果随之变大。
  • 定期基线:即使没有明显变更,也应有固定周期的复跑,用于发现缓慢退化。

低成本起步的做法

红队工作看起来门槛很高,实际可以从很小的范围开始,关键是让记录能积累下来

  • 先做一类:从最容易出问题的攻击面入手,把这一类做扎实再扩展,比一开始铺开覆盖面更容易坚持。
  • 复用日常问题:把使用者反馈过的异常情况直接转成用例,成本最低。
  • 固定执行人:每次由同一个人执行,减少判定标准漂移。
  • 每次改动跑一遍:把用例集接进变更流程,而不是等到专项检查时才想起来。

验收

  • 有一份按类别整理的用例集,且每条都写明期望行为。
  • 用例集有版本记录,历史运行结果可查。
  • 分层防护的每一层都有对应的验证方式,而不是只验证最终结果。
  • 不可接受的行为单独列出,并且数量为零。

FAQ

常见问题

与这篇相关、并且被问得最多的几个问题

红队测试应该由内部还是外部来做
都可以。外部人员不了解内部规则,往往更容易发现被内部忽略的绕过路径;内部团队则更熟悉真实使用场景
发现了绕过路径怎么办
先评估影响范围,再补防护并把该路径转成用例。只修不记录,下次大概率会以另一种形式出现
用例集应该公开吗
通常不公开,公开会让攻击更有针对性。但内部需要有完整的记录与版本管理,否则无法验证防护是否退化