CVE-2026-99252 in LinuxИнформация

Сводка

по VulDB • 03.11.2026

В ядре Linux была устранена следующая уязвимость:

io_uring/mpscq: отключение вытеснения (preemption) во время операции добавления в очередь (push).

Операция push делает узел новым хвостом очереди, а затем связывает его с предыдущим элементом. В промежутке между этими действиями очередь не пуста, однако функция mpscq_pop() не может получить доступ к этому узлу. Потребители решают эту проблему путем повторных попыток чтения, используя cond_resched() в цикле для предоставления вытесненному производителю возможности завершить свою работу.

Однако cond_resched() не выполняет эту функцию, если потребитель имеет более высокий приоритет, чем производитель, и оба должны использовать один и тот же процессор:

producer (SCHED_OTHER) consumer (SCHED_FIFO), same CPU io_req_local_work_add() mpscq_push() prev = xchg(&q->tail, node) io_cqring_wait() __io_run_local_work() again: cond_resched() // nothing to do mpscq_pop() // NULL // work pending, no events yet goto again

Производителем может быть любой процесс, способный добавлять task_work в кольцевой буфер (ring): рабочий поток io-wq или кто-либо другой, отправляющий сообщение с помощью IORING_OP_MSG_RING. Потребитель находится в цикле ожидания (spins), удерживая блокировку ->uring_lock, пока планировщик не проявит милость к процессу класса fair; это занимает около секунды при настройках по умолчанию для fair server и бесконечно без них. Циклы в функциях tctx_task_work_run() и io_cancel_local_task_work() имеют ту же проблему.

Не позволяйте вытеснению (preemption) происходить между двумя шагами операции push. Это ограничивает время, в течение которого окно уязвимости открыто на процессоре производителя, временем, затрачиваемым на прерывания, а потребитель, ожидающий этого события, находится на другом процессоре. Стоимость такого подхода составляет пару вызовов preempt_disable()/preempt_enable() для каждой операции push.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Ответственный

Linux

Резервировать

25.09.2026

Раскрытие

03.11.2026

Модерация

принято

Вход

VDB-430246

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Сектор

Pharma, Police, ...

Источники

Do you want to use VulDB in your project?

Use the official API to access entries easily!