-

CVE-2026-89787

ext4: check dir entry fits before reading the hash trailer in ext4_search_dir()

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

ext4: check dir entry fits before reading the hash trailer in ext4_search_dir()

For casefolded encrypted directories ext4 stores an 8-byte hash trailer
after the name (EXT4_DIRENT_HASHES()), at an offset derived from
de->name_len.  On the sb_no_casefold_compat_fallback() path ext4_match()
reads that trailer, but ext4_search_dir()'s by-hand pre-check only tests
de->name + de->name_len <= dlimit, which proves the name fits, not the
rounded trailer.  A crafted entry whose name ends at the block boundary
passes the check while EXT4_DIRENT_HASHES(de) lands past the block end,
so ext4_match() reads out of bounds on an ordinary lookup.  KASAN reports
it as a use-after-free when the page after the directory block holds a
freed object:

  BUG: KASAN: use-after-free in ext4_match (fs/ext4/namei.c:1435)
  Read of size 4 at addr ffff888010458000 by task exploit
  Call Trace:
   ext4_match (fs/ext4/namei.c:1435)
   ext4_search_dir (fs/ext4/namei.c:1470)
   __ext4_find_entry (fs/ext4/namei.c:1268 fs/ext4/namei.c:1632)
   ext4_lookup (fs/ext4/namei.c:1703 fs/ext4/namei.c:1769)
   ...
   filename_lookup (fs/namei.c:2842)
   vfs_statx (fs/stat.c:353)
   __do_sys_newfstatat (fs/stat.c:538)
   do_syscall_64 (arch/x86/entry/syscall_64.c:94)
   entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)

Require, for hash-in-dirent directories, that the whole entry including
the rounded trailer fits before calling ext4_match().  This is the same
bound ext4_check_dir_entry() already enforces via ext4_dir_rec_len(), so
no well-formed entry is rejected.  The other caller, ext4_find_dest_de(),
runs ext4_check_dir_entry() first and is unaffected.
Daten sind bereitgestellt durch das CVE Programm von einer CVE Numbering Authority (CNA) (Unstrukturiert).
HerstellerLinux
≫
Produkt Linux
Default Statusunaffected
Version 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
Version < 4d20106c536b73c4a8a02652dc85e35898baebf7
Status affected
Version 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
Version < 61a395967de06edba58760e81907a272db749faa
Status affected
Version 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
Version < e94676a08af6312aa72d8a981232b281f9bcfcf5
Status affected
Version 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
Version < d8c184bec24b5a00ae96d704856d935eaded1685
Status affected
Version 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
Version < 3933884bc3102898b458c53fbd1ac52eb9cdb8a4
Status affected
Version 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
Version < 83663c0b739480c00cfe785675db87520ec484ed
Status affected
Version 471fbbea7ff7061b2d6474665cb5a2ceb4fd6500
Version < c7e6b863d298f56522d0d08554bbea7f142e6588
Status affected
HerstellerLinux
≫
Produkt Linux
Default Statusaffected
Version 5.13
Status affected
Version 0
Version < 5.13
Status unaffected
Version <= 5.15.*
Version 5.15.221
Status unaffected
Version <= 6.1.*
Version 6.1.188
Status unaffected
Version <= 6.6.*
Version 6.6.157
Status unaffected
Version <= 6.12.*
Version 6.12.110
Status unaffected
Version <= 6.18.*
Version 6.18.52
Status unaffected
Version <= 7.2.*
Version 7.2.6
Status unaffected
Version <= *
Version 7.3-rc1
Status unaffected
VulnDex Vulnerability Enrichment
Diese Information steht angemeldeten Benutzern zur Verfügung. Login Login
Zu dieser CVE wurde keine Warnung gefunden.
EPSS Metriken
Typ Quelle Score Percentile
EPSS FIRST.org 0.21% 0.108
CVSS Metriken
Quelle Base Score Exploit Score Impact Score Vector String
Es wurden noch keine Informationen zu CWE veröffentlicht.
https://git.kernel.org/stable/c/4d20106c536b73c4a8a02652dc85e35898baebf7
https://git.kernel.org/stable/c/61a395967de06edba58760e81907a272db749faa
https://git.kernel.org/stable/c/e94676a08af6312aa72d8a981232b281f9bcfcf5
https://git.kernel.org/stable/c/d8c184bec24b5a00ae96d704856d935eaded1685
https://git.kernel.org/stable/c/3933884bc3102898b458c53fbd1ac52eb9cdb8a4
https://git.kernel.org/stable/c/83663c0b739480c00cfe785675db87520ec484ed
https://git.kernel.org/stable/c/c7e6b863d298f56522d0d08554bbea7f142e6588