CVE-2026-52933: Linux Kernel io_uring Signed Integer Comparison Privilege Escalation
A flaw in the Linux kernel's io_uring polling mechanism causes a critical security check to be bypassed. The kernel uses a flag to signal when poll operations should take a slower, more careful processing path. However, due to a signed/unsigned integer comparison error, when that flag is set, the comparison incorrectly treats it as a negative number and skips the safety check. This allows an unprivileged local user to cause kernel memory corruption or escalate privileges by manipulating io_uring poll operations.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- Weaknesses (CWE)
- CWE-835
- Affected products
- 4 configuration(s)
- Published / Modified
- 2026-06-24 / 2026-07-08
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: io_uring/poll: fix signed comparison in io_poll_get_ownership() io_poll_get_ownership() uses a signed comparison to check whether poll_refs has reached the threshold for the slowpath: if (unlikely(atomic_read(&req->poll_refs) >= IO_POLL_REF_BIAS)) atomic_read() returns int (signed). When IO_POLL_CANCEL_FLAG (BIT(31)) is set in poll_refs, the value becomes negative in signed arithmetic, so the >= 128 comparison always evaluates to false and the slowpath is never taken. Fix this by casting the atomic_read() result to unsigned int before the comparison, so that the cancel flag is treated as a large positive value and correctly triggers the slowpath.
6 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-52933 is a signed/unsigned integer comparison vulnerability in io_uring's poll ownership logic (io_poll_get_ownership function). The function checks if poll_refs has reached IO_POLL_REF_BIAS (128) using a signed comparison: atomic_read(&req->poll_refs) >= IO_POLL_REF_BIAS. When IO_POLL_CANCEL_FLAG (bit 31) is set in poll_refs, atomic_read() returns a negative signed integer, causing the >= 128 comparison to always fail. This prevents the slowpath from executing even when required. The fix involves casting atomic_read() to unsigned int, so the cancel flag is correctly interpreted as a large positive value that triggers the slowpath. This is fundamentally an integer handling error that bypasses a kernel synchronization mechanism.
Business impact
Unprivileged local attackers can exploit this to corrupt kernel memory or execute privilege escalation attacks on affected systems. Any system running a vulnerable Linux kernel with io_uring enabled is at risk, including containerized environments, VMs, and bare-metal infrastructure. The impact is elevation of privilege from a local user context to kernel-level access, enabling complete system compromise.
Affected systems
All Linux kernel versions containing the vulnerable io_poll_get_ownership() function. This affects the io_uring subsystem, which is widely used by modern applications for high-performance I/O. Verify specific kernel versions against official Linux kernel CVE advisories and your distribution's security updates. Containerized workloads and systems exposing unprivileged user namespaces are at elevated risk.
Exploitability
Exploitability is high for local attackers with unprivileged user access. The vulnerability does not require special privileges, network access, or user interaction; an attacker simply needs local shell access. The flaw is deterministic and does not depend on timing or race conditions, making reliable exploitation feasible. No known public exploits are in the KEV catalog as of the vulnerability publication, but the attack surface is straightforward.
Remediation
Apply kernel patches from your Linux distribution as soon as they become available. The fix is a single-line change: cast the atomic_read() result to unsigned int in the comparison. Distributions will integrate this fix into their next stable or security releases. For immediate risk reduction on systems where patching cannot be done promptly, restrict unprivileged user access and disable io_uring if possible (verify application compatibility first).
Patch guidance
1. Check your running kernel version against your distribution's security advisory. 2. Enable automatic security updates or schedule a maintenance window for kernel patching. 3. Reboot after applying the patch to activate the fixed kernel. 4. If io_uring can be disabled without breaking applications, consider disabling it as a temporary mitigation on high-risk systems. Verify that your workload does not depend on io_uring before disabling. 5. For containerized environments, rebuild and redeploy container images with patched base OS images.
Detection guidance
Monitor for suspicious io_uring activity or privilege escalation attempts from unprivileged processes. Look for failed and successful transitions from user space to kernel-level execution, or unexpected kernel memory access patterns. System call tracing tools (strace, perf) can reveal abnormal io_uring call sequences. EDR and kernel auditing tools may detect exploitation attempts. Note that detection of successful exploitation is difficult after the fact; prevention through patching is the priority.
Why prioritize this
This vulnerability merits immediate patching due to the combination of high CVSS score (7.8), local privilege escalation capability, and ease of exploitation by any unprivileged user. The attack requires no social engineering or network access and bypasses a fundamental kernel synchronization mechanism. Organizations should treat this as a critical kernel update and expedite deployment.
Risk score, explained
CVSS 7.8 (HIGH) reflects a local vulnerability with high impact: confidentiality, integrity, and availability are all compromised through privilege escalation and kernel memory corruption. The attack vector is local (AV:L), attack complexity is low (AC:L), no privileges are required (PR:L means low-privilege user suffices), and no user interaction is needed (UI:N). The scope is unchanged (S:U), but the consequences of kernel-level compromise are severe.
Frequently asked questions
Does this vulnerability require network access?
No. This is a local-only vulnerability requiring shell access on the affected system. It does not involve network communication or remote exploitation.
What is io_uring and why should I care if it's on my kernel?
io_uring is a modern Linux subsystem for asynchronous, high-performance I/O used by databases, web servers, and container runtimes. Most modern systems have it enabled by default. If it's present, you are potentially affected.
Can I work around this without patching?
Partial mitigation is possible by restricting unprivileged user access or disabling io_uring, but these are temporary measures. Disabling io_uring may impact application performance. Patching is the proper fix.
Is this in the CISA Known Exploited Vulnerabilities list?
No, this vulnerability is not currently listed in the KEV catalog. However, the straightforward nature of the flaw means public exploits could emerge; do not delay patching.
This analysis is based on the CVE record and public Linux kernel advisories as of the publication date. Specific patch version numbers, affected kernel releases, and distribution-specific guidance should be verified against official vendor advisories from your Linux distribution. This document does not constitute legal or compliance advice. Organizations must conduct their own risk assessment based on their infrastructure and threat model. No exploit code or weaponizable proof-of-concept is provided; this advisory is for defensive purposes only. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-46146MEDIUMLinux Kernel USB Audio Infinite Loop DoS Vulnerability
- CVE-2026-46314MEDIUMLinux Kernel DRM v3d Infinite Loop DoS Vulnerability
- CVE-2026-52921MEDIUMLinux Netfilter IPset Range Iterator Boundary Vulnerability
- CVE-2026-52965MEDIUMLinux Kernel DRM/TTM LRU Infinite Loop Denial of Service
- CVE-2025-71319HIGHimage-size Denial of Service via Malformed JXL/HEIF Images
- CVE-2025-71329HIGHInfinite Loop DoS in image-size Library—Vulnerability Explanation & Patch Guidance
- CVE-2025-71330HIGHDenial of Service in image-size ICNS Parser
- CVE-2026-44186HIGHApache HTTP Server mod_proxy_ftp Infinite Loop Denial of Service