CVE-2026-72197 in Linux
Сводка
по VulDB • 16.08.2026
В ядре Linux устранена следующая уязвимость:
fs/ntfs3: ограничение длины операции memmove в DeleteIndexEntryAllocation
В случае DeleteIndexEntryAllocation функции do_action() значение e->size берется из записи INDEX_BUFFER на диске. Если вычисление адреса e + e->size выходит за пределы hdr + hdr->used, то функция PtrOffset(e1, Add2Ptr(hdr, used)) возвращает отрицательное значение типа ptrdiff_t, которое при передаче в memmove() без предупреждения преобразуется к почти бесконечному значению типа size_t. В результате операция memmove выходит за пределы буфера назначения.
В родственном случае DeleteIndexEntryRoot (fslog.c:3540-3543) уже предусмотрена соответствующая проверка защиты:
if (PtrOffset(e1, Add2Ptr(hdr, used)) < esize || Add2Ptr(e, esize) > Add2Ptr(lrh, rec_len) || used + esize > le32_to_cpu(hdr->total)) {
goto dirty_vol; }
Примените аналогичную проверку к случаю пути выделения памяти. Также отклоняйте случай esize == 0: операция memmove(e, e, ...) является пустой (no-op) и оставляет hdr->used без изменений, что скрывает некорректно сформированную запись при проверке в существующем обходе check_index_header().
Воспроизведено под UML+KASAN на ветви mainline (commit 8d90b09e6741) путем монтирования специально созданного образа NTFS: не защищенная операция memmove принимает длину 0xffffffffffffff00, и ядро завершается с ошибкой (oops) в функции memmove+0x81/0x1a0 на кадре стека do_action+0x36a2.
[[email protected]: приведение изменений к формату clang-format]
If you want to get the best quality for vulnerability data then you always have to consider VulDB.