Skip to main content

Linux Kernel CVE-2026-52991

| EUVDEUVD-2026-38859 HIGH
Time-of-check Time-of-use (TOCTOU) Race Condition (CWE-367)
2026-06-24 Linux GHSA-3v2r-c9x3-5fgr
7.8
CVSS 3.1 · Vendor: Linux
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain local write access to cgroup pressure file
  2. Delivery
    Issue pressure_write() trigger registration
  3. Exploit
    Concurrently trigger rmdir or cgroup.pressure=0 to free ctx
  4. Execution
    Win race so of->priv is freed/NULL
  5. Persist
    Dereference dangling/NULL pointer in pressure_write()
  6. Impact
    Kernel crash or memory corruption for privilege escalation

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture TOCTOU prevention
Exploitation Conditions

Exploitation requires local access to a system with PSI enabled (CONFIG_PSI) and write permission to a cgroupv2 pressure-stall interface file (e.g. memory.pressure) so the attacker can call pressure_write() to register a trigger. The attacker must also be able to drive the concurrent operation that frees or nulls of->priv - either removing the owning cgroup directory (rmdir) or writing cgroup.pressure=0 - at the same moment. Limiting factors: it is local-only (AV:L) and not remotely reachable; it needs at least low-level privilege/delegated cgroup write access (PR:L), not unauthenticated default access; and it is a timing-sensitive race between two concurrent operations on separate CPUs, so success is probabilistic rather than deterministic. Systems where untrusted users cannot write to cgroup pressure files (no delegated subtrees) are not realistically exploitable.

Impact

Signals are largely consistent in pointing to a real-but-not-urgent local issue. The CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H = 7.8 HIGH) requires local access and some privilege, ruling out remote mass exploitation. EPSS is low (0.19%, 8th percentile) and the CVE is not in CISA KEV, so there is no evidence of active exploitation. No SSVC decision data was provided. One internal inconsistency warrants caution: the official vector rates AC:L, but the bug is a narrow race condition between two concurrent operations on separate CPUs, which in practice raises attack complexity - reliably winning the free/realloc race for exploitation is non-trivial, so AC:H is arguably more accurate. The 'Information Disclosure' tag also conflicts with the actual UAF impact; treat the tag as unreliable. Realistic worst case is local privilege escalation or kernel DoS (the NULL-deref path is the easiest to trigger and yields a crash). This is a routine, patch-on-schedule kernel hardening fix rather than a drop-everything emergency, but it should be prioritized on multi-tenant or untrusted-local-user systems (containers, shared hosts) where local attackers are part of the threat model.

Exploit ScenarioDerived

A local attacker (or compromised process) on a shared or containerized host that can write to a cgroup's memory.pressure file races a pressure-trigger write against either a concurrent cgroup directory removal or a write of cgroup.pressure=0 that drains the open file. Winning the race causes pressure_write() to dereference a freed or NULLed of->priv, crashing the kernel (DoS) or, with heap-grooming to reclaim the freed ctx, potentially corrupting kernel memory toward privilege escalation. No public proof-of-concept is identified, though a KASAN reproducer-style report is documented in the commit.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 28, 2026

Local privilege-escalation-capable memory corruption in the Linux kernel's PSI (Pressure Stall Information) subsystem allows a local user with write access to cgroup pressure files to trigger a use-after-free or NULL-pointer dereference. The flaw stems from a race between pressure_write() and cgroup file release/rmdir on the kernfs_open_file->priv pointer, confirmed via a KASAN slab-use-after-free report in pressure_write+0xa4/0x210. No public exploit identified at time of analysis, and EPSS is low (0.19%, 8th percentile), indicating no observed mass exploitation.

RemediationAI

