处理特殊设计的目录时 e2fsck 中的漏洞

在作为包的一部分提供的 e2fsck 实用程序中 e2fsprogs, 已确定 漏洞 (CVE-2019-5188),它允许您在检查包含特殊设计目录的文件系统时执行攻击者的代码。该漏洞在版本 1.43.3 至 1.45.4 中得到确认。更新中修复了漏洞 e2fsck 1.45.5。在分发套件中,该问题仍未得到纠正(Debian, Arch Linux, SUSE/开放SUSE, Ubuntu, RHEL).

该漏洞是由 rehash.c 文件中的 mutate_name() 函数中的错误引起的,该函数在重建与目录关联的哈希表时使用,以确保该目录中的所有文件都与该目录匹配。与目录关联的 hash_entry 结构的损坏可能会导致攻击者将数据写入分配的缓冲区之外的区域。如果哈希表中将多个同名文件标识为链接到某个目录,则 e2fsck 实用程序会通过在名称中添加 ~0、~1 等来重命名重复文件。为了在重命名期间临时存储新名称,在堆栈上分配了 256 字节大小的缓冲区。

要复制的数据的大小由表达式“entry->name_len & 0xff”确定,但entry->name_len的值是从磁盘上的结构加载的,而不是根据名称的实际大小计算的。如果大小为零,则数组索引的值为 -1,并创建整数溢出缓冲区下边界(整数下溢)的条件,并用值“~0”覆盖堆栈上的其他数据。对于 64 位系统,该漏洞的利用被评估为不太可能,并且不需要对堆栈大小进行限制(ulimit -s unlimited)。对于 32 位系统,利用被认为是可能的,但结果很大程度上取决于编译器如何编译可执行文件。

为了进行攻击,攻击者需要以某种方式破坏具有 ext2、ext3 或 ext4 文件系统的分区中的数据。由于此操作需要超级用户权限,因此当 e2fsck 实用程序扫描外部驱动器或外部接收的 FS 映像时,该漏洞会构成威胁。

来源: opennet.ru

添加评论