CVE 7.1 HIGH

io_uring: fix physical SQE bounds check for SQE_MIXED 128-byte ops_CVE-2026-43442

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

Description

In the Linux kernel, the following vulnerability has been resolved:

io_uring: fix physical SQE bounds check for SQE_MIXED 128-byte ops

When IORING_SETUP_SQE_MIXED is used without IORING_SETUP_NO_SQARRAY,
the boundary check for 128-byte SQE operations in io_init_req()
validated the logical SQ head position rather than the physical SQE
index.

The existing check:

!(ctx->cached_sq_head & (ctx->sq_entries - 1))

ensures the logical position isn't at the end of the ring, which is
correct for NO_SQARRAY rings where physical == logical. However, when
sq_array is present, an unprivileged user can remap any logical
position to an arbitrary physical index via sq_array. Setting
sq_array[N] = sq_entries - 1 places a 128-byte operation at the last
physical SQE slot, causing the 128-byte memcpy in
io_uring_cmd_sqe_copy() to read 64 bytes past the end of the SQE
array.

Replace the cached_sq_head alignment check with a direct validation
of the physical SQE index, which correctly handles both sq_array and
NO_SQARRAY cases.

Basic Information

ID CVE-2026-43442
Source Linux
Published May 8, 2026 at 14:22
Modified May 11, 2026 at 06:34

Affected Product

Vendor Linux
Product Linux
Version 1cba30bf9fdd6c982708f3587f609a30c370d889
Affected Versions Linux Linux 1cba30bf9fdd6c982708f3587f609a30c370d889
Linux Linux 1cba30bf9fdd6c982708f3587f609a30c370d889
Linux Linux 6.19

References

💭 Join the Security Discussion

🔒 Your email address will not be published. Required fields are marked *

⚠️ Please be respectful and constructive in your comments. Security discussions should remain professional.