CVE-2026-31484 Overview
A vulnerability has been identified in the Linux kernel's io_uring subsystem, specifically within the __io_uring_show_fdinfo() function. The flaw occurs during the iteration over pending Submission Queue Entries (SQEs) when handling 128-byte SQEs on an IORING_SETUP_SQE_MIXED ring. The vulnerability allows an out-of-bounds read when detecting whether the second half of an SQE would extend past the end of the sq_sqes array.
Critical Impact
This out-of-bounds read vulnerability in the Linux kernel's io_uring fdinfo handling could allow attackers to read sensitive kernel memory, potentially leading to information disclosure or system instability.
Affected Products
- Linux kernel with io_uring support
- Systems using IORING_SETUP_SQE_MIXED ring configuration
- Linux distributions with affected kernel versions
Discovery Timeline
- 2026-04-22 - CVE CVE-2026-31484 published to NVD
- 2026-04-23 - Last updated in NVD database
Technical Details for CVE-2026-31484
Vulnerability Analysis
The vulnerability exists in the __io_uring_show_fdinfo() function which is responsible for displaying file descriptor information for io_uring instances. When iterating over pending SQEs, the function must handle both 64-byte and 128-byte SQE formats. For 128-byte SQEs on an IORING_SETUP_SQE_MIXED ring, the code needs to detect when the second half of the SQE would extend beyond the sq_sqes array boundary.
The root cause is a flawed boundary check that fails to properly validate array indices. The current implementation tests (++sq_head & sq_mask) == 0, but this check is inadequate because sq_head is only incremented when a 128-byte SQE is encountered, not during every iteration of the loop. The actual array index calculated as sq_idx = (i + sq_head) & sq_mask can equal sq_mask (pointing to the last slot in the array) while the wrap check incorrectly passes, allowing an out-of-bounds memory access.
Root Cause
The vulnerability stems from an incorrect boundary condition check in the SQE_MIXED wrap detection logic. The code assumes that incrementing sq_head and checking for zero after masking would properly detect array boundary conditions. However, because sq_head increments are conditional (only on 128-byte SQEs) rather than occurring on every iteration, the check fails to correlate with the actual array index being accessed. This logic error allows sq_idx to reference memory beyond the allocated sq_sqes array.
Attack Vector
The attack vector for this vulnerability involves triggering the fdinfo read operation on an io_uring file descriptor configured with IORING_SETUP_SQE_MIXED. An attacker with local access could:
- Create an io_uring instance with the IORING_SETUP_SQE_MIXED flag
- Submit 128-byte SQEs positioned near the end of the submission queue
- Trigger a read of /proc/[pid]/fdinfo/[fd] for the io_uring file descriptor
- The flawed wrap check causes the kernel to read beyond the sq_sqes array boundary
The fix modifies the code to check sq_idx directly instead of relying on the conditionally-incremented sq_head variable, while preserving the sq_head increment to ensure the loop correctly skips the second half of 128-byte SQEs on subsequent iterations.
Detection Methods for CVE-2026-31484
Indicators of Compromise
- Unusual access patterns to /proc/[pid]/fdinfo/ for io_uring file descriptors
- Kernel log messages indicating memory access violations or KASAN errors in io_uring code paths
- Unexpected kernel crashes or panics related to io_uring fdinfo operations
- Processes repeatedly opening and querying io_uring file descriptor information
Detection Strategies
- Monitor for KASAN (Kernel Address Sanitizer) reports indicating out-of-bounds reads in __io_uring_show_fdinfo() or related functions
- Deploy kernel instrumentation to detect anomalous io_uring operations combined with fdinfo access
- Use audit logging to track access to io_uring file descriptor information in /proc filesystem
- Implement runtime memory bounds checking tools to catch OOB access attempts
Monitoring Recommendations
- Enable comprehensive kernel auditing for io_uring system calls and /proc filesystem access
- Monitor system logs for signs of memory corruption or unexpected kernel behavior related to io_uring
- Track process behavior patterns that involve creating io_uring instances followed by frequent fdinfo queries
- Deploy endpoint detection solutions capable of monitoring kernel-level memory access patterns
How to Mitigate CVE-2026-31484
Immediate Actions Required
- Update Linux kernel to a patched version containing commits 5170efd9c344 or ba21ab247a5b
- Review systems for any signs of exploitation attempts through kernel logs and security monitoring
- Restrict access to /proc/[pid]/fdinfo/ where possible through appropriate permission controls
- Consider temporarily disabling IORING_SETUP_SQE_MIXED flag usage if patching is delayed
Patch Information
The Linux kernel development team has released patches to address this vulnerability. The fix modifies the wrap check logic to directly evaluate sq_idx rather than relying on the conditionally-incremented sq_head variable. The patches are available through the official kernel Git repositories:
Workarounds
- Restrict access to io_uring file descriptor information through filesystem permissions on /proc
- Limit the use of IORING_SETUP_SQE_MIXED flag in applications where possible
- Apply kernel security modules or hardening configurations that restrict io_uring access to trusted processes
- Monitor for and block suspicious patterns of fdinfo access combined with io_uring usage
# Restrict access to proc fdinfo (temporary mitigation)
# Note: This may impact legitimate system monitoring tools
chmod 500 /proc/*/fdinfo
# Verify io_uring configuration flags in use
cat /proc/[pid]/fdinfo/[io_uring_fd] | grep -i flags
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

