据我了解,错误和漏洞修复在 -updates 和 -security 中分别发布。1 个补丁修复 1 个软件包的 CVE(没有像 Windows 中那样的累积补丁)。每个软件包的每个 ubuntu 版本都有一个补丁(出于稳定性原因,在当前版本进行修复)。
以下是我的问题:
-security 和 -updates 镜像何时合并。在下一个 Ubuntu 版本中?
如果在软件包的版本 N 中发现并修复了 CVE。软件包的版本 N+1 是否包含修复?
如果针对 Ubuntu 18/04 发布了安全补丁,但 USN 页面中没有提及 ubuntu 20.04,那么修复是否包含在 Ubuntu 20.04 中,或者旧的 CVE 不适用?
在此示例中:https://ubuntu.com/security/notices/USN-3876-1
USN 中提到的补丁的最新版本适用于 Ubuntu 18.04,名为 avahi-daemon-0.7-4ubuntu2.1。
我在 Ubuntu 20.04 中安装的版本较新:0.7-4ubuntu7.2。即使 ubuntu 版本不一样,它是否包含 CVE-2017-6519 的安全补丁?
答案1
当发布 USN 时,这意味着所有受影响版本的更新都已发布到受影响版本的 -security 和 -updates 存储库中,并且很可能已发布到此后的每个版本,特别是如果它已由上游开发人员针对给定源包进行了修复。
在这里,您必须查看给定 CVE 的 CVE 页面本身才能真正开始剖析这一点,并且还要稍微了解如何确定 Ubuntu 软件包版本等。 这是您所引用的 CVE (CVE-2017-6519) 的 CVE 跟踪器页面。
当安全更新被推送时,它会同时出现在 -security 和 -updates 两个文件夹中。这样做是为了确保所有人都能获得安全补丁。
然而,你必须这样做版本比较您已安装的软件包版本与受影响/修复版本的比较。
这是该页面的当前屏幕截图:
我们可以看到,Ubuntu 中第一个收到此修复的版本是0.7-3.1ubuntu1.2
,它是在 Bionic 中引入的。
然后我们参考您系统中的版本 - 0.7-4ubuntu7.2
。这是相同的代码库为0.7-3.1ubuntu1.2
- 即 Avahi 0.7 - 但带有额外的软件包修订和补丁。
由于这些是相同的代码库版本,但是软件包修订版本不同,且晚于“修复发布”版本,因此您已经修补了此 CVE。 这就是表格中未显示后续版本的原因,您无需担心。Avahi 的后续版本可能也已针对此 CVE 进行了修复和修补。
Avahi 实际上已在 Upstream 的 0.8 版本中修复了此问题。我们从他们的 github 标签和发布说明中得知了这一点 -https://github.com/lathiat/avahi/releases/tag/v0.8
因此,CVE 需要更新以反映上游补丁版本,以将其标记为已发布/已修复。但是,您的代码库是 0.7,因此您发布的 Focal 中的软件包版本是基于该软件包构建的,并进行了额外的打包更改,以作为-4ubuntu*
其软件包版本字符串。
我们可以通过以下方式查看 Avahi 的所有版本查看 Launchpad 中的页面受支持的版本以及每个版本有哪些版本:
安全团队一旦发布修复程序,就没有义务回去更新上游补丁版本的跟踪器,尽管他们有时会这样做,但并不总是更新(在这种情况下,我要求安全团队更新该 CVE 的页面)。
由于此安全补丁已在 Avahi 0.8 版中修复,您会注意到 Ubuntu 的所有后续版本都使用 0.8 版,因此已包含此补丁(并且未在后续版本的 -security 存储库中进行分发修补,但作为 Avahi 基本代码的一部分包含在内)。