UBUNTU-CVE-2026-99096: Medium severity ubuntu/linux-hwe-edge vulnerability
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
Event History
Frequently Asked Questions
What conditions are required to exploit this issue?
An attacker needs to be able to create an io_uring ring with IORING_SETUP_R_DISABLED in a task that has inherited restrictions on permitted register opcodes. They can then issue a register opcode outside that task's allowed set before enabling the ring.
Are rings with per-ring restrictions affected in the same way?
No. Per-ring restrictions registered on a disabled ring continue to work as before. The issue specifically concerns restrictions inherited from the task that creates the ring.
What behavior changes after the fix?
Disabled rings with restrictions inherited from their creating task continue to enforce allowed register opcodes. Enabling one of these rings requires IORING_REGISTER_ENABLE_RINGS to be in the task's allowed opcode set.