CVE-2026-98044

bpf: Reject legacy packet loads from callbacks

N/A
Published: September 25, 2026 at 10:23 AM UTC
Updated: October 21, 2026 at 01:21 PM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
N/A
Exploit prediction
EPSS 0.2%

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.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

37ad2bb11e9de92cb7b94548705eeedd87f7d3925.10.2655.15.2166.1.1836.12.1016.18.426.6.1487.0.107.18674e2db06cff6b50f2216eed9a761d15425bb348a800497d9f6c2ec9c2c1ba7b71d0ac2ea7f7bbe928d354ae3557e8f755a227e67be88034eb3cd7fce01a4e5cfac7adbe0be565f90cd32ecbb2f8337d846d83bdacbd8f14fc45c63b8c1d22608452e1cde1055e7f9e67af32b1f3376066272b04e5223c0ee861486e377edc55361c08dcbceab3f6b6577bd
Vendor states this is fixed in 3484a99303912db62428494a9061212049027e57 (fixed)
Vendor states this is fixed in bc489c0c9b8c86bd7fac42cfd1bb152f042fca56 (fixed)
Vendor states this is fixed in e7d28823c662128caae63f14e16bd394916c139b (fixed)
Affected range stops below 5.11, so it looks safe — our inference, not a vendor statement
Affected range stops below 5.16, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.12.114 (unaffected)
Affected range stops below 6.13, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 6.18.53 (unaffected)
Affected range stops below 6.2, so it looks safe — our inference, not a vendor statement
Affected range stops below 6.7, so it looks safe — our inference, not a vendor statement
Vendor states this is fixed in 7.1 (unaffected)
Vendor states this is fixed in 7.2.7 (unaffected)
Vendor states this is fixed in 7.3 (unaffected)
Vendor states this is fixed in 7.3-rc2 (unaffected)

Remediation

No guide yet

No remediation guidance has been written for this CVE yet, and no fixed version or vendor advisory is recorded against it.

Quick Info

StatusRECEIVED

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card