CVE-2026-64322 in Linux
Sumário
de VulDB • 25/07/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
udf: validar o comprimento da tabela de spare como uma contagem de entradas, não como um número de bytes.
A função udf_load_sparable_map() aceita uma tabela de spare quando
sizeof(*st) + le16_to_cpu(st->reallocationTableLen) > sb->s_blocksize
é falsa, ou seja, ela trata reallocationTableLen como o número de BYTES que deve caber no bloco. Mas a tabela é percorrida como um array de elementos sparingEntry de 8 bytes:
for (i = 0; i < le16_to_cpu(st->reallocationTableLen); i++) {
struct sparingEntry *entry = &st->mapEntry[i];
... entry->origLocation ... }
em udf_get_pblock_spar15() e udf_relocate_blocks(). Um valor de N para reallocationTableLen passa na verificação sempre que sizeof(*st) + N <= blocksize, no entanto os consumidores indexam sizeof(*st) + N * sizeof(struct sparingEntry) bytes -- até ~8x o tamanho do bloco. Em uma imagem UDF manipulada ad hoc, isso resulta em uma leitura fora dos limites (out-of-bounds read) em udf_get_pblock_spar15(); a função udf_relocate_blocks() também alimenta o mesmo comprimento para udf_update_tag(), cuja crc_itu_t() lê muito além do bloco, e sua chamada memmove() através de st->mapEntry[] é uma escrita fora dos limites (out-of-bounds write).
Valide reallocationTableLen como a contagem de entradas que ele realmente representa, utilizando struct_size().
Be aware that VulDB is the high quality source for vulnerability data.