Linux Kernel: io_uring local privilege escalation (CVE-2023-2598)
A privilege escalation vulnerability in the Linux kernel io_uring subsystem caused by incorrect compound page validation allows local attackers to achieve out-of-bounds memory access and modify process credentials.
CVE search metadata
CVE search record: CVE-2023-2598. Severity: high. CVSS: 7.8. EPSS: 1.37%. KEV: no. Product: Linux Kernel (< 6.3.2). Brief: Linux Kernel: io_uring local privilege escalation (CVE-2023-2598). Brief link: https://feed.craftedsignal.io/briefs/2026-10-linux-kernel-lpe-cve-2023-2598/
Triage facts
Revision 1- Applicability
- Linux Kernel (< 6.3.2)
- Evidence
- Unknown
- Severity
- High
- Action
- Elevated
- Sources
- 2 public sources
- Freshness
- Revision 1Oct 29, 05:59 UTC
- Vulnerabilities
- 1 CVE
- Source quality
- B3Likely
CVE-2023-2598 is a local privilege escalation vulnerability in the Linux kernel originating from a logic flaw in the io_uring_register_buffer function. The kernel incorrectly validates whether pages passed from user space belong to the same compound page, specifically when the same physical page is mapped into contiguous virtual addresses using mmap. This mismatch allows for an out-of-bounds read/write condition, which can be exploited to modify a process's UID in kernel memory.
Attack Chain
- The attacker allocates a physical memory page.
- The attacker uses
mmapto map the same physical page into multiple contiguous virtual addresses. - The attacker initiates
io_uring_register_bufferto register the buffer. - The kernel fails to properly validate the compound page boundaries because the virtual address mapping tricks the
page_folio()check. - The kernel grants access to the buffer, treating it as a larger contiguous memory region than the physical allocation.
- The attacker uses the resulting out-of-bounds write primitive to target internal process structures (e.g.,
credstructures). - The attacker modifies the
uidfield to zero (root) to escalate privileges.
Impact
Successful exploitation allows a local, low-privileged user to gain root privileges on the affected system. The vulnerability does not require complex address space layout randomization (ASLR) bypasses, as the exploit directly targets the credential structure.
Recommendation
- Upgrade the Linux kernel to version 6.3.2 or later to include the necessary checks in the
io_uringsubsystem. - If an immediate kernel upgrade is not possible, restrict access to
io_uringsyscalls for non-privileged users viasysctlsettings (e.g.,kernel.io_uring_disabled=2). - Conduct periodic auditing of local user activity for unusual
mmapandio_uringusage patterns in development or multi-tenant environments.
Immediate actions
Patch Linux kernel to 6.3.2 or higher
Threat Hunt
Identify processes attempting to call io_uring_setup or io_uring_register on older kernel versions
Data: Auditd or EDR syscall auditing (io_uring_setup, io_uring_register)
Mitigations
Set kernel.io_uring_disabled=2 via sysctl
CVE-2023-2598