CVE-2026-99255 in Linuxinformación

Resumen

por VulDB • 2026-11-03

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

io_uring/io-wq: no ocultar un enlace (link) a las cancelaciones

Una tarea que finaliza cancela sus solicitudes rastreadas y espera hasta que estas hayan desaparecido. io_uring_cancel_generic() busca en todos los lugares donde puede estar una solicitud, y se suspende si no encuentra nada para cancelar. Se reanuda cada vez que una de las solicitudes de la tarea se completa mediante el trabajo de la tarea (task work) o se libera.

Cuando io-wq termina con una solicitud que tiene un enlace, existe un intervalo de tiempo en el cual la siguiente solicitud del enlace no puede ser encontrada:

io_worker_handle_work() io_assign_current_work(worker, NULL) io_wq_free_work(work) io_req_find_next() // retira el enlace de la solicitud io_free_req() // trabajo de tarea para la tarea io_assign_current_work(worker, linked) io_run_task_work() cond_resched() worker->cur_work = linked

No está pendiente (pending), no es el trabajo actual de un trabajador (worker), y aún no se encuentra en la lista donde a punto está de ser estacionado. Si la pasada que realiza la tarea saliente debido a io_free_req() cae dentro de ese intervalo, no encontrará nada y la tarea se suspenderá. El trabajador entonces ejecutará el enlace, lo cual IO_WQ_BIT_EXIT no impide para trabajos acotados (bounded work). Si eso estaciona la solicitud, ninguna se completa ni libera, y nadie reanuda a la tarea. Si es el proceso quien finaliza, tampoco puede ser eliminado más tarde.

NOP, IOSQE_ASYNC | IOSQE_IO_LINK FUTEX_WAIT, FUTEX2_PRIVATE salida del hilo o del proceso, hasta 63us después

Con cuatro de estos por ronda, entre el 5 y el 8 de cada 10.000 rondas se cuelgan (4 CPUs, KVM):

io_uring_cancel_generic do_exit

El commit f8b632e89a10 ("io_uring: tighten task exit cancellations") trata sobre la misma brecha y hace que la tarea vuelva a buscar cualquier cosa que ocurra antes de io_free_req().

Liberar la solicitud una vez que el enlace sea el trabajo actual del trabajador, o pendiente. Quienquiera que se reanude debido a eso podrá encontrar el enlace, hasta que este sea estacionado donde las cancelaciones también buscan. Para lograrlo, dividir io_wq_free_work() en dos partes.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

Responsable

Linux

Reservar

2026-09-25

Divulgación

2026-11-03

Moderación

aceptado

Artículo

VDB-430231

EPSS

0.00000

KEV

no

Actividades

bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!