Skip to main content

Linux Kernel EUVDEUVD-2026-82235

| CVE-2026-93127 HIGH
2026-09-17 Linux GHSA-6crf-588f-8r2f
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 or unprivileged-BPF access
  2. Delivery
    Craft BPF program with dual MEM/MEMSX stack fill sharing scalar id
  3. Exploit
    Trigger sync_linked_regs mis-refinement of sign-extended register
  4. Execution
    Bypass verifier bounds check
  5. Persist
    Perform out-of-bounds kernel read/write
  6. Impact
    Escalate privileges

Vulnerability Assessment

Exploitation Conditions

Requires the ability to load eBPF programs into the kernel - i.e. CAP_BPF or CAP_SYS_ADMIN, or a system where the unprivileged BPF sysctl (kernel.unprivileged_bpf_disabled) is left enabled (disabled by default on most modern distributions, which is the primary limiting factor). The vulnerable code path requires a kernel new enough to support BPF_MEMSX sign-extending narrowing loads (~6.6+ / cpu=v4 instruction set). Exploitation needs a specifically crafted instruction sequence: spill a scalar to a stack slot, fill it with both a BPF_MEM (zero-extend) and a BPF_MEMSX (sign-extend, value-changing) load so the registers share a scalar id, then use an equality comparison to drive sync_linked_regs() into refining the sign-extended register. No network exposure and no user interaction; it is entirely local. Attack complexity is low because the verifier miscalculation is deterministic once the instruction pattern is constructed.

Impact

This is a genuine BPF verifier logic flaw (CVE-2026-93127) whose real-world risk depends almost entirely on who can load BPF programs. The vendor CVSS 3.1 vector CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (7.8 HIGH) is credible for this class: unlike many crash-only kernel bugs, the description explicitly states the miscalculation 'can be turned into an out-of-bounds access,' which is the textbook BPF local-privilege-escalation primitive (verifier believes 0x80000000 while the register actually holds 0xffffffff80000000, defeating bounds checking). I MOSTLY AGREE with the vendor here - a controllable verifier OOB read/write is a real memory-corruption primitive, so C:H/I:H/A:H is defensible when the attacker can reach it. The limiting factor is authentication/capability: BPF_MEMSX sign-extending loads are a modern verifier feature and loading programs requires CAP_BPF/CAP_SYS_ADMIN or the (default-off on modern distros) unprivileged-BPF sysctl, matching PR:L. No EPSS score, no CISA KEV listing, and no public exploit are present in the input - so this is not confirmed exploited. Signals are internally consistent (local vector, low complexity, low-but-nonzero privilege); the main caveat is that raw 7.8 overstates practical risk on hardened systems where unprivileged BPF is disabled, effectively raising the required privilege.

Exploit ScenarioDerived

A local user with CAP_BPF (or on a system where unprivileged BPF is enabled) loads a crafted BPF program that spills a scalar to a stack slot, then fills the same slot twice - once with a plain zero-extending load (BPF_MEM) and once with a sign-extending narrowing load (BPF_MEMSX) - so both destination registers share one scalar id but hold different values. A subsequent 'if <zext-reg> == const' comparison causes the verifier's sync_linked_regs() to refine the sign-extended register to a value it never holds at runtime, letting the attacker bypass bounds checks and perform an out-of-bounds kernel access for privilege escalation. No public proof-of-concept is 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

A BPF verifier scalar-id tracking flaw in the Linux kernel allows a local attacker who can load eBPF programs to make the verifier believe a sign-extended stack-filled register holds a different value than it does at runtime, which can be converted into an out-of-bounds memory access. Exploitation is local and requires the privilege to load BPF programs - CAP_BPF or CAP_SYS_ADMIN, or a system where the unprivileged BPF sysctl has been left enabled (disabled by default on most modern distributions) - and the kernel must be new enough to support BPF_MEMSX sign-extending narrowing loads (roughly 6.6 / cpu=v4 and later). The verifier miscalculation is deterministic once the precise instruction pattern is built, so attack complexity is low, but no public exploit code has been identified at time of analysis and the issue is not confirmed actively exploited (no CISA KEV listing); EPSS-style urgency therefore stems from the high confidentiality, integrity and availability impact (CVSS 7.8) rather than observed exploitation.

RemediationAI

