RHSB-2021-006 内核和 systemd 的挂载点中的长路径名中存在安全漏洞(CVE-2021-33909、CVE-2021-33910)

Public Date: July 8, 2021, 11:28
已更新 September 3, 2021, 12:40 - English(英语) French Japanese Korean
Resolved 状态
Important Impact

Insights vulnerability analysis

View exposed systems

红帽已了解到,因为错误地处理长路径名所造成的两个安全漏洞。第一个漏洞在 Linux 内核中发现。利用这个漏洞,一个本地攻击者可以升级其权限。这个漏洞已被分配为 CVE-2021-33909。第二个漏洞存在于 systemd 中,一个本地攻击者可以利用这个漏洞使 systemd 以及整个系统崩溃。这个漏洞已被分配为 CVE-2021-33910

这两个漏洞的严重性影响级别为重要(Important)

以下红帽产品版本直接受到 CVE-2021-33909 的影响:

  • Red Hat Enterprise Linux 8

  • Red Hat Enterprise Linux 7

  • Red Hat Enterprise Linux 6

以下红帽产品版本直接受到 CVE-2021-33910 的影响:

  • Red Hat Enterprise Linux 8

此外,在 Red Hat Enterprise Linux(包括 RHEL CoreOS)上支持的任何红帽产品都有可能会受到影响。这包括:

  • 基于 RHEL 或 UBI 容器镜像的产品容器。基本镜像将被更新以包含针对此漏洞的修复程序,请确保容器是最新的。Container Health Index(Red Hat Container Catalog 的一部分)可以用来检查红帽容器的安全状态。

  • 从 RHEL 频道拉取软件包的产品(包括层次产品,如 OpenShift Container Platform、OpenStack 和 Red Hat Virtualization 等)。请确定这些产品环境中,底层的 RHEL 内核和 systemd 软件包是最新的。

请参照下面的诊断部分的内容,检查您的系统当前是否存在这些安全漏洞。

这两个安全漏洞都利用了错误处理带有长路径的文件的问题。

第一个漏洞(CVE-2021-33909)可被用来对 Linux 内核进行攻击。一个没有特权的本地攻击者可以通过创建、挂载和删除总路径长度超过 1GB 的深度目录结构来利用此漏洞。成功的攻击可以导致特权升级。

第二个漏洞(CVE-2021-33910)可以用来对 systemd(系统和服务管理器)进行攻击。为了利用这个漏洞,一个本地的攻击者需要可以使用长路径挂载文件系统。此攻击会导致 systemd、它管理的服务以及整个系统崩溃并停止响应。

红帽已调查了这个问题是否存在可能的缓解方案,目前还没找到实际可行的方案。请尽快更新受影响的软件包。

研究人员报告了以下两个漏洞:以下概述了每个漏洞及其影响。 

CVE-2021-33909

在 Linux 内核 Filesystem 层的 seq_file 中发现了一个越界写入(out-of-bounds write)的安全漏洞。一个只具有一般用户权限的本地攻击者,可以利用此漏洞访问越界的内存,从而导致系统崩溃或内部内核信息被泄漏。造成这个问题的原因是,在执行操作前没有验证 size_t-to-int 转换。 

这个漏洞是 Linux 内核的文件系统层中的一个类型转换漏洞。类型转换漏洞是在进行两种类型之间的转换时存在的一个问题,它可能会导致溢出,从而产生一个很大的负值。

为了利用这个漏洞,攻击者需要可以:

  • 创建一个长路径

  • 在该位置挂载一个文件系统

  • 删除挂载点

  • 可以读取 /proc/<pid>/mountinfo 文件

此问题会被触发,结果是可以使用可控制偏移来写入内核内存。

mountinfo 文件是一个 seq_file 的示例,它是一个虚拟文件,内核通过该文件来代表一系列记录。每个记录必须位于 seq_file 缓冲区中,该缓冲区的大小使用 size_t(一个 64 位的 unsigned 值)来跟踪。当 show_mountinfo 函数中使用很长的挂载点路径时,就会出现问题。  

这个过程需要一个 int 值作为缓冲区长度(一个 32 位的 signed 值),如下所示: 

