CVE-2026-99096: io_uring/register: don't exempt disabled rings from task restrictions
In the Linux kernel, the following vulnerability has been resolved:
iouring/register: don't exempt disabled rings from task restrictions
A ring created with IORINGSETUPRDISABLED is exempt from its register restrictions until it is enabled. This lets the creator register the restrictions and then enable the ring with IORINGREGISTERENABLERINGS, whether or not that opcode is in the allowed set.
Since commit ed82f35b926b ("iouring: allow registration of per-task restrictions"), a ring also inherits restrictions from the task that creates it, and the same exemption applies to those. A task whose register opcodes are restricted can therefore create a disabled ring, issue any register opcode on it, and then enable it.
Mark rings whose restrictions were inherited from the task, and keep checking register opcodes for them while the ring is disabled. Enabling such a ring now requires IORINGREGISTERENABLERINGS to be in the task's allowed set. Per-ring restrictions registered on a disabled ring work as before.
[axboe: amend with inheritance flag fixup]
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Include IORING_REGISTER_ENABLE_RINGS in the task's allowed register-opcode set when using restrictions inherited by a disabled ring.
Linux io_uring task allowed register opcodes = IORING_REGISTER_ENABLE_RINGS