Vendor-released patch: upgrade to a fixed stable kernel - 6.18.33, 7.0.10, or 7.1 (or your distribution's backported equivalent) - which extends the cgroup_mutex scope across all of->priv accesses and adds the NULL check. Apply the corresponding distribution kernel update (RHEL/Debian/Ubuntu/SUSE backports) and reboot, since kernel fixes require a reboot or livepatch to take effect; the upstream commits are at https://git.kernel.org/stable/c/03dc070fa0fc3cb4068693f468ccd5f8a7e58282, https://git.kernel.org/stable/c/d4352c0709bfd38c752fccbde7fd72a82ac78f23, and https://git.kernel.org/stable/c/a5b98009f16d8a5fb4a8ff9a193f5735515c38fa. Where immediate patching is not possible, the most direct compensating control is to restrict write access to cgroupv2 pressure files: avoid delegating cgroup subtrees to untrusted users and ensure memory.pressure/io.pressure/cpu.pressure and cgroup.pressure are not writable by unprivileged or untrusted local accounts and containers - the trade-off is that legitimate workloads relying on PSI trigger registration (e.g. userspace OOM managers like systemd-oomd or low-memory daemons) will lose that capability. As a deeper but more disruptive option, disabling PSI (CONFIG_PSI=n or the psi=0 boot parameter) removes the vulnerable code path entirely but also disables all pressure-stall accounting and any tooling that depends on it.

Affected VersionsENISA

Linux patch: 7.1
Linux 5.2
Linux patch: 6.18.33
Linux 0e94682b73bfa6c44c98af7a26771c9c08c055d5 <a5b98009f16d8a5fb4a8ff9a193f5735515c38fa
Linux 0e94682b73bfa6c44c98af7a26771c9c08c055d5 <d4352c0709bfd38c752fccbde7fd72a82ac78f23
Linux patch: 0
Linux 0e94682b73bfa6c44c98af7a26771c9c08c055d5 <03dc070fa0fc3cb4068693f468ccd5f8a7e58282
Linux patch: 7.0.10

Affected Packages

euvd linux no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The vulnerability lives in kernel/cgroup/cgroup.c within the scheduler's PSI (sched/psi) feature, which exposes per-cgroup resource-pressure metrics through cgroupv2 files such as memory.pressure, io.pressure, and cpu.pressure. User space can write to these files to register pressure-stall triggers; the trigger context (ctx) is stored in struct kernfs_open_file->priv. The root cause is a classic concurrency/lifetime bug (effectively CWE-416 Use-After-Free and CWE-476 NULL Pointer Dereference; CWE was listed as N/A in the source data). cgroup_mutex protects deallocation of of->priv in cgroup_file_release(), but pressure_write() read and dereferenced ctx = of->priv outside that protected window. Two race classes exist: (1) a concurrent vfs_rmdir()/cgroup_destroy path frees ctx via kernfs_drain_open_files() before pressure_write() dereferences it (UAF), and (2) a concurrent write of cgroup.pressure=0 invokes kernfs_show()->kernfs_drain_open_files() which sets of->priv=NULL, producing a NULL dereference. The fix extends cgroup_mutex coverage to all of->priv access, moves the ctx fetch to after the live kn lock is acquired, and adds a NULL check. The CPE data is generic (cpe:2.3:a:linux:linux:*) and does not pin exact version ranges. Note the source tag labels this 'Information Disclosure,' which conflicts with the UAF/memory-corruption nature and the C:H/I:H/A:H impact rating.

Know when the next one hits your stack

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Linux) PRIMARY 7.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.0 HIGH

Local cgroup pressure-file write access gives AV:L/PR:L; the timing-sensitive cross-CPU race justifies AC:H; UAF in kernel context 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:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE 5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
Red Hat 7.0 HIGH

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

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

Lifecycle Timeline

4
CVSS changed
Jun 28, 2026 - 08:22 NVD
7.8 (HIGH)
Patch available
Jun 24, 2026 - 18:02 EUVD
CVE Published
Jun 24, 2026 - 16:29 cve.org
HIGH 7.8
CVE Published
Jun 24, 2026 - 16:29 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

sched/psi: fix race between file release and pressure write

A potential race condition exists between pressure write and cgroup file release regarding the priv member of struct kernfs_open_file, which triggers the uaf reported in [1].

Consider the following scenario involving execution on two separate CPUs:

