KernelScan.io

HIGH

io_uring Buffer Race

CVE-2026-43366

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI7.0HIGH

01

In the Linux kernel, the following vulnerability has been resolved: io_uring/kbuf: check if target buffer list is still legacy on recycle There's a gap between when the buffer was grabbed and when it potentially gets recycled, where if the list is empty, someone could've upgraded it to a ring provided type. This can happen if the request is forced via io-wq. The legacy recycling is missing checking if the buffer_list still exists, and if it's of the correct type. Add those checks.

02

Engine v0.2.0

Risk summary

Local attackers with low privileges can exploit a race condition in io_uring buffer recycling to cause use-after-free. This affects systems running untrusted code or multi-tenant environments where io_uring is accessible to unprivileged users.

Affectedio_uring/kbuf.c (io_uring subsystem)

Vulnerability analysis

The vulnerability is a race condition in io_uring's buffer recycling mechanism that leads to use-after-free. When a buffer is grabbed from a legacy buffer list and later recycled via io-wq, there's a time gap where another thread could upgrade the buffer list from legacy type to ring-mapped type or remove it entirely. The original code in io_kbuf_recycle_legacy() blindly added the buffer to a list that may have been freed/replaced, and failed to clear req->kbuf, leading to potential use-after-free. The fix adds proper validation to check if the buffer list exists and is still a legacy type before recycling, and properly clears req->kbuf to prevent dangling pointer access.

03

BranchFixed inPatch commit
6.16.1.167a7b33671e418
6.126.12.78f3fb54e7a8b4
6.186.18.1950ad880db301
6.196.19.997b57f69fee1
6.66.6.130439a6728ec46
mainline7.0c2c185be5c85