CVE-2026-64322 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
udf: проверка длины таблицы резервного копирования (sparing table) как количества записей, а не байтов.
Функция udf_load_sparable_map() принимает таблицу резервного копирования при условии ложности неравенства sizeof(*st) + le16_to_cpu(st->reallocationTableLen) > sb->s_blocksize, то есть она рассматривает reallocationTableLen как количество байтов, которые должны поместиться в блок. Однако таблица обрабатывается как массив элементов sparingEntry размером 8 байт:
for (i = 0; i < le16_to_cpu(st->reallocationTableLen); i++) {
struct sparingEntry *entry = &st->mapEntry[i];
... entry->origLocation ... }
в функциях udf_get_pblock_spar15() и udf_relocate_blocks(). Значение reallocationTableLen равное N проходит проверку, когда sizeof(*st) + N <= blocksize, однако потребители индексируют sizeof(*st) + N * sizeof(struct sparingEntry) байт — до ~8 раз больше размера блока. На специально созданном образе UDF это приводит к чтению за пределами буфера в udf_get_pblock_spar15(); функция udf_relocate_blocks() дополнительно передает ту же длину функции udf_update_tag(), чья crc_itu_t() читает далеко за пределы блока, а её memmove() через st->mapEntry[] является записью за пределами буфера.
Проверять reallocationTableLen как количество записей с использованием struct_size().
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.