CPU0 CPU1 == == vfs_rmdir() kernfs_iop_rmdir() cgroup_rmdir() cgroup_kn_lock_live() cgroup_destroy_locked() cgroup_addrm_files() cgroup_rm_file() kernfs_remove_by_name() kernfs_remove_by_name_ns() vfs_write() __kernfs_remove() new_sync_write() kernfs_drain() kernfs_fop_write_iter() kernfs_drain_open_files() cgroup_file_write() kernfs_release_file() pressure_write() cgroup_file_release() ctx = of->priv; kfree(ctx); of->priv = NULL; cgroup_kn_unlock() cgroup_kn_lock_live() cgroup_get(cgrp) cgroup_kn_unlock() if (ctx->psi.trigger) // here, trigger uaf for ctx, that is of->priv

The cgroup_rmdir() is protected by the cgroup_mutex, it also safeguards the memory deallocation of of->priv performed within cgroup_file_release(). However, the operations involving of->priv executed within pressure_write() are not entirely covered by the protection of cgroup_mutex. Consequently, if the code in pressure_write(), specifically the section handling the ctx variable executes after cgroup_file_release() has completed, a uaf vulnerability involving of->priv is triggered.

Therefore, the issue can be resolved by extending the scope of the cgroup_mutex lock within pressure_write() to encompass all code paths involving of->priv, thereby properly synchronizing the race condition occurring between cgroup_file_release() and pressure_write().

And, if an live kn lock can be successfully acquired while executing the pressure write operation, it indicates that the cgroup deletion process has not yet reached its final stage; consequently, the priv pointer within open_file cannot be NULL. Therefore, the operation to retrieve the ctx value must be moved to a point *after* the live kn lock has been successfully acquired.

In another situation, specifically after entering cgroup_kn_lock_live() but before acquiring cgroup_mutex, there exists a different class of race condition:

CPU0: write memory.pressure CPU1: write cgroup.pressure=0 ===== =======

kernfs_fop_write_iter() kernfs_get_active_of(of) pressure_write() cgroup_kn_lock_live(memory.pressure) cgroup_tryget(cgrp) kernfs_break_active_protection(kn) ... blocks on cgroup_mutex

cgroup_pressure_write() cgroup_kn_lock_live(cgroup.pressure) cgroup_file_show(memory.pressure, false) kernfs_show(false) kernfs_drain_open_files() cgroup_file_release(of) kfree(ctx) of->priv = NULL cgroup_kn_unlock()

... acquires cgroup_mutex ctx = of->priv; // may now be NULL if (ctx->psi.trigger) // NULL dereference

Consequently, there is a possibility that of->priv is NULL, the pressure write needs to check for this.

Now that the scope of the cgroup_mutex has been expanded, the original explicit cgroup_get/put operations are no longer necessary, this is because acquiring/releasing the live kn lock inherently executes a cgroup get/put operation.

[1] BUG: KASAN: slab-use-after-free in pressure_write+0xa4/0x210 kernel/cgroup/cgroup.c:4011 Call Trace: pressure_write+0xa4/0x210 kernel/cgroup/cgroup.c:4011 cgroup_file_write+0x36f/0x790 kernel/cgroup/cgroup.c:43 ---truncated---

Executive ViewAI

Why It Matters

CVE-2026-52991 is a high-severity local privilege escalation vulnerability in the Linux kernel's Pressure Stall Information (PSI) subsystem-users with write access to cgroup pressure files could escalate to root-level privileges. No public exploit identified at time of analysis; current exploitation probability is minimal (EPSS 0.2%) affecting a critical infrastructure component across Linux deployments. Organizations should prioritize kernel patch deployment across their Linux fleet, scheduling updates within standard change management procedures based on system criticality.

Business Impact: High
Compensating Controls

Patch available per vendor advisory. Interim mitigations: Restrict write access to /proc/pressure/* files using file system permissions and SELinux/AppArmor policies to limit the user population capable of triggering privilege escalation until patching is complete.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Ubiquitous
Linux kernel cgroupv2/PSI present across virtually all modern Linux deployments
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
High

Priority Score

39
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +39
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

Vendor StatusVendor

SUSE

Severity: Moderate
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

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