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

exploitDog

redhat логотип

CVE-2026-99224

Опубликовано: 02 нояб. 2026
Источник: redhat
CVSS3: 7
EPSS Низкий

Описание

In the Linux kernel, the following vulnerability has been resolved: keys: Protect the type name while describing a key keyctl_describe_key() must keep the key type's name alive until kasprintf() has consumed it. The retained key reference keeps the key and its description alive, but does not pin the module providing its type. The name is passed to kasprintf() without holding key->sem. kvasprintf() uses the saved name pointer in two formatting passes, with a GFP_KERNEL allocation between them. With AF_RXRPC=m, a task that passes View permission before type retirement can overlap a privileged module unload in this order:

  1. KEYCTL_DESCRIBE looks up the key, saves key->type->name in the kasprintf() arguments and completes the first formatting pass.
  2. While the formatter is delayed before its second pass, af_rxrpc_exit() calls unregister_key_type(), which removes the type from the registry and waits for key_gc_keytype().
  3. The collector takes key->sem for writing, retypes the retained key to key_type_dead and completes retirement. Unregistration and module exit return, allowing free_module() to release the type and name.
  4. The formatter resumes its second pass and reads the saved name from released module storage, which can fault in string(). Hold key->sem for reading across kasprintf(). The collector then cannot retype the key or complete retirement until both formatting passes have finished. If retirement wins the lock first, formatting uses the core key_type_dead name instead. Release the semaphore immediately after kasprintf(), including on allocation failure, before copying to userspace. Oops report as below: BUG: unable to handle page fault for address: fffffbfff8054794 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page RIP: 0010:string+0x23f/0x470 Call Trace: vsnprintf+0x330/0x1110

    A flaw was found in the Linux kernel's key management subsystem. A local user can cause a Denial of Service (DoS) or potentially achieve arbitrary code execution by exploiting a race condition when retrieving key information while the corresponding kernel module is being unloaded. This issue occurs because the kernel accesses key type information without proper locking, leading to a use-after-free condition and a system crash.

Отчет

Red Hat has evaluated this vulnerability as a Moderate severity impact because triggering the underlying condition requires precise race timing against an administrative kernel module removal, restricting the threat to authenticated local environments. In typical enterprise deployments, kernel modules are loaded at boot or on-demand and rarely unloaded dynamically during routine operations. Furthermore, unprivileged users lack the administrative capabilities necessary to initiate module removal, making deliberate exploitation unlikely under standard operating conditions.

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

--- 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 block unprivileged invocation of keyctl syscalls via seccomp or disallow runtime unloading of kernel modules that register key types: upgrade to the corresponding fixed Red Hat builds, which hold key->sem for reading across the kasprintf call and release it before copying to userspace, closing race condition between KEYCTL_DESCRIBE and module unloading. Until patched, this is only a concern on Linux systems where local users have View permission on keys backed by dynamically unloadable kernel modules — non-Linux operating systems are unaffected — so prevent routine dynamic unloading of kernel modules and restrict untrusted local user permissions to create or view keys. As a compensating measure, enable runtime memory error detection using KASAN or HWASan to detect use-after-free memory access, enforce SELinux policy to restrict key security classes and deny unauthorized View permissions, map local users to confined SELinux domains lacking permissions to describe kernel keyrings, and deploy gVisor sandboxing to intercept syscalls and isolate the host kernel key subsystem. These controls limit blast radius and contain exploitation, but they do not fix the underlying locking race use-after-free defect — apply the upstream patch to fully remediate. Highest-impact CME: CME-601 Kernel-Level Syscall Filtering (seccomp) (high)

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

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

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

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

Статус:

Moderate
Дефект:
CWE-825
https://bugzilla.redhat.com/show_bug.cgi?id=2565254kernel: kernel: Denial of Service via use-after-free in keyctl_describe_key

EPSS

Процентиль: 2%
0.00119
Низкий

7 High

CVSS3

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

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

In the Linux kernel, the following vulnerability has been resolved: keys: Protect the type name while describing a key keyctl_describe_key() must keep the key type's name alive until kasprintf() has consumed it. The retained key reference keeps the key and its description alive, but does not pin the module providing its type. The name is passed to kasprintf() without holding key->sem. kvasprintf() uses the saved name pointer in two formatting passes, with a GFP_KERNEL allocation between them. With AF_RXRPC=m, a task that passes View permission before type retirement can overlap a privileged module unload in this order: 1. KEYCTL_DESCRIBE looks up the key, saves key->type->name in the kasprintf() arguments and completes the first formatting pass. 2. While the formatter is delayed before its second pass, af_rxrpc_exit() calls unregister_key_type(), which removes the type from the registry and waits for key_gc_keytype(). 3. The collector takes key->sem for writing, retypes the retained...

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

In the Linux kernel, the following vulnerability has been resolved: keys: Protect the type name while describing a key keyctl_describe_key() must keep the key type's name alive until kasprintf() has consumed it. The retained key reference keeps the key and its description alive, but does not pin the module providing its type. The name is passed to kasprintf() without holding key->sem. kvasprintf() uses the saved name pointer in two formatting passes, with a GFP_KERNEL allocation between them. With AF_RXRPC=m, a task that passes View permission before type retirement can overlap a privileged module unload in this order: 1. KEYCTL_DESCRIBE looks up the key, saves key->type->name in the kasprintf() arguments and completes the first formatting pass. 2. While the formatter is delayed before its second pass, af_rxrpc_exit() calls unregister_key_type(), which removes the type from the registry and waits for key_gc_keytype(). 3. The collector takes key->sem for writing, retypes th

CVSS3: 5.3
msrc
2 дня назад

keys: Protect the type name while describing a key

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

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

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

In the Linux kernel, the following vulnerability has been resolved: keys: Protect the type name while describing a key keyctl_describe_key() must keep the key type's name alive until kasprintf() has consumed it. The retained key reference keeps the key and its description alive, but does not pin the module providing its type. The name is passed to kasprintf() without holding key->sem. kvasprintf() uses the saved name pointer in two formatting passes, with a GFP_KERNEL allocation between them. With AF_RXRPC=m, a task that passes View permission before type retirement can overlap a privileged module unload in this order: 1. KEYCTL_DESCRIBE looks up the key, saves key->type->name in the kasprintf() arguments and completes the first formatting pass. 2. While the formatter is delayed before its second pass, af_rxrpc_exit() calls unregister_key_type(), which removes the type from the registry and waits for key_gc_keytype(). 3. The collector takes key->sem for writing, retypes...

EPSS

Процентиль: 2%
0.00119
Низкий

7 High

CVSS3