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

bpf: Reject legacy packet loads from callbacks

check_ld_abs() models a failed BPF_LD_ABS or BPF_LD_IND in a
subprogram as an implicit return with R0 set to zero. It calls
prepare_func_exit() to explore this synthesized path.

When the load is reached directly from a synchronous callback,
prepare_func_exit() enforces the callback return contract and marks R0
precise. R0 is not derived from a real instruction on this path, so
precision backtracking reaches the callback call with R0 still requested
and triggers the "callback unexpected regs" verifier bug. A privileged
program loader can therefore cause a verifier warning and an -EFAULT
BPF_PROG_LOAD.

These legacy packet-load instructions are deprecated. Reject them from
callbacks rather than complicating their implicit-return model. Check all
active frames before constructing the implicit return so nested static
subprograms cannot hide the callback context.

Global functions are verified independently with a fresh frame zero, so
an active-frame check cannot identify a global function called from a
callback. Also check the complete subprogram call graph during stack-depth
validation and reject a function containing a legacy load when any caller
is a callback. This covers global and static descendants without making
has_ld_abs transitive, preserving its per-function BTF return-type check.
Ordinary uses outside callbacks remain supported.
Published: 2026-09-25
Score: n/a
EPSS: n/a
KEV: No
Impact: Denial of Service via privileged BPF program load
Action: Patch
AI Analysis

Impact

A flaw in the Linux kernel’s BPF verifier incorrectly models legacy packet‑load instructions when they are executed from callbacks. The verifier treats the load as if it returned a value, sets the return register to zero, and subsequently flags an unexpected register state. The parser then emits a warning and causes the privileged BPF program loader to fail with an -EFAULT error. The weakness is an improper input validation: legacy instructions are allowed in the source but are disallowed in the verifier context, which leads to erroneous verification behaviour.

Affected Systems

All Linux kernel releases prior to the patch commit are affected, and the issue is present on every architecture that supports eBPF. Any system running an unpatched kernel is a potential target, and only privileged BPF loaders can trigger the failure.

Risk and Exploitability

The EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, indicating no publicly known exploitation attempts. The CVSS score is not provided. Exploitation requires a privileged BPF program loader; it therefore poses a denial‑of‑service risk to networking or kernel functionality rather than arbitrary code execution. The likely attack vector is a privileged user or service that can load BPF programs, which is typically constrained to system administrators or specialized services. Without such privileges, the vulnerability remains infeasible to exploit.

Generated by OpenCVE AI on September 25, 2026 at 18:10 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to a kernel version that includes the commit fixing legacy packet‑load handling in the BPF verifier.
  • Re‑compile existing BPF programs and remove any legacy packet‑load instructions, using the modern equivalents.
  • Enforce stricter policies that prevent non‑trusted users from loading BPF programs and monitor load failures for suspicious activity.

Generated by OpenCVE AI on September 25, 2026 at 18:10 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 25 Sep 2026 18:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-20

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: bpf: Reject legacy packet loads from callbacks check_ld_abs() models a failed BPF_LD_ABS or BPF_LD_IND in a subprogram as an implicit return with R0 set to zero. It calls prepare_func_exit() to explore this synthesized path. When the load is reached directly from a synchronous callback, prepare_func_exit() enforces the callback return contract and marks R0 precise. R0 is not derived from a real instruction on this path, so precision backtracking reaches the callback call with R0 still requested and triggers the "callback unexpected regs" verifier bug. A privileged program loader can therefore cause a verifier warning and an -EFAULT BPF_PROG_LOAD. These legacy packet-load instructions are deprecated. Reject them from callbacks rather than complicating their implicit-return model. Check all active frames before constructing the implicit return so nested static subprograms cannot hide the callback context. Global functions are verified independently with a fresh frame zero, so an active-frame check cannot identify a global function called from a callback. Also check the complete subprogram call graph during stack-depth validation and reject a function containing a legacy load when any caller is a callback. This covers global and static descendants without making has_ld_abs transitive, preserving its per-function BTF return-type check. Ordinary uses outside callbacks remain supported.
Title bpf: Reject legacy packet loads from callbacks
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-25T10:23:55.454Z

Reserved: 2026-09-25T10:19:56.071Z

Link: CVE-2026-98044

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:33.200

Modified: 2026-09-25T11:17:33.200

Link: CVE-2026-98044

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T18:15:16Z

Weaknesses
  • CWE-20

    Improper Input Validation