Skip to main content

Linux Kernel EUVDEUVD-2026-59027

| CVE-2026-72069 CRITICAL
2026-08-15 416baaa9-dc9f-4396-8d5f-8c081fb06d67 GHSA-mgq9-4f63-hxm9
Critical
Disputed · 9.8 Vendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Share

Severity by source

Sources disagree (Medium–Critical)
Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67) PRIMARY
9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI
7.0 HIGH

Local-only use-after-free requiring a narrow race window and prior local code execution, so AV:L, AC:H, PR:L; successful memory corruption yields full C/I/A impact.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Red Hat
7.0 MEDIUM
qualitative

vuln.today treats the vendor’s rating as authoritative. A higher third-party CVSS (e.g. CISA-ADP) is shown for transparency but does not drive the headline severity.

CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Aug 17, 2026 - 06:38 vuln.today
CVSS changed
Aug 17, 2026 - 06:22 NVD
9.8 (CRITICAL)
Patch available
Aug 15, 2026 - 07:20 EUVD
CVE Published
Aug 15, 2026 - 06:21 cve.org
CRITICAL 9.8
CVE Published
Aug 15, 2026 - 06:21 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

locking/rt: Fix the incorrect RCU protection in rt_spin_unlock()

rt_spin_unlock() releases the RCU protection before unlocking the lock. That opens the door for the following UAF scenario:

T1 T2 spin_lock(&p->lock); rcu_read_lock(); invalidate(p); p = rcu_dereference(ptr); rcu_assign_pointer(ptr, NULL); if (!p) return; spin_unlock(&p->lock); spin_lock(&p->lock) lock(&lock->lock); rcu_read_lock(); kfree_rcu(p); rcu_read_unlock(); .... spin_unlock(&p->lock) rcu_read_unlock(); // Ends grace period rcu_do_batch() kfree(p); UAF -> rt_mutex_cmpxchg_release(&lock->lock...)

Regular spinlocks keep preemption disabled accross the unlock operation, which provides full RCU protection, but the RT substitution fails to resemble that. Same applies for the rwlock substitution.

Move the rcu_read_unlock() invocation past the unlock operations to match the non-RT semantics. This makes it asymmetric vs. rt_xxx_lock(), but that's harmless as the caller needs to hold RCU read lock across the lock operation. The migrate_enable() call stays before the unlock operation because there is no per CPU operation in the unlock path which would require migration to be kept disabled.

AnalysisAI

Local privilege escalation / memory corruption in the Linux kernel's PREEMPT_RT locking substitution stems from rt_spin_unlock() (and the rwlock substitution) releasing RCU read-side protection before completing the unlock, creating a use-after-free window where an object freed via kfree_rcu() can be accessed by rt_mutex_cmpxchg_release(). Only PREEMPT_RT (real-time) kernel builds are affected, since regular spinlocks keep preemption disabled across unlock and thus retain full RCU protection. The upstream fix has been merged and backported to multiple stable trees; no public exploit identified at time of analysis, and EPSS is low (0.21%).

Technical ContextAI

On PREEMPT_RT kernels, spinlocks and rwlocks are substituted with rt_mutex-based sleeping locks (rt_spin_lock/rt_spin_unlock, rwlock substitution). Non-RT spinlocks disable preemption for the critical section, which implicitly extends any surrounding RCU read-side grace period until the lock is fully released. The RT substitution failed to mirror this: rt_spin_unlock() called rcu_read_unlock() before the underlying rt_mutex_cmpxchg_release() unlock completed. If another thread had already invalidated and kfree_rcu()'d the object protecting the lock, the premature end of the grace period lets rcu_do_batch() free the memory while rt_spin_unlock() is still dereferencing lock->lock - a classic use-after-free (CWE-416, though the record lists CWE as N/A). The fix moves rcu_read_unlock() past the unlock operation, restoring non-RT ordering; migrate_enable() correctly stays before the unlock because the unlock path has no per-CPU dependency.

RemediationAI

Vendor-released patch: update to a fixed stable kernel - 6.6.148, 6.12.101, 6.18.40, or 7.1.5 (mainline fix in 7.2-rc1) or later within your series; the corresponding stable commits are listed at git.kernel.org (e.g. https://git.kernel.org/stable/c/1f0d56d3f1e88f20f6e46109402f8c15d59bac37). Apply your distribution's next kernel update that references these commits and reboot. Because the defect exists only in the PREEMPT_RT locking path, systems running a non-RT kernel are not exposed and need no action beyond normal patching; where immediate patching of RT hosts is impossible, the only real compensating control is to restrict local/untrusted code execution on those hosts (the bug requires a local attacker to drive the race), accepting that this does not remove the underlying flaw. There is no feature-level toggle to disable this code path short of not running a PREEMPT_RT kernel.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

EUVD-2026-59027 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy