All vulnerabilities
CVE-2026-98043

Linux: bpf: Don't infer non-NULL from a pointer with an unbounded offset

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.20%Chance of exploitation activity in the next 30 days, higher than 9% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in8b414dbe97fcefd116e5a620c3bd9993014aa4ceAlso 019d845a08b8ccfe8eefaaf4bca6870f2b8c58ae, 65bea674f43c09c0eda033a140dfac6a2842a19f and 1 moreCVE List
Published25 Sep 2026Updated 21 Oct 2026CVE List

What fixes it

  • 8b414dbe97fcefd116e5a620c3bd9993014aa4ceLinuxCVE List
  • 019d845a08b8ccfe8eefaaf4bca6870f2b8c58aeLinuxCVE List
  • 65bea674f43c09c0eda033a140dfac6a2842a19fLinuxCVE List
  • 67b529f521a6676cdfc78b91b0217d7eaa84216bLinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

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

bpf: Don't infer non-NULL from a pointer with an unbounded offset

reg_not_null() decides that a register holds a non-NULL value by looking at its type alone. For pointer types that allow arithmetic the type only guarantees a non-NULL base, in case of an unbound offset the runtime offset value might still add up to NULL. Consider the followng program:

r6 = bpf_map_lookup_elem(map, &0); /* present */ if (r6 == 0) return 0; r7 = bpf_map_lookup_elem(map, &1); /* absent, NULL at runtime */ r8 = r7; r8 -= r6; /* pointer - pointer: unknown scalar, -r6 */ r8 <<= 1; r8 >>= 1; /* any non-negative offset is accepted by */ /* check_reg_sane_offset_ptr() */ r6 += r8; /* verifier: map value; runtime: zero */ if (r7 != r6) return 0; *(u8 *)(r7 + 0); /* r7 is inferred non-NULL, both are zero */

At runtime both registers are zero, the comparison is true and the load faults with NULL pointer dereference.

Require the offset to be within +-BPF_MAX_VAR_OFF in reg_not_null().

Text from CVE List

Affected versions 12

  • Linuxaffected: cac616db39c207dc63465a4e05c6ce0e60b2cce4 before 8b414dbe97fcefd116e5a620c3bd9993014aa4ceCVE List
  • Linuxaffected: cac616db39c207dc63465a4e05c6ce0e60b2cce4 before 019d845a08b8ccfe8eefaaf4bca6870f2b8c58aeCVE List
  • Linuxaffected: cac616db39c207dc63465a4e05c6ce0e60b2cce4 before 65bea674f43c09c0eda033a140dfac6a2842a19fCVE List
  • Linuxaffected: cac616db39c207dc63465a4e05c6ce0e60b2cce4 before cb6642048739bf4ee5aa09fe465511f1e87caa63CVE List
  • Linuxaffected: cac616db39c207dc63465a4e05c6ce0e60b2cce4 before 67b529f521a6676cdfc78b91b0217d7eaa84216bCVE List
  • Linuxaffected: 5.8CVE List
  • Linuxunaffected: all versions before 5.8CVE List
  • Linuxunaffected: 6.6.160 through 6.6.*CVE List
  • Linuxunaffected: 6.12.114 through 6.12.*CVE List
  • Linuxunaffected: 6.18.57 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 5