Cisco Talos的安全研究人员揭露,E2fsprogs文件系统实用程序中存在一个越界写入漏洞,可导致远程代码执行。
E2fsprogs是一系列设计用于与ext2,ext3和ext4文件系统交互的实用程序。该软件被视为Linux和类Unix操作系统的基本要素,默认情况下,在大部分的Linux发行版本上都安装了该软件。
e2fsck二进制文件是E2fsprogs中的一个组件,该文件用于修复损坏的文件系统。CiscoTalos的安全研究人员发现该文件中包含一个越界写入漏洞。
ext2,ext3和ext4中目录的实现需要使用哈希树在目录中对文件进行唯一映射。哈希树的哈希条目包含在hash_entry结构体中,而哈希条目的数目则包含在num_array中。
Talos表示,要维持哈希表的完整性和假设,所有的条目都应是唯一的,要求根据副本的数量,在与{~0,~1, ..., ~n}发生冲突时附加第二个文件名称,执行e2fsck文件。
为了随后将变异的名称写入磁盘,程序使用了一个临时的栈缓冲区存储变异的名称,接着反复迭代每一个hash_entry结构体。当发生冲突时,当前文件名称的长度被提取出来,接着mutate_name函数被用于执行变化。
研究人员发现,该过程容易发生栈越界写入。该漏洞存在于E2fsprogse2fsck的rehash.c文件的mutate_name()函数中,可导致目录重哈希功能被滥用于执行代码。
攻击者可借助特制的ext4目录利用该漏洞执行代码。要触发该漏洞,攻击者需要损坏一个分区。
研究人员解释道,在64位系统上,漏洞被利用的可能性非常低,因为栈不够大,且要扩大栈需要一个用户控制的方法。另一方面,在32位版本上,最终结果更多地取决于该二进制文件本身以及文件的编译方式。
该漏洞的编号为CVE-2019-5188,CVSS评分为7.5。E2fsprogs1.43.3版本至1.45.3版本受到漏洞的影响。厂商已发布更新,修复了该漏洞。
本文源自Security Week,作者Ionut Arghire,译文略有改动,转载请注明出处。