55AA-002 · 这是第一周第二次课,把第一讲的概念转化为可执行流程。学生需要从公告走到 issue、测试、修复计划和披露沟通。

返回课程

漏洞公告分析工作坊

这是第一周第二次课,把第一讲的概念转化为可执行流程。学生需要从公告走到 issue、测试、修复计划和披露沟通。

学习目标

  • 独立拆解一篇漏洞公告,识别事实、推断和未知项。
  • 把根因转化为一个可复现的最小测试用例。
  • 把安全风险转化为工程 issue、优先级和修复验收标准。
  • 写出一段面向用户和维护者都能理解的安全说明。

先备知识

  • 第一讲的四个概念:bug、vulnerability、exploit、risk。
  • 能阅读 GitHub issue 或安全公告。
  • 能写出简单测试用例描述。

课前准备

  • 完成第一次课作业草稿:任选一篇 CVE 公告并做一页分析。
  • 带来一个你不确定如何判断严重性的点。
  • 阅读课程仓库中的两个示例公告:一个输入验证漏洞,一个依赖漏洞。

课堂流程

0-10
复习:四词和五问

用冷启动小测复习 bug、vulnerability、exploit、risk,以及谁能触发、入口点、信任边界、资产、回归测试五问。

review
互动问题

事实、推断和未知项为什么要分开写?

预期回答:因为安全响应需要可审计证据。事实支撑行动,推断需要置信度,未知项决定下一步调查。

追问:如果你把推断写成事实,会对修复优先级和披露造成什么影响?

逐字稿

开场复习

上节课我们建立了四个词:bug、vulnerability、exploit、risk。今天我们不再停留在定义,而是做一件安全工程师每天都会做的事:读公告,然后把公告转成行动。注意,行动不是‘知道了’,行动是 issue、测试、补丁、发布和监控。

Demo / 练习

公告分析模板

把公告复制到模板。

Slides
打开 Slides 占位文件
Slide 1今天产出什么
Slide 2事实 / 推断 / 未知
Slide 3安全 issue 模板
视频媒介
视频占位链接

事实、推断和未知项

10-22
教师示范:公告到证据表

教师把一篇短公告拆成事实、推断和未知项三列,示范不要把猜测写成事实。

modeling
互动问题

事实、推断和未知项为什么要分开写?

预期回答:因为安全响应需要可审计证据。事实支撑行动,推断需要置信度,未知项决定下一步调查。

追问:如果你把推断写成事实,会对修复优先级和披露造成什么影响?

逐字稿

示范

我先示范如何读。第一遍只标事实:公告明确说了哪些版本受影响,明确说了什么入口点,明确说了修复版本。第二遍才写推断:如果它影响上传接口,我们推断头像上传也可能受影响,但这不是事实。第三栏写未知项:是否暴露在公网?是否启用了相关功能?是否有 WAF 或其他控制?

Demo / 练习

公告分析模板

以小组为单位提交一个安全 issue:标题、影响、攻击前提、复现步骤、验收标准、回归测试。

Slides
打开 Slides 占位文件
Slide 2事实 / 推断 / 未知
Slide 3安全 issue 模板
Slide 4优先级不是分数复制
视频媒介
视频占位链接

事实、推断和未知项

22-38
小组分析 1:输入验证漏洞

学生小组填写模板:受影响版本、攻击前提、根因、影响、测试、修复验收标准。

group-work
互动问题

升级依赖总是最好的修复吗?

预期回答:不总是。升级可能带来兼容性风险,但长期通常需要升级;短期可能需要配置缓解、禁用入口点或隔离暴露面。

追问:如果升级会破坏生产系统,你如何设计临时缓解和验收时间线?

逐字稿

小组任务说明

现在每组拿到一个输入验证漏洞。你们的目标不是复述公告,而是把它变成工程任务。请写出一个 issue,里面必须有攻击前提、影响、复现步骤、验收标准和回归测试。十六分钟后我们比较两个组的结果。

Demo / 练习

公告分析模板

把公告复制到模板。

Slides
打开 Slides 占位文件
Slide 3安全 issue 模板
Slide 4优先级不是分数复制
Slide 5安全工程闭环
视频媒介
视频占位链接

事实、推断和未知项

38-50
全班评审:严重性和优先级

比较两个小组的优先级判断,强调环境暴露、资产价值和可利用性会改变排序。

review
互动问题

升级依赖总是最好的修复吗?

预期回答:不总是。升级可能带来兼容性风险,但长期通常需要升级;短期可能需要配置缓解、禁用入口点或隔离暴露面。

