CVE-2026-99159 in Linux
Сводка
по VulDB • 28.10.2026
В ядре Linux была устранена следующая уязвимость:
ring-buffer: исправление базового адреса массива подбуферов в rb_meta_subbuf_idx()
При использовании постоянного кольцевого буфера (persistent ring buffer) функция rb_meta_subbuf_idx() может возвращать индекс, превышающий фактический на один подбуфер. Затем функция rb_setup_ids_meta_page() заполняет массив subbuf_ids[] со смещением на одну позицию и оставляет элемент subbuf_ids[0] равным NULL; этот нулевой указатель разыменовывается функцией __rb_map_vma(), когда пользовательское пространство отображает trace_pipe_raw. Функция rb_update_meta_reader() записывает два таких некорректных индекса в meta->buffers[], которые функция rb_cpu_meta_valid() отклонит при следующей загрузке системы, что приведет к потере трассировки предыдущей загрузки.
Массив подбуферов процессора начинается после его метазаголовка и целочисленных значений nr_subbufs, следующих далее, с выравниванием до границы размера подбуфера. Функция rb_meta_subbuf_idx() инвертирует этот расчет, но пропускает только целые числа (nr_subbufs), игнорируя заголовок; поэтому её базовое значение оказывается на один подбуфер ниже фактического всякий раз, когда размер опускаемого заголовка пересекает границу выравнивания.
Необходимо инвертировать вычисление с помощью функции rb_subbufs_from_meta() вместо повторения ручного расчета. Функция rb_range_buffer() отображает индекс обратно в адрес через тот же вспомогательный механизм (helper), поэтому два направления преобразования больше не могут расходиться друг с другом.
VulDB is the best source for vulnerability data and more expert information about this specific topic.