CVE-2024-42304 ext4: make sure the first directory block is not a hole
A crafted ext4 filesystem with a hole in the first directory block can cause a kernel crash due to missing error handling.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2024-42304?
CVE-2024-42304 is a high-severity vulnerability in Linux kernel, published on 17 Aug 2024. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
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.
Which versions are affected by CVE-2024-42304?
It affects 1 product.
Products include Linux kernel.
How do I fix CVE-2024-42304?
Apply the vendor's patch.
Is CVE-2024-42304 being exploited?
There is no known exploitation of CVE-2024-42304 in the wild and no public exploit code.
Other vulnerabilities in Linux kernel
Sources
Also known as BELL-CVE-2024-42304, DEBIAN-CVE-2024-42304, GHSA-v546-2fcj-rwvx, UBUNTU-CVE-2024-42304.