追问:如果升级会破坏生产系统,你如何设计临时缓解和验收时间线?

逐字稿

评审

我们看两个组的优先级判断。一个组给 P0,一个组给 P2。谁对?这取决于环境。安全优先级不是公告分数的机械复制。公网暴露、认证要求、资产价值、是否有现有控制,都会改变排序。你们以后做安全响应,必须把环境写进判断里。

Demo / 练习

公告分析模板

以小组为单位提交一个安全 issue:标题、影响、攻击前提、复现步骤、验收标准、回归测试。

Slides
打开 Slides 占位文件
Slide 4优先级不是分数复制
Slide 5安全工程闭环
视频媒介
视频占位链接

把公告转成安全 issue

50-65
小组分析 2:依赖漏洞

切换到依赖漏洞,要求学生判断升级、缓解、锁版本和 SBOM 更新如何进入修复计划。

group-work
互动问题

回归测试应该证明漏洞已经不存在,还是证明 exploit 失效?

预期回答:最好覆盖根因,而不是只覆盖一个 exploit 样本。只证明一个 exploit 失效可能漏掉同类变体。

追问:如果根因还不清楚,第一版测试该怎么写?

逐字稿

总结

今天的闭环是 triage、reproduce、patch、test、release、monitor。只完成其中一步,都不算完整安全工程。下节课我们进入内存安全,会看到一个看似普通的边界错误,如何沿着机器模型变成控制流风险。

Demo / 练习

公告分析模板

把公告复制到模板。

Slides
打开 Slides 占位文件
Slide 5安全工程闭环
视频媒介
视频占位链接

把公告转成安全 issue

65-76
安全说明写作

每组写三段话:给用户的影响说明、给维护者的技术说明、给管理者的风险说明。

writing
互动问题

回归测试应该证明漏洞已经不存在,还是证明 exploit 失效?

预期回答:最好覆盖根因,而不是只覆盖一个 exploit 样本。只证明一个 exploit 失效可能漏掉同类变体。

追问:如果根因还不清楚,第一版测试该怎么写?

逐字稿

总结

今天的闭环是 triage、reproduce、patch、test、release、monitor。只完成其中一步,都不算完整安全工程。下节课我们进入内存安全,会看到一个看似普通的边界错误,如何沿着机器模型变成控制流风险。

Demo / 练习

公告分析模板

以小组为单位提交一个安全 issue:标题、影响、攻击前提、复现步骤、验收标准、回归测试。

Slides
打开 Slides 占位文件
Slide 6安全工程闭环
视频媒介
视频占位链接

把公告转成安全 issue

76-85
把公告转成工程流程

教师总结一个完整闭环:triage -> reproduce -> patch -> test -> release -> monitor。

synthesis
互动问题

回归测试应该证明漏洞已经不存在,还是证明 exploit 失效?

预期回答:最好覆盖根因,而不是只覆盖一个 exploit 样本。只证明一个 exploit 失效可能漏掉同类变体。

追问:如果根因还不清楚,第一版测试该怎么写?

逐字稿

总结

今天的闭环是 triage、reproduce、patch、test、release、monitor。只完成其中一步,都不算完整安全工程。下节课我们进入内存安全,会看到一个看似普通的边界错误,如何沿着机器模型变成控制流风险。

Demo / 练习

公告分析模板

把公告复制到模板。

Slides
打开 Slides 占位文件
Slide 7安全工程闭环
视频媒介
视频占位链接

安全响应闭环

85-90
总结和下节课钩子

总结公告分析模板。下节课进入内存安全,观察一个具体 bug 如何变成控制流风险。

summary
互动问题

回归测试应该证明漏洞已经不存在,还是证明 exploit 失效?

预期回答:最好覆盖根因,而不是只覆盖一个 exploit 样本。只证明一个 exploit 失效可能漏掉同类变体。

追问:如果根因还不清楚,第一版测试该怎么写?

逐字稿

总结

今天的闭环是 triage、reproduce、patch、test、release、monitor。只完成其中一步,都不算完整安全工程。下节课我们进入内存安全,会看到一个看似普通的边界错误,如何沿着机器模型变成控制流风险。

Demo / 练习

公告分析模板

以小组为单位提交一个安全 issue:标题、影响、攻击前提、复现步骤、验收标准、回归测试。

Slides
打开 Slides 占位文件
Slide 8安全工程闭环
视频媒介
视频占位链接

安全响应闭环

课后作业

把自己的 CVE 分析扩展成一个工程 issue 和一个回归测试设计,下次课前提交。