防御规则为什么要版本化
检测正则、敏感模式串与白名单都会随时间失效或误伤:攻击者换措辞、业务出现新表达。把规则当代码管理——版本库、评审、变更记录、回归测试与回滚路径——才能在规则静默更新导致行为漂移时定位到具体那一次变更。
基本信息
| Why | 规则静默更新会造成行为漂移,出问题要能定位到某次变更 |
|---|---|
| 基线信息 | 每条规则记录目的、正例与反例样本、负责人、上线时间 |
| 流程 | 提案 → 样本验证 → 评审 → 灰度 → 全量 → 记录 |
| 回归 | 固定样本集上跑新旧规则对比,观察拦截率与误伤率 |
| 回滚 | 保留上一版规则文件,一处开关即可切回 |
典型使用场景
- 收紧检测阈值:先跑旧样本集,确认不会把正常业务表述拦掉
- 新增敏感模式:附正例与反例,评审时按样本判断而非凭直觉
- 误伤投诉处理:按变更记录回溯是哪一版规则引入的
- 紧急加固:先上临时规则止损,事后补评审与样本
- 季度盘点:清理长期零命中的规则,减少维护与性能开销
规则条目模板
规则条目模板
id: inj-style-014
目的: 检测“忽略以上指令”类措辞及其常见变体
正例: 3 条(含空格插入、大小写混写、编码变体)
反例: 2 条(正常业务表述中出现的同形词)
变更: v3 收紧阈值并补充编码归一化;作者与评审人签名
回归: 在 inj-regression-v4 上拦截率 96%,误伤 0/200
回滚: 保留 v2 规则文件,切换规则集版本即可回退变更类型与风险
| 变更类型 | 主要风险 | 必要动作 |
|---|---|---|
| 新增规则 | 误伤正常请求 | 跑反例样本,观察误伤率 |
| 收紧阈值 | 原本放行的内容被拦 | 新旧规则对比回归 |
| 放宽阈值 | 漏检增多 | 补攻击变体测试 |
| 白名单调整 | 给攻击者留后门 | 双人复核并留记录 |
规则版本号要和被测系统版本一起记录:同一个规则集在不同模型上表现不同,横比之前先确认变量只有一个。