CVE-2026-43442Linux内核io_uring组件存在安全漏洞。当使用`IORING_SETUP_SQE_MIXED`标志但未设置`IORING_SETUP_NO_SQARRAY`时,`io_init_req`函数对128字节SQE操作的边界检查存在缺陷。代码错误地验证了逻辑SQ头位置而非物理SQE索引。由于`sq_array`的存在,攻击者可将逻辑位置重新映射到任意物理索引,特别是将操作放置在最后一个物理SQE槽位。这会导致`io_uring_cmd_sqe_copy`函数执行时读取SQE数组末尾之外的64字节数据,引发越界读取,可能造成信息泄露或系统崩溃。
该漏洞的核心在于Linux内核io_uring子系统在处理混合大小SQE时的边界验证逻辑错误。在`io_init_req`函数中,原有的检查逻辑`!(ctx->cached_sq_head & (ctx->sq_entries - 1))`仅确认逻辑位置未达环形缓冲区末尾,这对于物理与逻辑位置一致的`NO_SQARRAY`模式是正确的。然而,在标准模式下,`sq_array`允许低权限用户将任意逻辑索引指向任意物理SQE索引。攻击者可利用此机制,将一个128字节的`IORING_OP_URING_CMD`操作映射到物理数组的最后一个槽位。由于边界检查未针对物理索引进行校验,内核在执行`io_uring_cmd_sqe_copy`进行128字节的内存拷贝时,会从合法的SQE数组末尾向后越界读取64字节。这种越界读取可能泄露敏感的内核内存数据,或因访问无效内存导致内核恐慌,从而实现拒绝服务攻击。