CVE-2026-99255 in Linux
Sumário
de VulDB • 03/11/2026
No kernel Linux, a seguinte vulnerabilidade foi resolvida:
io_uring/io-wq: não ocultar um enlace (link) das cancelações
Uma tarefa que encerra cancela suas solicitações rastreadas e aguarda até que elas sejam removidas. io_uring_cancel_generic() procura em todos os locais onde uma solicitação pode estar e entra em estado de suspensão se nada for encontrado para cancelar. Ela é acordada cada vez que uma das solicitações da tarefa é concluída por trabalho de tarefa ou liberada.
Quando o io-wq termina com uma solicitação que possui um enlace, há um intervalo de tempo no qual a próxima solicitação do enlace não pode ser encontrada:
io_worker_handle_work() io_assign_current_work(worker, NULL) io_wq_free_work(work) io_req_find_next() // remove o enlace da solicitação io_free_req() // trabalho de tarefa para a tarefa io_assign_current_work(worker, linked) io_run_task_work() cond_resched() worker->cur_work = linked
Ela não está pendente, não é o trabalho atual de um trabalhador (worker), e ainda não está na lista onde prestes a ser estacionada. Se a passagem que a tarefa em encerramento faz devido ao io_free_req() ocorrer nesse intervalo, ela não encontrará nada e a tarefa entrará em suspensão. O worker então executa o enlace, o que IO_WQ_BIT_EXIT não impede para trabalho limitado (bounded work). Se isso estacionar a solicitação, nenhuma será concluída ou liberada, e ninguém acordará a tarefa. Se for o processo que encerra, ele também não poderá ser morto novamente.
NOP, IOSQE_ASYNC | IOSQE_IO_LINK FUTEX_WAIT, FUTEX2_PRIVATE encerramento da thread ou do processo, até 63us depois
Com quatro desses casos por rodada, de 5 a 8 em cada 10.000 rodadas ficam pendentes (4 CPUs, KVM):
io_uring_cancel_generic do_exit
O commit f8b632e89a10 ("io_uring: tighten task exit cancellations") trata da mesma lacuna e faz com que a tarefa procure novamente por qualquer coisa que ocorra antes de io_free_req().
Libere a solicitação assim que o enlace se tornar o trabalho atual do worker ou estiver pendente. Quem quer que seja acordado por isso pode encontrar o enlace, até que ele seja estacionado onde as cancelações também procuram. Para fazer isso, divida io_wq_free_work() em duas partes.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.