CVE-2024-42304

CVE-2024-42304

High · published August 17, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
13.5
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

ext4: make sure the first directory block is not a hole

The syzbot constructs a directory that has no dirblock but is non-inline,

i.e. the first directory block is a hole. And no errors are reported when

creating files in this directory in the following flow.

ext4_mknod

...

ext4_add_entry

// Read block 0

ext4_read_dirblock(dir, block, DIRENT)

bh = ext4_bread(NULL, inode, block, 0)

if (!bh && (type == INDEX || type == DIRENT_HTREE))

// The first directory block is a hole

// But type == DIRENT, so no error is reported.

After that, we get a directory block without '.' and '..' but with a valid

dentry. This may cause some code that relies on dot or dotdot (such as

make_indexed_dir()) to crash.

Therefore when ext4_read_dirblock() finds that the first directory block

is a hole report that the filesystem is corrupted and return an error to

avoid loading corrupted data from disk causing something bad.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00234 · 13.5th percentile
Published
2024-08-17T13:15Z
Affected products (10)
ProductVersionsFixed in
linux/linux_kernel≥ 4.9.187, < 4.104.10
linux/linux_kernel≥ 4.14.135, < 4.154.15
linux/linux_kernel≥ 4.19.62, < 4.19.3204.19.320
linux/linux_kernel≥ 5.1.21, < 5.25.2
linux/linux_kernel≥ 5.2.4, < 5.4.2825.4.282
linux/linux_kernel≥ 5.5, < 5.10.2245.10.224
linux/linux_kernel≥ 5.11, < 5.15.1655.15.165
linux/linux_kernel≥ 5.16, < 6.1.1036.1.103
linux/linux_kernel≥ 6.2, < 6.6.446.6.44
linux/linux_kernel≥ 6.7, < 6.10.36.10.3
References (11)
EPSS history
Timeline
  • 17 AUG 09:09Z
    ext4: make sure the first directory block is not a hole
    cvelistv5