结论先说:把失效条件写成“触发即停”的硬门槛,而不是“定期重审”的软提醒。对多数中小站点,一套扫描计划的有效期不该由日历决定,而应由三个可观测信号决定——扫描目标清单的变更幅度、漏洞类型的分布漂移、修复动作的闭环率。任一项越过你预设的阈值,旧计划就应作废重排,而不是继续跑。下面说清这个结论成立的条件,以及它会在什么时候反过来害你。
定期重审的隐含假设是:站点结构、技术栈和攻击面在两次重审之间基本稳定。当需求变化快时,这个假设先崩。典型表现是上线节奏快于扫描节奏——新页面、新接口、新子域在两周内出现,而扫描计划还按季度排期,覆盖范围天然滞后。
更麻烦的是,滞后不会以“漏报”这种显眼方式暴露,而是以“扫描通过”的假安全感出现。计划覆盖的仍是旧资产,报告干净,但新资产从未进入范围。所以失效条件要盯的不是“扫了多少”,而是“计划描述的世界和真实世界差了多少”。
不要设一个笼统的“变化太大就重审”,而要拆成可判断的信号。以下阈值都是示例,需按你的发布频率调整。
三者中任意一个越线,就把旧计划标记为失效,重新走一遍范围确认和优先级排序。动作的结果直接影响下一步:漂移率越线要先补资产盘点,闭环率越线要先修流程,两者处理顺序不能颠倒。
上面的结论有一个明确边界:它适用于你能够稳定、自动地获取上述三类信号的情况。如果资产清单本身依赖人工维护,且更新严重滞后,那么漂移率这个指标会先失真——你算出来的漂移率反映的是“台账更新速度”,而不是“真实攻击面变化”。
假设一个团队每次上线都不登记新路径,那么即使真实资产翻倍,漂移率也可能显示为零,旧计划永远不会触发失效。此时“触发即停”反而制造了更隐蔽的盲区。这种情况下,正确做法是先解决资产发现的自动化,再谈失效条件;在自动化到位之前,应退回到“按发布事件强制重审”,而不是依赖指标。
另一个反例是低频变更的稳定站点。若半年内资产和类型分布几乎不变,强行为漂移率设一个低阈值,只会导致频繁重排计划、消耗团队耐心,却不带来覆盖改善。失效条件要匹配变化速度,不是越敏感越好。
失效条件如果不落到文档和责任人,就只是口头共识。建议在扫描计划里单列一节,写成可判定的句子,而不是形容词。
这样写的好处是,判定不依赖个人记忆。任何人拿到数据和阈值都能得出同一结论,避免“感觉变化挺大”这类无法执行的标准。
不要凭空设定阈值。先按现有节奏采集两到三个周期的三类信号,观察它们的自然波动范围,再把阈值设在正常波动之上。例如漂移率常态在 5% 到 10% 之间浮动,阈值可设在 15%;若常态就在 20% 上下,说明你的发布节奏本就快,应缩短统计周期而不是抬高阈值。
采集一轮之后你会得到两个副产品:一是知道自己的计划大概多久会失效一次,二是知道哪类信号最先越线。后者决定了你该优先投入资产自动化、检查项调整还是修复流程,这比反复讨论“多久扫一次”更接近问题的实质。把第一轮数据记录下来,作为下一轮阈值的对照基准,计划才真正具备自我修正的能力。