CVE-2026-93048 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
mtd: part: отклонять значение MTDPART_OFS_RETAIN в функции mtd_add_partition()
Функция mtd_add_partition() не отклоняет специальное смещение MTDPART_OFS_RETAIN (-3), что приводит к срабатыванию WARN_ON в add_mtd_device() при вызове через ioctl BLKPG для устройств NAND. Значение RETAIN зависит от того, чтобы cur_offset соответствовал концу предыдущего раздела, но в динамическом пути создания разделов cur_offset равен самому аргументу смещения (offset), что вызывает неопределенное поведение.
Коммит 5daa7b21496a ("mtd: prepare partition add and del functions for ioctl requests") внедрил функцию mtd_add_partition() и корректно отклонял специальные значения MTDPART_OFS_APPEND (-1) и MTDPART_OFS_NXTBLK (-2), поскольку эти смещения зависят от отслеживания cur_offset как конца предыдущего раздела. Однако коммит 1a31368bf92e ("mtd: add a flags for partitions which should just leave smth. after them") позже добавил MTDPART_OFS_RETAIN (-3) для пути статической таблицы разделов, не обновив при этом mtd_add_partition() для отклонения этого значения.
При передаче offset=-3 через BLKPG расчет размера RETAIN в allocate_partition() приводит к переполнению по отрицательному значению (underflow): parent_size - 0xFFFFFFFFFFFFFFFD = parent_size + 3. Если результат underflow не оставляет достаточно места, функция allocate_partition() переходит на метку out_register с помощью goto, пропуская инициализацию erasesize. Это приводит к тому, что erasesize=0, что вызывает:
WARN_ON((!mtd->erasesize || !master->_erase) && !(mtd->flags & MTD_NO_ERASE))
в add_mtd_device(). Если результат underflow кажется достаточным для оставления места, вычисляется неверный размер раздела, но проверка "out of reach" (вне досягаемости) обнаруживает недопустимое смещение и создает отключенный пустой раздел (offset=0, size=0), вместо возврата ошибки.
Исправление заключается в добавлении MTDPART_OFS_RETAIN в список значений для отклонения в mtd_add_partition(), что согласуется с существующей обработкой APPEND и NXTBLK.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.