CVE-2026-43442

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.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:7.0:rc3:*:*:*:*:*:*

History

11 Nov 2026, 20:10

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta: io_uring: corrección de la verificación de límites de SQE físico para operaciones SQE_MIXED de 128 bytes Cuando IORING_SETUP_SQE_MIXED se usa sin IORING_SETUP_NO_SQARRAY, la verificación de límites para operaciones SQE de 128 bytes en io_init_req() validaba la posición lógica de la cabecera SQ en lugar del índice SQE físico. La verificación existente: !(ctx -> cached_sq_head & (ctx -> sq_entries - 1)) asegura que la posición lógica no esté al final del anillo, lo cual es correcto para anillos NO_SQARRAY donde físico == lógico. Sin embargo, cuando sq_array está presente, un usuario sin privilegios puede reasignar cualquier posición lógica a un índice físico arbitrario a través de sq_array. Establecer sq_array[N] = sq_entries - 1 coloca una operación de 128 bytes en la última ranura SQE física, causando que el memcpy de 128 bytes en io_uring_cmd_sqe_copy() lea 64 bytes más allá del final del array SQE. Reemplazar la verificación de alineación de cached_sq_head con una validación directa del índice SQE físico, que maneja correctamente tanto los casos de sq_array como de NO_SQARRAY.

Information

Published : 2026-05-08 15:16

Updated : 2026-11-11 20:10


NVD link : CVE-2026-43442

Mitre link : CVE-2026-43442

CVE.ORG link : CVE-2026-43442


JSON object : View

Products Affected

linux

  • linux_kernel