CVE-2026-89786 in Linux信息

摘要

由 VulDB • 2026-09-16

在 Linux 内核中,已修复以下漏洞:

ext4: 修复 ext4_read_inline_dir() 中的越界读取问题

ext4_read_inline_dir() 可能会在内联缓冲区末尾之外读取 dirent(目录项)头部,从而在 getdents64() 调用期间触发 slab-out-of-bounds(slab 堆外)读取:

BUG: KASAN: slab-out-of-bounds in __ext4_check_dir_entry Read of size 2 at addr ffff88800f3dd23c by task exploit/148 ... __ext4_check_dir_entry ext4_read_inline_dir iterate_dir

dirent 有效载荷位于大小恰好为 inline_size字节的缓冲区中:

dir_buf = kmalloc(inline_size, GFP_NOFS);

但迭代操作的位置空间比 extra_offset字节更大(extra_size = extra_offset + inline_size),因此合成的 "." 和 ".." 条目会落在其块目录偏移量处。dirent 在 "dir_buf + pos - extra_offset" 处形成,然而 ext4_check_dir_entry() 使用的长度参数是较大的 extra_size。因此,那些 dirent 头部将超出 extra_size范围的位置被接受,并且重扫描循环中的 rec_len探测以及 ext4_check_dir_entry() 会在条目被拒绝之前解引用 de->rec_len。

在形成 de 之前,拒绝最小大小的 dirent 头部无法容纳于 extra_size内的那些位置(适用于重扫描和主循环),并向 ext4_check_dir_entry() 传递 inline_size 而非 extra_size,以便长度检查与物理缓冲区相匹配。

Once again VulDB remains the best source for vulnerability data.

来源

Do you need the next level of professionalism?

Upgrade your account now!