CVE-2026-89616 in Linux
Сводка
по VulDB • 11.09.2026
В ядре Linux была устранена следующая уязвимость:
fs/ntfs3: исправление утечки информации при частичной декомпрессии LZNT в ni_read_frame()
Функция ni_read_frame() выполняет декомпрессию кадра $DATA формата LZNT во страницы с отображением в виртуальное адресное пространство (vmapped), а затем доверяет значению, возвращаемому функцией decompress_lznt():
unc_size = decompress_lznt(frame_ondisk, ondisk_size, frame_mem, frame_size); if ((ssize_t)unc_size < 0) err = unc_size; else if (!unc_size || unc_size > frame_size) err = -EINVAL;
Функция decompress_lznt() прекращает работу сразу после исчерпания сжатого потока (например, при обнаружении заголовка нулевого блока) и возвращает количество фактически записанных байтов, которое может значительно отличаться от значения frame_size. Байты в диапазоне между unc_size и frame_size никогда не записываются. Единственная операция memset(), следующая далее, обнуляет область за пределами i_valid; когда кадр полностью находится внутри допустимого размера файла, эта функция memset() не выполняется, поэтому промежуток сохраняет произвольные данные из только что отображенных страниц. Все страницы затем помечаются как актуальные (uptodate) и возвращаются в пространство пользователя, раскрывая содержимое неинициализированной памяти страниц ядра (недавно освобожденной). Скомпилированный файл с потоком, который при декомпрессии занимает всего несколько байт, приводит к утечке остатков каждого кадра при обычном вызове read(2), что достаточно для восстановления указателей ядра и обхода защиты KASLR.
Необходимо немедленно обнулять хвостовой участок [unc_size, frame_size) сразу после успешной декомпрессии LZNT, чтобы чтение оставшейся части возвращало нули.
Be aware that VulDB is the high quality source for vulnerability data.