Skip to main content

Linux Kernel EUVDEUVD-2026-81978

| CVE-2026-90317 HIGH
2026-09-17 Linux GHSA-6jx2-qmxh-94v4
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 CAP_BPF / BPF load access
  2. Delivery
    Load sleepable BPF program holding kptr under spin lock
  3. Exploit
    Release final bpf_spin_unlock leaving stale RCU pointer
  4. Execution
    Race another CPU to free object
  5. Persist
    Reallocate slab with controlled data
  6. Impact
    Corrupt task_struct/creds for root

Vulnerability Assessment

Exploitation Conditions

Requires the ability to load and run sleepable BPF programs, which needs CAP_BPF (unprivileged BPF is disabled by default on most current distributions), so it is a local, privileged-foothold bug rather than remote. The specific trigger is a sleepable program where a bpf_spin_lock provides the sole RCU protection for a kptr and the pointer is used after the final bpf_spin_unlock(); non-sleepable programs and code inside an explicit RCU read-side section are not affected. Reliable exploitation additionally requires winning a cross-CPU race to free and reallocate the object (heap grooming) within the window, which limits ease of exploitation despite the powerful task_struct UAF primitive.

Impact

This is a genuine local privilege-escalation primitive, not a mere crash bug. The BPF verifier fails to invalidate an RCU-protected kernel pointer (kptr) after the final bpf_spin_unlock() in a sleepable program, where that spin lock was the only source of RCU protection; the object can then be freed on another CPU while the pointer remains usable, and the report explicitly demonstrates a task_struct use-after-free in __bpf_get_task_stack(). A task_struct UAF is a classic, highly controllable path to overwriting credentials and achieving root, so the vendor's C:H/I:H/A:H impact is justified - unlike many kernel UAFs that are crash-only. The vendor CVSS 3.1 vector (AV:L/AC:L/PR:L/UI:N/S:U, 7.8) is largely defensible, but AC:L understates the cross-CPU free race that must be won; I assess AC:H, yielding ~7.0. PR:L is appropriate because loading and running sleepable BPF programs requires CAP_BPF (and unprivileged BPF is disabled by default on most modern distros), so this is not attacker-reachable without a foothold and BPF capability. No EPSS, no CISA KEV entry, and no public exploit - the description references a private 'capability-limited runtime PoC' held by the reporter, which is not the same as public exploit code or active exploitation. Net: a real, high-value local escalation bug worth prompt patching on any host exposing BPF to semi-trusted workloads, but its reach is bounded by the CAP_BPF requirement and the specific sleepable-program feature combination.

Exploit ScenarioDerived

An attacker with CAP_BPF (or in a container/runtime granted BPF load rights) loads a sleepable BPF program that stashes a task_struct kptr protected only by a bpf_spin_lock, releases the lock, and then races another CPU to free the object while the stale pointer is still used by __bpf_get_task_stack(). By grooming the freed slab and reallocating it with attacker-controlled data, the UAF is converted into arbitrary kernel read/write and credential overwrite for local privilege escalation. A private capability-limited PoC is reported to trigger the task_struct UAF, but no public exploit code was identified at time of analysis.

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 – Sep 18, 2026

Local privilege escalation in the Linux kernel BPF verifier allows an attacker holding CAP_BPF to obtain a use-after-free of a task_struct by loading a sleepable BPF program in which a bpf_spin_lock is the only RCU protection for a kernel pointer (kptr): the verifier leaves the pointer valid after the final bpf_spin_unlock(), so another CPU can free and reallocate the object before the stale pointer is dereferenced in __bpf_get_task_stack(). Exploitation requires the ability to load sleepable BPF programs (unprivileged BPF is disabled by default on most current distributions) and the ability to win a cross-CPU race for heap grooming, which makes this a genuine but non-trivial local privilege-escalation primitive rather than a trivially weaponizable bug. A capability-limited runtime proof-of-concept is described in the upstream fix commit, no confirmed active exploitation or KEV listing is present, and vendor patches are available through the referenced kernel stable commits.

RemediationAI

