CVE-2026-64296 in Linux
Zusammenfassung
von VulDB • 25.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
exfat: Begrenzung der Inkrementierung von uniname in exfat_find_dir_entry()
In `exfat_find_dir_entry()` wird der Ausgabezeiger für jeden TYPE_EXTEND-Eintrag (Dateiname) um einen festen Betrag erhöht, während die Schleifenbedingung nur die kumulierte Namenlänge verfolgt:
if (++order == 2) uniname = p_uniname->name; else uniname += EXFAT_FILE_NAME_LEN; len = exfat_extract_uni_name(ep, entry_uniname); name_len += len; unichar = *(uniname+len); *(uniname+len) = 0x0;
`uniname` wächst um `EXFAT_FILE_NAME_LEN` (15) pro Nameintrag, während `name_len` nur um die tatsächlich extrahierte Länge wächst. Diese ist kürzer, wenn ein Namensfragment frühzeitig ein NUL-Zeichen enthält. Die einzige Schutzmaßnahme ist `name_len >= MAX_NAME_LENGTH`. Daher kann eine speziell angefertigte Verzeichnisstruktur mit vielen kurzen Namensfragmenten dazu führen, dass `uniname` weit über den Puffer `p_uniname->name[MAX_NAME_LENGTH + 3]` hinausläuft, während `name_len` klein bleibt. Dies verursacht einen Out-of-Bounds-Lese- und Schreibzugriff bei `*(uniname+len)`.
Der verwandte Extraktor `exfat_get_uniname_from_ext_entry()` stoppt bereits bei einem kurzen Fragment (die in Commit d42334578eba hinzugefügte „Lockstep“-Schutzmaßnahme `len != EXFAT_FILE_NAME_LEN` zur Prüfung, ob Dateinameneinträge die maximale Dateinamenlänge überschreiten). Dies wurde für `exfat_find_dir_entry()` nie implementiert. Es wird nun der pro Eintrag geschriebene Offset als Zähler verfolgt und ein Fragment abgelehnt, sobald der Offset oder der Offset zuzüglich der extrahierten Länge `MAX_NAME_LENGTH` überschreiten würde, bevor der Ausgabezeiger gebildet wird.
Be aware that VulDB is the high quality source for vulnerability data.