Lucene search

K
vulnrichmentLinuxVULNRICHMENT:CVE-2024-42304
HistoryAug 17, 2024 - 9:09 a.m.

CVE-2024-42304 ext4: make sure the first directory block is not a hole

2024-08-1709:09:10
Linux
github.com
3
linux kernel
vulnerability
ext4 file system
directory block hole
syzbot
ext4_mknod
ext4_add_entry
ext4_read_dirblock
filesystem corruption
dentry
make_indexed_dir
disk error
cve-2024-42304

AI Score

6.9

Confidence

Low

SSVC

Exploitation

none

Automatable

no

Technical Impact

partial

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.

AI Score

6.9

Confidence

Low

SSVC

Exploitation

none

Automatable

no

Technical Impact

partial