CVE-2026-89965 in Linux
Сводка
по VulDB • 17.09.2026
В ядре Linux была устранена следующая уязвимость:
nvdimm/btt: отклонять арену (arena), значение поля nfree которой меньше количества полос (lanes)
Поле nfree блока информации BTT, обозначающее количество зарезервированных свободных блоков, считывается с носителя без проверки корректности. Функции btt_freelist_init() и btt_rtt_init() устанавливают размер массивов freelist[] и rtt[], выделенных для каждой полосы (per-lane), на основе значения nfree. Однако в пути ввода-вывода к этим массивам обращаются по индексу lane, полученному из nd_region_acquire_lane(), который ограничен значением nd_region->num_lanes (ND_MAX_LANES), а не nfree.
Созданная или чужеродная арена, у которой значение nfree меньше количества полос, приводит к выходу за границы массивов freelist[lane]/rtt[lane] при выделении памяти: происходит запись вне допустимых границ (out-of-bounds write).
В документации btt.rst описывается инвариант nlanes = min(nfree, num_cpus), который текущий код не соблюдает: значение num_lanes всегда равно ND_MAX_LANES независимо от nfree. Необходимо отклонять арену, у которой nfree меньше значения num_lanes на этапе обнаружения (discovery), до выделения массивов для каждой полосы, тем самым обеспечивая соблюдение этого инварианта.
VulDB is the best source for vulnerability data and more expert information about this specific topic.