适用于 AL2023 的 Amazon Linux 安全通告 - Amazon Linux 2023

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 AL2023 的 Amazon Linux 安全通告

尽管我们努力确保 Amazon Linux 的安全,但有时会有一些安全问题需要修复。当有可用的修复程序时,我们就会发布通告。我们发布通告的主要位置是 Amazon Linux 安全中心(ALAS)。有关更多信息,请参阅 Amazon Linux 安全中心

重要

如果您想报告漏洞或对 AWS 云服务或开源项目有安全方面的问题,请使用漏洞报告页面联系 AWS 安全部门。

有关影响 AL2023 的问题和相关更新的信息将由 Amazon Linux 团队在多个位置发布。安全工具通常会从这些主要源代码中获取信息并将结果呈现给您。因此,您可能不会直接与 Amazon Linux 发布的主要源代码进行交互,而是与您的首选工具(例如 Amazon Inspector)提供的界面进行交互。

Amazon Linux 安全中心公告

Amazon Linux 公告用于不适合放入通告的项目。这部分包含关于 ALAS 本身的公告,以及不适合放入通告的信息。有关更多信息,请参阅 Amazon Linux Security Center(ALAS)公告

例如,2021-001 号关于 Apache Log4j 的 Amazon Linux 热补丁公告应归类为公告而非通告。在此公告中,Amazon Linux 添加了一个程序包以帮助客户缓解不属于 Amazon Linux 的软件中的安全问题。

Amazon Linux Security Center CVE Explorer 也通过 ALAS 公告宣布推出。有关更多信息,请参阅 CVE 的新网站

Amazon Linux 安全中心常见问题解答

关于 ALAS 和 Amazon Linux 如何评估 CVE 的一些常见问题解答,请参阅 Amazon Linux 安全中心(ALAS)常见问题解答(FAQ)

ALAS 通告

Amazon Linux 通告包含与 Amazon Linux 用户相关的重要信息,通常是关于安全更新的信息。Amazon Linux 安全中心是网络上可以看到通告的地方。通告信息也是 RPM 程序包存储库元数据的一部分。

通告和 RPM 存储库

Amazon Linux 2023 程序包存储库可能包含描述零个或多个更新的元数据。dnf updateinfo 命令以包含此信息的存储库元数据文件名 updateinfo.xml 命名。虽然命令名为 updateinfo,而元数据文件引用 update,但这些都指代属于通告一部分的程序包更新。

Amazon Linux 通告发布在 Amazon Linux 安全中心网站,同时信息也存在于 dnf 程序包管理器引用的 RPM 存储库元数据中。网站和存储库元数据最终会保持一致,但网站和存储库元数据中的信息可能存在暂时性不一致的情况。这种情况通常发生在新版本的 AL2023 发布过程中,在最新的 AL2023 版本之后通告已有更新。

虽然新通告通常与解决问题的程序包更新一起发布,但并非总是如此,也可以为已在已发布程序包中解决的新问题创建通告。现有通告可能会更新以补充新发现的 CVE 漏洞,这些漏洞可通过现有更新修复。

Amazon Linux 2023 的 在 AL2023 上通过版本化存储库实现确定性升级 功能意味着特定 AL2023 版本的 RPM 存储库包含该版本时的 RPM 存储库元数据快照。这包括描述安全更新的元数据。特定 AL2023 版本的 RPM 存储库发布后不会更新。新的或更新的安全通告在查看旧版 AL2023 RPM 存储库时不可见。请参阅 列出适用的通告 部分了解如何使用 dnf 程序包管理器查看 latest 存储库版本或特定 AL2023 版本。

通告 ID

每个通告由一个 id 引用。目前 Amazon Linux 的一个怪异之处在于,Amazon Linux 安全中心网站将通告列为 ALAS-2024-581,而 dnf 程序包管理器将该通告的 ID 列为 ALAS2023-2024-581。当 原地应用安全更新 时,程序包管理器 ID 需要用于引用特定通告。

对于 Amazon Linux,每个主要操作系统版本都有自己的通告 ID 命名空间。不应对 Amazon Linux 通告 ID 的格式做任何假设。历史上,Amazon Linux 通告 ID 遵循 NAMESPACE-YEAR-NUMBER 模式。NAMESPACE 的可能值范围未定义,但包括 ALASALASCORRETTO8ALAS2023ALAS2ALASPYTHON3.8ALASUNBOUND-1.17YEAR 是创建通告的年份,NUMBER 是命名空间内的唯一整数。

虽然通告 ID 通常是顺序的并按更新发布顺序排列,但存在多种原因可能导致实际情况并非如此,因此不应假设这种情况。

将通告 ID 视为对每个 Amazon Linux 主要版本唯一的不透明字符串。

