Skip to main content

Linux Kernel EUVDEUVD-2026-86982

| CVE-2026-98151 MEDIUM
Reachable Assertion (CWE-617)
2026-09-25 Linux GHSA-6969-2pr3-9qx5
5.5
CVSS 3.1 · NVD
View

Attack ChainAIDerived

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

  1. Access
    Obtain local low-privileged shell
  2. Delivery
    Craft BPF program with speculative pointer arithmetic
  3. Exploit
    Submit via bpf() syscall to verifier
  4. Execution
    Trigger REG INVARIANTS VIOLATION warning
  5. Impact
    Kernel WARN/panic denial of service

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V16 - Security Logging and Error Handling Reachable assertion handling
Exploitation Conditions

Requires local ability to load eBPF programs, which in practice means unprivileged eBPF must be permitted (e.g. kernel.unprivileged_bpf_disabled=0) or the actor must already hold CAP_BPF/CAP_SYS_ADMIN - a significant limiting factor because most modern distributions ship unprivileged eBPF disabled by default. The specific trigger is a crafted BPF program performing pointer arithmetic (dst_reg += bounded scalar) on a PTR_TO_MAP_VALUE register that drives the verifier down the speculative sanitize_ptr_alu() path. Impact is bounded to a kernel WARN splat unless the system is configured with panic_on_warn, in which case it escalates to a full denial of service; there is no network vector and no confidentiality/integrity consequence.

Impact

All signals point to a low-to-moderate, availability-only local issue rather than a priority threat. The provided CVSS vector (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H, base 5.5 Medium) describes a locally-reachable flaw requiring low privileges, with no confidentiality or integrity impact and only availability impact - consistent with CWE-617 (reachable assertion / verifier WARN). EPSS is very low at 0.16% (4th percentile), the CVE is NOT on CISA KEV, and no public exploit code is referenced, so exploitation status is 'no public exploit identified at time of analysis'. These signals are mutually consistent (low EPSS, no KEV, local-only, availability-only) - there is no conflict suggesting hidden severity. One nuance to verify: the input Tags label this 'Information Disclosure', but the CVSS vector sets C:N and the root cause is a false-positive verifier invariant warning on a safe program, which maps to denial of service (A:H), not disclosure - treat the 'Information Disclosure' label as unreliable. Realistically this is a code-correctness/robustness fix in the eBPF verifier whose practical impact is a kernel WARN splat (crash only if panic_on_warn is set), reachable only where unprivileged eBPF is permitted. It is a legitimate fix but not an urgent, widely-exploited priority.

Exploit ScenarioDerived

A local unauthenticated-in-the-kernel-sense but low-privileged user on a system that permits unprivileged eBPF loads a crafted BPF program performing speculative pointer arithmetic on a PTR_TO_MAP_VALUE register. The verifier's speculative-path handling snapshots an inconsistent register state (var_off out of sync with the 32-bit range), tripping reg_bounds_sanity_check() and emitting a REG INVARIANTS VIOLATION WARN, which becomes a denial of service on kernels configured with panic_on_warn. No public exploit code is referenced in the provided data.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 – Oct 21, 2026

Crafted pointer arithmetic in a BPF program can desynchronize the verifier's 64-bit var_off and 32-bit subregister bounds, triggering a REG INVARIANTS VIOLATION WARN in the Linux kernel and, on systems with panic_on_warn enabled, a local denial of service. The bug affects Linux kernel builds before the stable fixes 6.12.111, 6.18.53, 7.2.7, and 7.3-rc2, and requires local low-privileged access (CVSS PR:L) with the ability to load eBPF programs-typically unprivileged eBPF enabled or CAP_BPF/CAP_SYS_ADMIN. No public exploit identified at time of analysis; EPSS is 0.16% (4th percentile), and there is no confidentiality or integrity impact.

RemediationAI

Apply the vendor-released stable fixes: Linux 6.12.111, 6.18.53, 7.2.7, or 7.3-rc2 (or later), corresponding to the git.kernel.org stable commits 21a681526c715aebb4f918b8c131583442d1b3d8, d623a4a58bb238443505d5c2949d1182dcfc26b6, 9f9477ae73de9c5a28e8ab7000d8097b078faee4, and 150aeba624e8b7cac51c39440d7e8e1fd11de9a0; see https://nvd.nist.gov/vuln/detail/CVE-2026-98151. For the EUVD-listed Linux 6.8, confirm vendor backport status because the provided data does not identify a 6.8 fix. Where patching is delayed, set kernel.unprivileged_bpf_disabled=1 (or 2) to block unprivileged BPF program loading and restrict CAP_BPF/CAP_SYS_ADMIN, accepting that this breaks unprivileged eBPF-based observability, container networking, and sandbox tooling. Ensure kernel.panic_on_warn is not enabled on systems where a verifier WARN must not escalate to a panic, understanding that this removes a deliberate diagnostic hardening control. No public exploit identified at time of analysis.

Affected VersionsENISA

