持续发现并修复漏洞
已完成建立从漏洞发现到经验证生产修复的持续流程。理解成功原型可能掩盖的维护缺口。
检验理解应用已经三个月没有修改。最近一次依赖扫描在发布时通过。哪个说法有证据支持?完成练习
你将学到什么
- 解释代码不变为什么仍需要持续安全审查。
- 将不同扫描类型与覆盖范围和局限对应起来。
- 追踪发现从优先级判断到修正、部署和验证的过程。
可用原型可能变成无人维护的服务
Vibe coding 可以快速产出有用原型。如果人们持续使用它,却没有持续安全维护,生产风险就会上升。这是严重缺口:软件仍然暴露在风险中,创建它的人却认为工作已经结束。
缺口既涉及技术,也涉及组织。扫描器可能存在,却没有负责人。发现可能有负责人,却没有发布路径。修复可能已合并,但旧生产制品仍在运行。
评估实际开发平台和配置。有些工具提供安全功能,但产品标签不能证明已部署应用获得持续扫描和经过验证的修复。
证据可能变化时执行扫描
对拟议修改和构建制品执行相关检查。由于安全公告会在没有代码提交时变化,应定期重新评估受支持版本。相关公告、暴露变化或事件出现时,触发额外审查。
明确范围。列出代码仓库、分支、锁文件、镜像、已部署摘要值、运行时和环境。也要包含已经不再开发新功能、但仍服务用户的应用。
扫描失败意味着缺少证据。监控扫描是否及时、公告源失败、身份验证失败、不支持的组件和覆盖缺口。任务失败后的空发现列表,不等于扫描结果干净。
用不同检查回答不同问题
| 检查 | 有用的覆盖范围 | 重要局限 |
|---|---|---|
| 软件成分分析(SCA) | 已知依赖漏洞,包括已识别的传递依赖 | 不能证明应用授权正确 |
| 静态应用安全测试(SAST) | 工具能够识别的不安全代码模式 | 可能漏掉运行时行为,并产生需要分诊的发现 |
| 秘密信息扫描 | 扫描内容中能够识别的凭据模式 | 删除某处字符串后,其他地方可能仍有有效凭据 |
| 基础设施和配置检查 | 扫描资源或配置中违反已定义策略的情况 | 代码仓库配置可能不同于运行环境 |
| 获授权的动态测试 | 受测范围内运行应用的行为 | 需要许可、适当数据,并谨慎处理副作用 |
将这些检查与审查和相关安全测试结合。不要声称任何扫描都能证明不存在漏洞。
追踪一项虚构发现进入生产
| 时间 | 事件 | 实际状态 |
|---|---|---|
| 周一 09:00 | 新公告指出一个受影响的 PDF 依赖 | 现有发布版本需要评估 |
| 周一 09:15 | 定期扫描识别出生产版本 | 已发现问题,尚未修正 |
| 周一 10:00 | 负责人确认暴露,并选择受支持补丁 | 已规划修复 |
| 周一 13:00 | 测试通过,补丁 PR 已合并 | 代码仓库已修正;生产仍待部署 |
| 周一 14:00 | 流水线部署修正后的镜像 | 新制品正在运行;仍待验证 |
| 周一 14:20 | 制品扫描和导出回归检查通过 | 修复在已检查范围内得到验证 |
根据严重程度、利用证据、暴露情况、受影响数据和可用缓解措施安排优先级。CISA 目录有助于识别已知利用情况,但只是一个输入,不是完整风险评估。参见 CISA 目录。
临时例外需要证据、负责人、补偿性控制措施,以及到期或复核触发条件。如果没有补丁,可考虑获授权的替代处理、限制功能,或移除受影响组件。
补上维护缺口
按优先级衡量完成分诊和经验证修复所需的时间。追踪逾期例外、过时扫描、受影响生产版本和重复发现。发现数量下降,也可能只是覆盖减少,因此应检查分母。
Taiga Maintaining 会在已连接代码仓库发生修改后扫描,也会定期扫描。它记录发现,并将修复与 initiative 和已审查修改关联起来。检查扫描状态和当前文档说明的行为。参见 Maintaining。
流水线仍需要适当的发布门禁。服务负责人仍须确认部署和运行正确性。这条持续链路是运维 AI 软件工厂的一部分,也适用于最初从原型起步的产品。
完成练习
使用本课的虚构时间线。识别团队可能在哪里错误宣布成功。定义扫描触发条件、失败告警、修复负责人、发布验证和临时例外的到期条件。
下载工作表(Markdown)取消勾选将删除此浏览器保存的全部进度。
进度保存在此浏览器中。无需账户,不追踪使用情况。
来源与延伸阅读
- NIST: Secure Software Development Framework ↗
- CISA: Known Exploited Vulnerabilities Catalog ↗
- Taiga docs: Maintaining ↗