关于Ubuntu安全更新合并、软件包版本兼容性及CVE修复覆盖的技术咨询
先给你确认下:你对Ubuntu补丁机制的理解完全正确——bug修复一般推送在-updates源,安全漏洞修复放在-security源;每个补丁通常对应单个软件包的特定CVE(不像Windows那样搞累积更新);而且为了系统稳定,Ubuntu会针对每个发行版的现有软件包版本打补丁,不会直接跳升到上游最新大版本。
接下来逐个解答你的问题:
1. -security和-updates镜像什么时候会合并?
这两个源的内容会在Ubuntu的点版本发布时合并(比如从20.04.4升级到20.04.5这种小版本迭代)。每次点版本发布时,Ubuntu会把-security里经过充分验证的安全补丁,以及-updates里的bug修复整合到发行版的基础镜像中,新安装的系统就能直接拿到这些更新,不用再单独拉取源里的补丁。另外,当某个发行版到达**生命周期终点(EOL)**前的最后一个点版本时,两个源的内容也会最终合并归档。
2. 如果一个CVE在软件包版本N被修复,那版本N+1的包会包含这个修复吗?
那必须包含啊!不管是Ubuntu自己维护的包小版本迭代,还是上游的版本更新,只要之前的版本N已经把这个CVE修复了,后续的N+1、N+2等所有版本都会继承这个修复——总没人会把已经修好的漏洞再重新加回去对吧?
这里提下Ubuntu的包版本号规则:比如avahi-daemon-0.7-4ubuntu2.1里的.1是补丁版本,而ubuntu7这种是发行版专属的版本迭代,本质上都是在基础版本上叠加各种修复,所以修复只会越来越多,不会消失。
3. 如果安全补丁只提到Ubuntu 18.04,没提20.04,那20.04是已经包含修复还是这个CVE不适用?
分两种情况来看:
- 情况一:这个CVE本身不适用于20.04的包版本。比如20.04里的软件包已经是上游更新后的版本,从根源上就没有这个漏洞,自然不需要打补丁。
- 情况二:修复已经包含在20.04的包中了。Ubuntu不同发行版的软件包是独立维护的,18.04的补丁是针对它自己的旧版本包打的,而20.04的包可能在初始发布时或者后续常规更新中已经集成了这个修复,所以不需要再单独发布USN(Ubuntu安全通知)。
结合你给出的例子说明
你提到的那个USN里的CVE-2017-6519,你在20.04上安装的avahi-daemon版本是0.7-4ubuntu7.2,这个版本肯定已经包含了该CVE的修复。原因很简单:20.04是比18.04晚发布的版本,它的初始包版本0.7-4ubuntu7已经是在18.04的0.7-4ubuntu2基础上做了更新,而那个CVE的修复早在2019年就完成了,20.04发布时就已经把这个修复包含进去了,所以不需要再针对20.04单独发USN通知。
备注:内容来源于stack exchange,提问作者DenLi




