Логотип exploitDog
Консоль
Логотип exploitDog

exploitDog

redhat логотип

CVE-2026-99227

Опубликовано: 02 нояб. 2026
Источник: redhat
CVSS3: 7.8

Описание

In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: prevent cancel reference wrap io_waitid packs the cancellation state into bit 31 of ->refs and uses bits 30:0 as a 31-bit reference counter: #define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0) __io_waitid_cancel() marks a request canceled, then increments the low bits of ->refs to claim completion ownership. When another path owns the request, the increment remains even though cancellation returns false. The request remains discoverable by cancellation, so repeated failed attempts can wrap the 31-bit reference field to zero. A later cancellation can claim ownership and complete the request a second time. Use atomic_fetch_or() when setting the cancel flag and inspect the old flag value. The first cancel attempt continues to the existing ownership increment, preserving its wake and issuer handoff semantics. Later attempts see the cancel flag and return without incrementing the reference field. This makes repeated failed cancellation attempts idempotent while leaving the first-cancel state transitions unchanged.

A flaw was found in the Linux kernel's io_uring subsystem. A local attacker can repeatedly issue cancellation requests for asynchronous waitid operations, causing an internal reference counter to overflow and wrap to zero. This flaw leads to a use-after-free memory corruption condition, potentially allowing the attacker to cause a Denial of Service (DoS) system crash or escalate privileges.

Отчет

This vulnerability is rated as an Important severity flaw because an unprivileged local user can leverage repeated asynchronous wait cancellation requests to induce memory corruption and potentially achieve local privilege escalation or crash the kernel. Although exploitation requires existing local system access, default system configurations permit unprivileged callers to interact with io_uring operations without special capabilities. Successful exploitation compromises the integrity and confidentiality of the host kernel, posing a significant risk in multi-tenant or containerized environments.

Меры по смягчению последствий

--- CME Mitigation Guidance (2026-11-04) --- Disclaimer: The following mitigation solutions are provided as a courtesy, pending the application of an official patch. This content was generated utilizing AI tools in conjunction with data from https://cmetaxonomy.org. Customers are advised to independently evaluate and test these temporary mitigations within their own infrastructure. The highest-value action is to restrict unprivileged user access to the io_uring subsystem to prevent asynchronous cancellation requests from reaching kernel waitid logic: upgrade to the corresponding fixed Red Hat builds, which use atomic_fetch_or to inspect the prior cancel flag and return immediately without incrementing the reference counter if the cancel flag was already set, closing repeated cancellation requests on io_uring waitid operations. Until patched, this is only a concern on Linux systems allowing unprivileged users to submit io_uring operations — Non-Linux platforms are unaffected — so restrict unprivileged local users from submitting io_uring operations or interacting with asynchronous waitid requests. As a compensating measure, enable Kernel AddressSanitizer to detect use-after-free memory access caused by io_uring double completions, enable SLAB freelist randomization and pointer integrity validation to detect heap layout manipulation during use-after-free exploitation, maintain SELinux in enforcing mode to confine processes and limit lateral movement following privilege escalation, deploy endpoint detection agents to detect post-exploitation payload deployment and privilege escalation behaviors, deploy eBPF runtime security monitoring to detect anomalous kernel activity and unauthorized privilege elevation attempts, and enforce hardware non-executable page protections to prevent execution of injected code residing in kernel heap memory. These controls limit blast radius and contain exploitation, but they do not fix the underlying reference counter wrap defect — apply the upstream patch to fully remediate. Highest-impact CME: CME-301 SELinux (Enforcing Mode) (medium)

Затронутые пакеты

ПлатформаПакетСостояниеРекомендацияРелиз
Red Hat Enterprise Linux 10kernelAffected
Red Hat Enterprise Linux 6kernelNot affected
Red Hat Enterprise Linux 7kernelNot affected
Red Hat Enterprise Linux 7kernel-rtNot affected
Red Hat Enterprise Linux 8kernelNot affected
Red Hat Enterprise Linux 8kernel-rtNot affected
Red Hat Enterprise Linux 9kernelAffected
Red Hat Enterprise Linux 9kernel-rtNot affected
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-8Not affected
Red Hat OpenShift Container Platform 4openshift/ose-rhel-coreos-9Affected

Показывать по

Дополнительная информация

Статус:

Important
Дефект:
CWE-911
https://bugzilla.redhat.com/show_bug.cgi?id=2565278kernel: kernel: Privilege escalation via reference counter wrap in io_uring

7.8 High

CVSS3

Связанные уязвимости

CVSS3: 7.8
ubuntu
5 дней назад

In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: prevent cancel reference wrap io_waitid packs the cancellation state into bit 31 of ->refs and uses bits 30:0 as a 31-bit reference counter: #define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0) __io_waitid_cancel() marks a request canceled, then increments the low bits of ->refs to claim completion ownership. When another path owns the request, the increment remains even though cancellation returns false. The request remains discoverable by cancellation, so repeated failed attempts can wrap the 31-bit reference field to zero. A later cancellation can claim ownership and complete the request a second time. Use atomic_fetch_or() when setting the cancel flag and inspect the old flag value. The first cancel attempt continues to the existing ownership increment, preserving its wake and issuer handoff semantics. Later attempts see the cancel flag and return without incrementi...

CVSS3: 7.8
nvd
5 дней назад

In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: prevent cancel reference wrap io_waitid packs the cancellation state into bit 31 of ->refs and uses bits 30:0 as a 31-bit reference counter: #define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0) __io_waitid_cancel() marks a request canceled, then increments the low bits of ->refs to claim completion ownership. When another path owns the request, the increment remains even though cancellation returns false. The request remains discoverable by cancellation, so repeated failed attempts can wrap the 31-bit reference field to zero. A later cancellation can claim ownership and complete the request a second time. Use atomic_fetch_or() when setting the cancel flag and inspect the old flag value. The first cancel attempt continues to the existing ownership increment, preserving its wake and issuer handoff semantics. Later attempts see the cancel flag and return without incr

CVSS3: 7.8
debian
5 дней назад

In the Linux kernel, the following vulnerability has been resolved: i ...

CVSS3: 7.8
github
5 дней назад

In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: prevent cancel reference wrap io_waitid packs the cancellation state into bit 31 of ->refs and uses bits 30:0 as a 31-bit reference counter: #define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0) __io_waitid_cancel() marks a request canceled, then increments the low bits of ->refs to claim completion ownership. When another path owns the request, the increment remains even though cancellation returns false. The request remains discoverable by cancellation, so repeated failed attempts can wrap the 31-bit reference field to zero. A later cancellation can claim ownership and complete the request a second time. Use atomic_fetch_or() when setting the cancel flag and inspect the old flag value. The first cancel attempt continues to the existing ownership increment, preserving its wake and issuer handoff semantics. Later attempts see the cancel flag and return without i...

7.8 High

CVSS3