show_mountinfo() -> seq_dentry() -> dentry_path((.. , .. , int buflen) 

请注意,"buflen" 可能会导致 size_t-to-int 转换问题,它会将数值转换成一个负值,并可以在随后造成越界访问的安全问题。     

当挂载点仍在使用但路径已被删除时,会使用错误计算的值作为偏移,在分配的缓冲区外写入字符串 "///deleted"。由于该值为负数,因此它会写入到预期缓冲区位置之前的 10 个字节和 2GB 之间的位置。

针对于特定的内存位置,使用这个偏移位置写入可以导致拒绝服务(DoS)、系统崩溃、内存数据损坏或特权升级问题。

CVE-2021-33910

systemd 中发现了一个漏洞。当在 unit_name_path_escape 中使用一个没有大小控制的 alloca 功能时,本地攻击者可以通过在堆栈中分配一个非常大的空间,在一个非常长的路径上挂载文件系统,从而使 systemd 和整个系统崩溃。

这是一个在 systemd 中受攻击者控制的 alloca(),攻击者可以利用它使 systemd 服务 (PID 1) 和整个系统崩溃。alloca() 用于分配堆栈上程序所需的空间。当请求的大小由用户控制,或者太大时,不应使用它。否则程序可能会在分配的堆栈空间外进行写入操作并使系统崩溃。 

systemd 持续监控 /proc/self/mountinfo 文件,以获取有关挂载的文件系统的详细信息,并使用 alloca() 在内部复制挂载点字符串。如果攻击者可以在非常长的路径上挂载文件系统(例如,使用 FUSE),则攻击者可能会触发此问题并导致系统崩溃。

此问题不会影响 Red Hat Enterprise Linux 7 附带的 systemd 版本。因为它们不使用 strdupa()(使用 alloca() 来复制 unit_name_path_escape() 功能中的字符串)而是使用 strdup()(在堆上分配空间)。


CVE-2021-33909 (kernel)

Important(重要)

CVE-2021-33910 (systemd)

Important(重要)

Red Hat Enterprise Linux 8

受影响 - 所有被维护的版本都会提供相关修复。  

受影响 - 所有被维护的版本都会提供相关修复。  

Red Hat Enterprise Linux 7

受影响 - 所有被维护的版本都会提供相关修复。  

不受影响

Red Hat Enterprise Linux 6

受影响 - 所有被维护的版本都会提供相关修复。  

不受影响

我们强烈建议,所有运行受影响版本的红帽产品的用户,在相关勘误可用后尽快进行更新。用户应立即应用可用的更新并根据需要启用缓解措施。  

产品

组件

公告/更新 [1]

Red Hat Enterprise Linux 8 

kernel

RHSA-2021:2714


kernel-rt

RHSA-2021:2715


kpatch

RHSA-2021:2716


systemd

RHSA-2021:2717

Red Hat Enterprise Linux 8.2.0 延长更新支持 [2]

kernel

RHSA-2021:2718


kernel-rt

RHSA-2021:2719


kpatch

RHSA-2021:2720


systemd

RHSA-2021:2721

Red Hat Enterprise Linux 8.1.0 延长更新支持 [2]

kernel

RHSA-2021:2722


kpatch

RHSA-2021:2723


systemd

RHSA-2021:2724

Red Hat Enterprise Linux 7

kernel

RHSA-2021:2725


kernel-rt

RHSA-2021:2726


kpatch

RHSA-2021:2727

Red Hat Enterprise Linux 7.7 延长更新支持(EUS)[2]

kernel

RHSA-2021:2728


kpatch

RHSA-2021:2729

Red Hat Enterprise Linux 7.6 延长更新支持(EUS)[2]

kernel

RHSA-2021:2730


kpatch

RHSA-2021:2731

Red Hat Enterprise Linux 7.4 Update Services for SAP Solutions, Advanced Update Support [3],[4]


kernel

RHSA-2021:2732

Red Hat Enterprise Linux 7.3 Advanced Update Support [4]


kernel

RHSA-2021:2733


Red Hat Enterprise Linux 7.2 Advanced Update Support [4]


kernel

RHSA-2021:2734

Red Hat Enterprise Linux 6 Extended Life-cycle Support [5]

kernel

RHSA-2021:2735

Red Hat Virtualization 4 for Red Hat Enterprise Linux 8

redhat-virtualization-host

RHSA-2021:2736

Red Hat Virtualization 4 for Red Hat Enterprise Linux 7

redhat-virtualization-host

RHSA-2021:2737



[1] 公告/更新链接将在更新发布后添加。

[2] 什么是 Red Hat Enterprise Linux Extended Update Support (EUS) 订阅?

[3] 什么是 Advanced mission critical Update Support (AUS)?

[4] 什么是 Red Hat Enterprise Linux SAP Solutions 订阅?

[5] 访问此修补程序需要一个有效的延长生命周期支持(ELS)订阅。如果您的帐户并没有包括有效的 ELS 订阅,请联系红帽销售部门或您的销售代表以获取更多信息。

一个安全漏洞检测脚本已被开发,用来检查您的系统当前是否存在相关的安全漏洞。您可以下载 GPG 签名来验证脚本的真实性。红帽客户门户网站上提供了有关如何使用GPG签名进行验证的说明。 

当前版本:1.0

Comments