Apply the vendor-released kernel fix: update to a release containing commit 7ae71629357d0a6d0bdadb929c7b296d5b7e61c2 (with 180c7000712db77063b3a26f4c97e7dd9038f449 for the other maintained branch), corresponding to the EUVD-recorded Linux 7.2.6 and 7.3-rc1 tags, or install the equivalent backport from your distribution's kernel security advisory; details are at https://git.kernel.org/stable/c/7ae71629357d0a6d0bdadb929c7b296d5b7e61c2, https://git.kernel.org/stable/c/180c7000712db77063b3a26f4c97e7dd9038f449 and https://nvd.nist.gov/vuln/detail/CVE-2026-90317. Because the defect already presupposes the ability to load sleepable BPF programs, the practical compensating control is to keep or set kernel.unprivileged_bpf_disabled=1 (the default on most current distributions) so that BPF program loading requires CAP_BPF/CAP_SYS_ADMIN, which denies the primitive to unprivileged local users; the trade-off is that container runtimes and monitoring agents that rely on unprivileged BPF or on delegated CAP_BPF will stop working, and the setting offers no protection against an attacker who already holds CAP_BPF. Tightening BPF LSM/lockdown policy or reducing which local accounts are granted CAP_BPF shrinks the exposure window but does not eliminate the stale-pointer path, so patching remains the only complete fix; additionally, watch kernel logs for KASAN/KFENCE reports in __bpf_get_task_stack() and audit for unexpected BPF program loads (especially sleepable tracing/LSM programs) as detection signals, since the described proof-of-concept is capability-limited and local.

Affected VersionsENISA

Linux 6.6
Linux patch: 7.2.6
Linux patch: 7.3-rc1
Linux 5861d1e8dbc4e1a03ebffb96ac041026cdd34c07 <7ae71629357d0a6d0bdadb929c7b296d5b7e61c2
Linux 5861d1e8dbc4e1a03ebffb96ac041026cdd34c07 <180c7000712db77063b3a26f4c97e7dd9038f449
Linux patch: 0

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 flaw sits in the eBPF verifier's lifetime tracking for kptr values (kernel pointers stored in BPF maps and held under RCU protection) rather than in a memory-safety bug in the BPF JIT. In sleepable BPF programs the implicit program-wide RCU read lock of ordinary (non-sleepable) programs is absent, so a bpf_spin_lock region can be the verifier's only RCU-protected context; when the program performs the final bpf_spin_unlock(), that protection ends, yet the verifier did not mark the associated RCU-protected pointer invalid, letting a concurrent CPU free and reuse the underlying object before the pointer is consumed. The fix records whether the program is in an RCU-protected context before releasing the lock and invalidates RCU-protected pointers only when the unlock leaves the last such context, deliberately preserving pointer validity in non-sleepable programs and inside an explicit RCU read-side section. The observed manifestation is a use-after-free in __bpf_get_task_stack(), the helper that reads task_struct data, matching the tag 'Information Disclosure' while the affected product data is given as CPE cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*; no CWE is provided, and the root-cause class corresponds to CWE-416 (Use After Free) arising from incomplete pointer-lifetime validation in the verifier. Because the corrupted object is a task_struct, the primitive also carries data-integrity and confidentiality impact (CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H).

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 CAP_BPF-gated access (AV:L/PR:L); cross-CPU free race raises AC:H; controllable task_struct UAF enables full LPE, so C:H/I:H/A:H.

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

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
Sep 18, 2026 - 18:22 NVD
7.8 (HIGH)
Patch available
Sep 17, 2026 - 17:19 EUVD
CVE Published
Sep 17, 2026 - 16:08 cve.org
HIGH 7.8
CVE Published
Sep 17, 2026 - 16:08 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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

bpf: Invalidate RCU pointers after final spin unlock

In a sleepable BPF program, a spin lock can provide the only RCU protection for a kptr. The final bpf_spin_unlock() ends that protection, but the verifier leaves the pointer valid. Another CPU can then free the object before the pointer is used. A capability-limited runtime PoC triggered a task_struct use-after-free in __bpf_get_task_stack().

Record whether the program is in an RCU-protected context before releasing the lock. Invalidate RCU-protected pointers only when the unlock leaves the final such context. This preserves valid pointers in non-sleepable programs and inside an explicit RCU read-side section.

Executive ViewAI

Why It Matters

Organizations running Linux kernels with BPF enabled and granting CAP_BPF to workloads or containers face a local privilege-escalation risk from CVE-2026-90317, which can allow an attacker to elevate privileges on the host. Although no confirmed active exploitation (CISA KEV) is present and exploitation requires a race and CAP_BPF, publicly available exploit code exists (a capability-limited runtime proof-of-concept), so unpatched multi-tenant or container environments remain exposed. Leadership should prioritize patching because a successful exploit could break host isolation and expand an attacker’s access across critical workloads.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Low
Linux kernel is ubiquitous but sleepable-BPF kptr-under-spinlock path is a niche new feature
Data Quality
5 sources
Confidence: Medium

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
Defer
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

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

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