CVE-2026-63808

exfat: fix potential use-after-free in exfat_find_dir_entry()

State
Published
Severity
9.8 Critical
Published
Jul 19, 2026
Updated
Oct 19, 2026
Reserved
Jul 19, 2026

Read the record on cve.org

Description

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

exfat: fix potential use-after-free in exfat_find_dir_entry()

In exfat_find_dir_entry(), the buffer_head obtained from exfat_get_dentry() is released with brelse(bh) before the fall-through TYPE_EXTEND branch reads the directory entry through ep (which points into bh->b_data):

brelse(bh); if (entry_type == TYPE_EXTEND) { ... len = exfat_extract_uni_name(ep, entry_uniname); ... }

After brelse() drops our reference, nothing guarantees that the underlying page backing bh->b_data remains valid for the subsequent exfat_extract_uni_name() read. This is the same pattern fixed in commit fc961522ddbd ("exfat: Fix potential use after free in exfat_load_upcase_table()").

Move brelse(bh) so it runs after ep is no longer dereferenced on each branch.

Confirmed on QEMU x86_64 with CONFIG_KASAN=y + CONFIG_DEBUG_PAGEALLOC=y + CONFIG_PAGE_POISONING=y on linux-next, using a crafted exFAT image (long filename with same-hash collisions forcing the TYPE_EXTEND path). With a debug-only invalidate_bdev() inserted between brelse(bh) and the ep read to make the stale-deref window deterministic, the unpatched kernel faults:

BUG: KASAN: use-after-free in exfat_find_dir_entry+0x133b/0x15a0 BUG: unable to handle page fault for address: ffff88801a5fa0c2 Oops: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN NOPTI RIP: 0010:exfat_find_dir_entry+0x1188/0x15a0

With this patch applied, the same instrumented harness completes cleanly under the same sanitizer stack. I have not reproduced a crash on an uninstrumented kernel under ordinary reclaim; the instrumented A/B establishes the lifetime violation and that the patch closes it, not an unaided triggerability claim.

Scores

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

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before e6f1a11cfb808441a43ffae9b476cc135732cd27Affected
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before e48f413c2815787b8cade2795e194e3c4cd782efAffected
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before 06c4e1e9967d332ac33ba38b7819851089ff9359Affected
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before 8e0abc17fbd7e305802e84fe98b4950d50f9c433Affected
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before 4d101016d5e587f820b3ae2d5bb6770d86342649Affected
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before adfacfbaeae2cb760f492357cc36b41f84ef7f86Affected
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before 708b97e792945d3e4653939fd3405d71a61ad065Affected
  • ca06197382bde0a3bc20215595d1c9ce20c6e341 to before 3f5f8ee9917cc2b9076ac533492d8a200edcabb8Affected
LinuxLinux
  • 5.7Affected
  • before 5.7Not affected
  • 5.10.260 through 5.10.*Not affected
  • 5.15.211 through 5.15.*Not affected
  • 6.1.177 through 6.1.*Not affected
  • 6.6.144 through 6.6.*Not affected
  • 6.12.95 through 6.12.*Not affected
  • 6.18.38 through 6.18.*Not affected
  • 7.1.3 through 7.1.*Not affected
  • 7.2 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.