在 Amazon Linux 2 中,每个 Extra 在单独的 RPM 存储库中,通告元数据仅包含在相关的存储库中。一个存储库的通告不适用于另一个存储库。在 Amazon Linux 安全中心网站上,目前每个 Amazon Linux 主要版本都有一个通告列表,并未按存储库列表分开。

由于 AL2023 不使用 Extra 机制打包替代版本的程序包,目前只有两个 RPM 存储库,core 存储库和 livepatch 存储库,每个都有通告。livepatch 存储库用于 AL2023 上的内核实时修补

通告发布日期和通告更新日期

Amazon Linux 通告的通告发布日期表示安全更新首次在 RPM 存储库中公开发布的时间。修复方案发布至 RPM 存储库可供安装后,相关通告会立即在 Amazon Linux 安全中心网站发布。

通告更新日期表示在先前发布后向通告添加新信息的时间。

不应在 AL2023 版本号(例如 2023.6.20241031)和与该发布版本一起发布的通告的通告发布日期之间做任何假设。

通告类型

RPM 存储库元数据支持不同类型的通告。虽然 Amazon Linux 几乎只发布安全更新的通告,但不应假设情况始终如此。可能发布用于错误修复、增强功能和新程序包等事件的通告,且通告标记为包含此类更新。

通告严重性

每份通告有自己的严重性,因为每个问题单独评估。多个 CVE 可能在一份通告中解决,每个 CVE 可能有不同的评估,但通告本身有一个严重性。可能有多份通告引用单个程序包更新,因此特定程序包更新可能有多个严重性(每份通告一个)。

按严重性递减顺序,Amazon Linux 使用严重、重要、中等和低来表示通告的严重性。Amazon Linux 通告也可能没有严重性,尽管这极其罕见。

Amazon Linux 是使用术语“中等”的基于 RPM 的 Linux 发行版之一,而其他一些基于 RPM 的 Linux 发行版使用等效术语“中”。Amazon Linux 程序包管理器将两个术语视为等效,且第三方程序包存储库可能使用术语“中”。

随着对通告中解决的相关问题了解更多,Amazon Linux 通告可以随时间改变严重性

通告的严重性将通常跟踪通告引用的 CVE 的 Amazon Linux 评估的最高 CVSS 分数。在某些情况下可能不是这样。例如,某些已修复但未分配 CVE 编号的问题便会采用此种处理方式。

更多关于 Amazon Linux 如何使用通告严重性评级的信息,请参阅 ALAS 常见问题解答

通告和程序包

单个程序包可能有多份通告,且并非所有程序包都会有通告发布。特定程序包版本可以在多份通告中引用,每份通告都有自己的严重性和 CVE。

可能在一个 AL2023 新版本中同时或快速连续发布同一程序包更新的多份通告。

像其他 Linux 发行版一样,从一个源程序包可以构建一个到多个不同的二进制程序包。例如,ALAS-2024-698 是列在 Amazon Linux 安全中心网站 AL2023 部分的通告,适用于 mariadb105 程序包。这是程序包名称,通告本身引用二进制程序包以及源程序包。在这种情况下,从一个 mariadb105 源程序包构建了十几个二进制程序包。虽然通常有一个与源程序包同名的二进制程序包,但这并不普遍。

虽然 Amazon Linux 通告通常列出从更新的源程序包构建的所有二进制程序包,但不应假设情况始终如此。程序包管理器和 RPM 存储库元数据格式允许通告列出更新的二进制程序包子集。

特定通告也可能仅适用于特定 CPU 架构。有些程序包可能不是为所有架构构建的,也可能存在不影响所有架构的问题。在程序包在所有架构上可用但问题仅适用于一个架构的情况下,Amazon Linux 通常不会发布仅引用受影响架构的通告,尽管不应假设情况始终如此。

由于程序包依赖关系的性质,通常通告引用一个程序包,但安装该更新需要其他程序包更新,包括未在通告中列出的程序包。dnf 程序包管理器将处理安装所需的依赖项。

通告和 CVE

一份通告可能涉及零个或多个 CVE,且可能有多份通告引用同一 CVE。

通告可能引用零个 CVE 的例子是当问题尚未(或从未)分配 CVE 时。

多份通告可能引用同一 CVE 的例子是当 CVE 适用于多个程序包时。例如,CVE-2024-21208 适用于 Corretto 8、11、17 和 21。这些 Corretto 版本每个都是 AL2023 中的单独程序包,且每个程序包都有一份通告:ALAS-2024-754 适用于 Corretto 8,ALAS-2024-753 适用于 Corretto 11,ALAS-2024-752 适用于 Corretto 17 以及 ALAS-2024-752 适用于 Corretto 21。虽然这些 Corretto 版本都有相同的 CVE 列表,但不应假设情况始终如此。

