CVE-2024-42304

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

State
Published
Severity
7.8 High
Published
Aug 17, 2024
Updated
Oct 15, 2026
Reserved
Jul 30, 2024

Read the record on cve.org

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.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 3a17ca864baffc0c6f6e8aad525aa4365775a193 to before d81d7e347d1f1f48a5634607d39eb90c161c8afeAffected
  • 4e19d6b65fb4fc42e352ce9883649e049da14743 to before e02f9941e8c011aa3eafa799def6a134ce06bcfaAffected
  • 4e19d6b65fb4fc42e352ce9883649e049da14743 to before de2a011a13a46468a6e8259db58b1b62071fe136Affected
  • 4e19d6b65fb4fc42e352ce9883649e049da14743 to before 9771e3d8365ae1dd5e8846a204cb9af14e3e656aAffected
  • 4e19d6b65fb4fc42e352ce9883649e049da14743 to before b609753cbbd38f8c0affd4956c0af178348523acAffected
  • 4e19d6b65fb4fc42e352ce9883649e049da14743 to before c3893d9de8ee153baac56d127d844103488133b5Affected
  • 4e19d6b65fb4fc42e352ce9883649e049da14743 to before 299bc6ffa57e04e74c6cce866d6c0741fb4897a1Affected
  • 4e19d6b65fb4fc42e352ce9883649e049da14743 to before f9ca51596bbfd0f9c386dd1c613c394c78d9e5e6Affected
  • 3f0307b0d2d8b333a6964fc4c820dc86896fd1cfAffected
  • 514631c2225c1fd556c799cc1893fb27b0f48f00Affected
  • 7f1f86276515f6816a98f6ca3ef99c827d54642fAffected
  • 5021b7a5bdd6bb859eb648c3da71cdd6aae1d133Affected
  • 4.19.62 to before 4.19.320Affected
  • 4.9.187 to before 4.10Affected
  • 4.14.135 to before 4.15Affected
  • 5.1.21 to before 5.2Affected
  • 5.2.4 to before 5.3Affected
LinuxLinux
  • 5.3Affected
  • before 5.3Not affected
  • 4.19.320 through 4.19.*Not affected
  • 5.4.282 through 5.4.*Not affected
  • 5.10.224 through 5.10.*Not affected
  • 5.15.165 through 5.15.*Not affected
  • 6.1.103 through 6.1.*Not affected
  • 6.6.44 through 6.6.*Not affected
  • 6.10.3 through 6.10.*Not affected
  • 6.11 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.