Linux patch: 6.12.111
Linux 6.8
Linux patch: 7.2.7
Linux 5f99f312bd3bedb3b266b0d26376a8c500cdc97f <d623a4a58bb238443505d5c2949d1182dcfc26b6
Linux 5f99f312bd3bedb3b266b0d26376a8c500cdc97f <9f9477ae73de9c5a28e8ab7000d8097b078faee4
Linux patch: 6.18.53
Linux patch: 7.3-rc2
Linux patch: 0
Linux 5f99f312bd3bedb3b266b0d26376a8c500cdc97f <21a681526c715aebb4f918b8c131583442d1b3d8
Linux 5f99f312bd3bedb3b266b0d26376a8c500cdc97f <150aeba624e8b7cac51c39440d7e8e1fd11de9a0

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 is a verifier state-consistency bug (CWE-617, reachable assertion) in the eBPF verifier's pointer arithmetic handling. For PTR_TO_MAP_VALUE, adjust_ptr_min_max_vals() computes a new offset into var_off and the 32/64-bit ranges; because pointer registers do not track 32-bit subregister bounds, __mark_reg32_unbounded() blanks r32 to the full range and reg_bounds_sync() later re-derives it. On the unprivileged path, sanitize_ptr_alu() inserts speculative masking and, via sanitize_speculative_path() -> push_stack(), snapshots register state between those two steps for the next instruction's speculative verification. The snapshot therefore carries a const var_off alongside a fully unbounded r32; when the speculative path reaches reg_bounds_sanity_check(), the mismatch trips the WARN. The fix takes approach 2: move __mark_reg32_unbounded() after sanitize_ptr_alu() so the speculative snapshot preserves the pointer's original consistent r32, while the non-speculative path still blanks and re-derives r32 as before. CPE data is wildcard (cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*), so version identification depends on the EUVD patch ranges rather than CPE granularity. Although the feed carries an Information Disclosure tag, the assessed vector and root cause support only availability impact (C:N/I:N/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

NVD PRIMARY 5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.5 MEDIUM

Local bpf() syscall access with low privilege (eBPF load capability), deterministic trigger so AC:L, and a verifier WARN causing only availability impact (A:H), no C/I.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from NVD.

CVSS VectorNVD

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

Lifecycle Timeline

4
CVSS changed
Oct 21, 2026 - 20:39 NVD
5.5 (MEDIUM)
Patch available
Sep 25, 2026 - 12:02 EUVD
CVE Published
Sep 25, 2026 - 10:36 nvd
MEDIUM 5.5
CVE Published
Sep 25, 2026 - 10:36 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

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

bpf: Fix REG INVARIANTS VIOLATION on speculative pointer arithmetic

Take the following unprivileged program as an example:

r0 = bpf_map_lookup_elem(...) /* PTR_TO_MAP_VALUE, offset 0 */ ... 14: r0 += r1 /* r1 is a bounded scalar */ 15: r9 = r0

Loading it triggers a verifier warning from reg_bounds_sanity_check():

verifier bug: REG INVARIANTS VIOLATION (alu): const subreg tnum out of sync with range bounds r64={.base=0x0, .size=0x0} r32={.base=0x0, .size=0xffffffff} var_off=(0x0, 0x0)

What happens:

  1. Processing insn 14 (r0 += r1) in adjust_ptr_min_max_vals(), the new

offset is computed into dst_reg's var_off and 32/64-bit ranges.

  1. Because pointer registers do not track 32-bit subregister bounds,

__mark_reg32_unbounded() first sets r32 to the full range; r32 is re-derived from the offset at the end of the function by reg_bounds_sync().

  1. On the unprivileged path, sanitize_ptr_alu() is called and, via

sanitize_speculative_path() -> push_stack(), snapshots the current register state and schedules the next instruction (insn 15) to be verified directly as a speculative path.

  1. That snapshot is taken between step 2 and the final reg_bounds_sync():

at this point dst_reg's var_off still holds the (const) original offset while r32 has just been blanked to the full range, i.e. the two are out of sync. When the speculative path later verifies insn 15 (r9 = r0), the inconsistent state reaches reg_bounds_sanity_check() and trips the warning.

var_off and the 32-bit range must always be consistent. There are two ways to keep the snapshot consistent:

  1. sync var_off and r32 before the snapshot so they match, or
  2. leave r32 at its original (already consistent) value and blank it

only after the snapshot.

The whole point of sanitize_ptr_alu() is to insert a harmless masking sequence that keeps the access in bounds under speculation, so the state it snapshots should faithfully represent that. Take approach 2: move __mark_reg32_unbounded() to after sanitize_ptr_alu(), so the speculative snapshot keeps the pointer's original, consistent r32. The non-speculative path is unchanged: r32 is still blanked before the offset is applied and re-derived by reg_bounds_sync().

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Ubiquitous
Linux kernel underlies a huge fraction of production environments worldwide
Data Quality
4 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Medium

Priority Score

28
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +28
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.

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