对于不同的程序包,可以对特定 CVE 进行不同的评估。例如,如果特定 CVE 在通告中以“重要”严重性引用,可能发布另一份通告引用同一 CVE 但严重性不同。

RPM 存储库元数据允许列出每份通告的参考文献。虽然 Amazon Linux 通常仅引用 CVE,但元数据格式允许其他参考类型。

RPM 程序包存储库元数据仅引用有可用修复程序的 CVE。Amazon Linux 安全中心的 Explore 部分网站包含 Amazon Linux 已评估的 CVE 信息。此评估可能导致针对各种 Amazon Linux 版本和程序包的 CVSS 基本分数、严重性和状态。特定 Amazon Linux 版本或程序包的 CVE 状态可能为“不受影响”、“待修复”或“无修复计划”。CVE 的状态和评估可能在通告发布前多次更改,且以任何方式更改。这包括重新评估 CVE 对 Amazon Linux 的适用性。

通告引用的 CVE 列表可能在通告首次发布后更改。

通告文本

通告还将包含描述导致创建通告的问题的文本。通常此文本是未修改的 CVE 文本。此文本可能引用上游版本号,其中修复程序可用,与 Amazon Linux 已应用修复程序的程序包版本不同。通常 Amazon Linux 会从较新的上游版本回溯修复程序。在通告文本提及的上游版本与 Amazon Linux 版本中提供的版本不同的情况下,通告中的 Amazon Linux 程序包版本对于 Amazon Linux 来说将是准确的。

RPM 存储库元数据中的通告文本可能是占位符文本,详情请访问 Amazon Linux 安全中心网站。

内核实时补丁通告

实时补丁通告的独特之处在于它们引用不同的程序包(Linux 内核)而不是通告针对的程序包(例如 kernel-livepatch-6.1.15-28.43)。

内核实时补丁通告将引用特定实时补丁程序包可以针对特定内核版本解决的问题(例如 CVE)。

每个实时补丁都适用于特定内核版本。为了应用 CVE 的实时补丁,需要安装适用于您内核版本的正确实时补丁程序包,并应用实时补丁。

例如,CVE-2023-6111 可以为 AL2023 内核版本 6.1.56-82.1256.1.59-84.1396.1.61-85.141 进行实时修补。还发布了包含此 CVE 修复程序的新内核版本,并有单独的通告。为了在 AL2023 上解决 CVE-2023-6111 问题,需要运行等于或高于 ALAS2023-2023-461 指定的内核版本,或需要运行具有此 CVE 实时补丁的内核版本之一并应用适用的实时补丁。

当有新的实时补丁可用于特定内核版本时(该版本已有实时补丁可用),会发布新版本的 kernel-livepatch-KERNEL_VERSION 程序包。例如,ALASLIVEPATCH-2023-003 通告随 kernel-livepatch-6.1.15-28.43-1.0-1.amzn2023 程序包一同发布,该程序包包含针对 6.1.15-28.43 内核的实时补丁,覆盖了三个 CVE。随后,ALASLIVEPATCH-2023-009 通告随 kernel-livepatch-6.1.15-28.43-1.0-2.amzn2023 程序包发布;这是针对 6.1.15-28.43 内核的先前实时补丁程序包的更新,包含了另外三个 CVE 的实时补丁。还有其他针对其他内核版本的实时补丁通告问题,程序包中包含针对那些特定内核版本的实时补丁。

更多关于内核实时补丁的信息,请参阅 AL2023 上的内核实时修补

对于任何围绕安全通告开发工具的人员,还建议查看 通告和 updateinfo.xml 的 XML 模式 部分以获取更多信息。

通告和 updateinfo.xml 的 XML 模式

updateinfo.xml 文件是程序包存储库格式的一部分。它是 dnf 程序包管理器解析以实现功能(如 列出适用的通告原地应用安全更新)的元数据。

我们建议使用 dnf 程序包管理器的 API,而不是编写自定义代码来解析存储库元数据格式。AL2023 中的 dnf 版本可以解析 AL2023 和 AL2 存储库格式,因此 API 可用于检查任一操作系统版本的通告信息。

RPM 软件管理项目在 GitHub 上的 rpm-metadata 存储库中记录了 RPM 元数据格式。

对于围绕直接解析 updateinfo.xml 元数据开发工具的人员,强烈建议仔细关注 rpm-metadata 文档。该文档涵盖了实际应用中遇到的情况,其中包含许多可能被您合理理解为元数据格式规则的例外情况。

GitHub 上的 raw-historical-rpm-repository-examples 存储库中也提供了越来越多的实际 updateinfo.xml 文件示例。

如果文档中任何内容不清楚,您可以在 GitHub 项目上提出问题,这样我们就可以回答问题并适当更新文档。作为开源项目,我们也欢迎通过拉取请求来贡献文档更新。