Apply the vendor-released patch containing the upstream fix commits f3614622dc41f3dd99bb4f691da253814e4e6cae and 2cb5f4ca695ebe552647e5ba4aad6934d6a43bae (https://git.kernel.org/stable/c/f3614622dc41f3dd99bb4f691da253814e4e6cae and https://git.kernel.org/stable/c/2cb5f4ca695ebe552647e5ba4aad6934d6a43bae); EUVD records the patched states as Linux 7.2.6 and 7.3-rc1, so the practical action is updating to those releases or to the equivalent kernel shipped by your distribution that carries these backports. Where patching must be deferred, the highest-leverage compensating control is to enforce the unprivileged BPF sysctl (kernel.unprivileged_bpf_disabled=1 or, preferably, 2 to make it permanent across boots), which removes the unprivileged attack path entirely but also breaks legitimate unprivileged BPF tooling and does not protect against processes that already hold CAP_BPF or CAP_SYS_ADMIN. Tightening who holds CAP_BPF/CAP_SYS_ADMIN (dropping the capability from containers, seccomp/LSM policy, or namespace-level capability restrictions) limits the remaining local attack surface but is not a substitute for the fix since any capable process can still trigger the verifier miscalculation. Note that attack complexity is low and the trigger is a deterministic instruction sequence, so once the fix is available it should be prioritized over long-term monitoring; the NVD record at https://nvd.nist.gov/vuln/detail/CVE-2026-93127 can be consulted for cross-references.

Affected VersionsENISA

Linux 3cd5c890652ba1f0682adc291b5446245259b692 <f3614622dc41f3dd99bb4f691da253814e4e6cae
Linux 7.0
Linux patch: 7.3-rc1
Linux patch: 7.2.6
Linux 3cd5c890652ba1f0682adc291b5446245259b692 <2cb5f4ca695ebe552647e5ba4aad6934d6a43bae
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 bug lives in the eBPF verifier's handling of spilled scalar registers. When a scalar is written to a stack slot with a plain store (BPF_STX) and later read back, check_stack_read_fixed_off() copies the spilled register state - including its scalar id - into the destination register. If that same slot is subsequently filled with a sign-extending narrowing load (BPF_MEMSX), the read path first copies the scalar id and then coerce_reg_to_size_sx() sign-extends the resulting value. Because the zero-extending BPF_MEM fill and the sign-extending BPF_MEMSX fill can share the same scalar id while holding different runtime values, the verifier's linked-register machinery (sync_linked_regs()) can propagate a refinement derived from an 'if <zx-reg> == const' comparison onto the sign-extended register. The verifier may then track a value such as 0x80000000 while the register actually holds 0xffffffff80000000, and that divergence between verifier state and runtime state is what enables an out-of-bounds access. The fix drops the shared scalar id at the sign-extension site in check_mem_access() whenever sign extension actually changes the value, mirroring the existing BPF_MOVSX guard in check_alu_op() (no_sext = reg_umax < 2^(size*8-1)). Root cause is best characterized as incorrect register/bounds state tracking in the BPF verifier (an OOB 'buffer overflow' condition per the source tags); BPF_MEMSX and the cpu=v4 instruction set are the specific ISA features that gate reachability.

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.8 HIGH

Local-only (AV:L); deterministic verifier flaw (AC:L); requires BPF-load privilege via CAP_BPF/unprivileged-BPF (PR:L); controllable OOB kernel access supports full C:H/I:H/A:H for LPE.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
4.0 AV:L/AC:L/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

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:11 cve.org
UNKNOWN (no severity yet)
CVE Published
Sep 17, 2026 - 16:11 cve.org
HIGH 7.8

DescriptionCVE.org

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

bpf: Drop scalar id on sign-extending narrowing stack fills

When a spilled scalar is filled back with a sign-extending narrowing load (BPF_MEMSX), check_stack_read_fixed_off() copies the spilled register including its scalar id, but coerce_reg_to_size_sx() then sign-extends the filled register's value. If the same slot is also filled with a plain zero-extending load (BPF_MEM), both destination registers share the id yet hold different values. A later 'if <zext-reg> == const' then refines the sign-extended register through sync_linked_regs() to a value it does not have at runtime (e.g. the verifier believes 0x80000000 while the register is 0xffffffff80000000), which can be turned into an out-of-bounds access.

Drop the shared scalar id at the sign-extension site in check_mem_access() when sign extension actually changes the value, mirroring the BPF_MOVSX handling in check_alu_op() (no_sext = reg_umax < 2^(size*8-1)).

Executive ViewAI

Why It Matters

A high-severity flaw in the Linux kernel's BPF verifier allows a local user who can load eBPF programs to corrupt kernel memory handling, potentially gaining control over data the kernel should protect. Systems running kernel branches from roughly 6.6 onward, particularly those where unprivileged BPF has been enabled, carry the greatest exposure; hosts with default hardened settings limit the attack to users already holding elevated BPF privileges. Because kernel-level compromise can affect confidentiality, integrity, and availability of everything on the host, leadership should treat remediation as a standard patch-management priority rather than an emergency.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 91% exploitable
Prevalence
Low
Linux ubiquitous, but BPF_MEMSX fill plus CAP_BPF exploit path is a niche config
Data Quality
3 sources
Confidence: Low

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 16.0 Not-Affected

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