Linux kernel: устранена гонка при изменении размера subbuf в ring-buffer (CVE-2026-89771)
В ядре Linux исправлена уязвимость CVE-2026-89771, связанная с состоянием гонки (race condition) между изменением размера subbuf в ring buffer и операциями чтения. Проблема затрагивает подсистему трассировки ядра и получила оценку CVSS 7.8 (HIGH). Уязвимость может приводить к некорректному чтению данных и потенциально — к нарушению целостности памяти.
Подробности
Уязвимость затрагивает ядро Linux. Суть проблемы заключается в том, что поле trace_buffer::subbuf_size считывалось без блокировки в функциях ring_buffer_read_page() и ring_buffer_read_start(), тогда как в это же время значение могло быть изменено через функцию ring_buffer_subbuf_order_set(). Такая рассинхронизация создаёт состояние гонки (race condition) между читателями кольцевого буфера и операцией изменения порядка суббуфера. В условиях конкурентного доступа это могло приводить к некорректному чтению данных трассировки, использованию устаревших или несогласованных значений размера, а в худшем случае — к нарушению целостности памяти. Именно поэтому уязвимости присвоена высокая оценка CVSS — 7.8, отражающая потенциальную возможность повышения привилегий или отказа в обслуживании в локальном контексте. Исправление меняет логику работы: вместо обращения к trace_buffer::subbuf_size в ring_buffer_read_start() и ring_buffer_read_page() теперь используется поле bpage::order. Кроме того, в ring_buffer_read_start() добавлен захват мьютекса trace_buffer, чтобы синхронизироваться с возможными ожидающими изменениями порядка кольцевого буфера — даже при установленном флаге resize_disabled сохранялась вероятность гонки с модификацией буфера. Поле trace_buffer::subbuf_size признано фактически бесполезным и удалено. Вместо него добавлены аксессоры rb_subbuf_capacity() и rb_page_capacity(), возвращающие реальный размер, доступный для записи событий, а rb_subbuf_size() теперь возвращает фактический размер страницы суббуфера.Что делать
Основная рекомендация — обновить ядро Linux до версии, содержащей соответствующий патч. Поскольку уязвимость относится к ядру, исправление распространяется через обновления дистрибутивов: - для серверных и корпоративных систем — установить актуальные пакеты ядра от вендора (Red Hat, SUSE, Debian, Ubuntu и др.); - для встраиваемых и специализированных систем — проверить наличие патча у поставщика прошивки или ядра; - до момента обновления ограничить локальный доступ непривилегированных пользователей к системам, где используется подсистема трассировки ftrace/ring-buffer, поскольку для эксплуатации, как правило, требуется локальный доступ. Дополнительных митигаций на уровне конфигурации недостаточно — корректное устранение возможно только установкой обновлённого ядра и последующей перезагрузкой. Итог: CVE-2026-89771 — классическая race condition в подсистеме трассировки ядра Linux, способная привести к чтению несогласованных данных и потенциальному нарушению целостности памяти. Исправление переводит работу с размером суббуфера на безопасные аксессоры и добавляет необходимую синхронизацию через мьютекс. Администраторам рекомендуется оперативно применить обновления ядра от своих дистрибутивов.Источник: CVE Project (cvelistV5)
