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(スラブ領域外)読み込みを引き起こします:
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の参照は、エントリが拒否される前に実行されてしまいます。
合成direntヘッダの最小サイズがextra_size内に収まらない位置を、deを形成する前に(再スキャンループとメインループの両方で)拒否し、ext4_check_dir_entry()にはextra_sizeではなくinline_sizeを渡すことで、長さチェックが物理的なバッファと一致するようにします。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.