ZeroHour

CVE-2026-89988

mass

Use-After-Free in Linux Kernel kprobes Blacklist Enables Local Attacks

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

CVE-2026-89988 is a use-after-free race condition in the Linux kernel's kprobes subsystem: the function __within_kprobe_blacklist() walks the kprobe_blacklist list without holding kprobe_mutex, and when a module is unloaded, kprobe_remove_area_blacklist() removes its blacklist entries and frees them immediately with kfree(), so a concurrent blacklist check can dereference freed memory. The flaw is triggered whenever a kernel module is unloaded while another path checks the blacklist, including atomic or non-preemptible contexts where the sleeping mutex cannot even be taken. An attacker with local low-privilege access who can trigger module unloading alongside kprobe blacklist lookups could crash the kernel or potentially exploit the freed-memory window for privilege escalation, consistent with the CVSS score of 7.8 (high) with high confidentiality, integrity, and availability impact. Any Linux system running a kernel with kprobes enabled and the pre-fix code is affected; the exposed impact in practice depends on whether modules are unloaded at runtime. No public proof-of-concept is known, the issue is not in CISA's KEV catalog, and no in-the-wild exploitation has been reported.

What to do: Track stable and vendor kernel updates for the backported RCU-protected kprobes patch and deploy it as soon as your distribution ships it; no specific fixed version number is available yet. In the interim, restrict untrusted local shell access on production hosts and avoid unloading kernel modules on systems where unprivileged users may be running, since the race requires concurrent module unload and blacklist lookups. Verify whether CONFIG_KPROBES is enabled in your running kernel's configuration to gauge relevance.

Affected
Linux kernel (kprobes subsystem)
Estimated exposure
massmillions to billions of Linux systems (servers, cloud instances, Android, embedded) carry the affected kernel code, though only those unloading modules at… — The Linux kernel underpins the vast majority of internet-facing servers, cloud workloads, Android devices, and embedded systems, and mainstream distribution kernels build kprobes support in; the practical attack surface is narrower since…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: kprobes: Protect kprobe_blacklist with RCU __within_kprobe_blacklist() traverses kprobe_blacklist without holding kprobe_mutex. When a module is unloaded, kprobe_remove_area_blacklist() removes blacklist entries and immediately frees them with kfree(). A concurrent call to within_kprobe_blacklist() can therefore dereference freed memory. Furthermore, within_kprobe_blacklist() can be called in atomic or non-preemptible contexts where the sleeping kprobe_mutex cannot be taken. Protect kprobe_blacklist with RCU. Use guard(rcu)() and list_for_each_entry_rcu() for traversal, list_add_tail_rcu() for insertions, list_del_rcu() for deletions, and kfree_rcu() to reclaim entries safely after a grace period.

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.