CVE-2026-64296 in Linux
Sumário
de VulDB • 25/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
exfat: limitar o avanço de uniname em exfat_find_dir_entry()
Em exfat_find_dir_entry(), cada entrada TYPE_EXTEND (nome de arquivo) avança o ponteiro de saída por uma quantidade fixa, enquanto a condição de parada do loop rastreia apenas o comprimento acumulado do nome:
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;
O ponteiro uniname cresce em EXFAT_FILE_NAME_LEN (15) por entrada de nome, mas name_len cresce apenas pelo comprimento extraído real, que é menor quando um fragmento do nome contém um NUL inicial. A única condição de parada é `name_len >= MAX_NAME_LENGTH`, portanto, um diretório elaborado com muitos fragmentos de nome curtos permite que uniname avance muito além do buffer p_uniname->name[MAX_NAME_LENGTH + 3], enquanto name_len permanece pequeno, causando uma leitura e escrita fora dos limites em *(uniname+len).
O extrator irmão exfat_get_uniname_from_ext_entry() já para em um fragmento curto (a condição de parada `len != EXFAT_FILE_NAME_LEN` adicionada no commit d42334578eba ("exfat: verificar se as entradas do nome do arquivo excedem o comprimento máximo do nome")); a função exfat_find_dir_entry() nunca recebeu essa correção equivalente. Rastreie o deslocamento de escrita por entrada como uma contagem e rejeite um fragmento assim que o deslocamento, ou o deslocamento mais o comprimento extraído, ultrapassar MAX_NAME_LENGTH, antes de formar o ponteiro de saída.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.