CVE-2026-99231 in Linux
Сводка
по VulDB • 02.11.2026
В ядре Linux была устранена следующая уязвимость:
io_uring/waitid: получение права владения запросом перед очисткой поля ->head
Функция io_waitid_remove_wq() захватывает только блокировку очереди ожидания, если поле ->head установлено. Функция io_waitid_wait() сначала очищает поле ->head, прежде чем попытаться стать владельцем запроса путем увеличения значения ->refs. Если в этот момент кто-то другой владеет запросом, ничто не мешает ему завершить обработку запроса, пока обработчик пробуждения (wake up handler) все еще собирается обращаться к нему:
CPU0 (io_waitid_wait) CPU1 (io_waitid, держит ссылку/ref) list_del_init(&wait->entry) smp_store_release(&iw->head, NULL) __do_wait() находит другого потомка io_waitid_remove_wq() // ->head == NULL, блокировка не требуется io_waitid_finish(), IOU_COMPLETE // запрос освобожден и переиспользован atomic_fetch_inc(&iw->refs)
То же самое относится к __io_waitid_cancel(), если она захватывает право владения запросом в этом временном окне. Поле ->refs является частью данных, специфичных для каждого opcode (кода операции), поэтому это увеличивает значение любого следующего пользователя запроса, который хранит его там. Если оказывается, что оно равно нулю, обработчик заключает, что он владеет запросом, и планирует вызов io_waitid_cb() для него. При сохранении этого окна открытым за счет задержки и переиспользовании запроса для операции приема данных, ожидающей поступления данных:
BUG: KASAN: slab-use-after-free в __wake_up_common+0x1ca/0x1f0 __wake_up_sync_key+0x36/0x50 sock_def_readable+0xf1/0x420 unix_stream_sendmsg+0x60b/0x1110 Выделено задачей 87: io_arm_apoll+0x1ed/0x940 Освобождено задачей 87: __io_submit_flush_completions+0x118d/0x1a10 tctx_task_work_run+0x327/0x950
Очищайте поле ->head только после того, как обработчик получит право владения запросом. Если этого не сделать, владелец обнаружит установленное значение поля ->head и будет вынужден ждать блокировки, которая удерживается вызывающей стороной обработчика. Повторное удаление уже удаленной записи является безопасным (harmless).
If you want to get best quality of vulnerability data, you may have to visit VulDB.