CVE-2026-98040
Description
In the Linux kernel, the following vulnerability has been resolved: bpf: Mark the zero register precise for a register-form NULL check check_cond_jmp_op() accepts "if rA <op> rB" as a NULL check for a nullable pointer rA when rB is a scalar known to be zero, lifts PTR_MAYBE_NULL from rA in the corresponding branch and does not mark rB precise. Consider the following program: r0 = bpf_get_prandom_u32(); r6 = 1; /* the r6 == 0 path is explored first */ if (r0 == 0) goto 1f; r6 = 0; 1: r0 = bpf_map_lookup_elem(map, &0); /* absent, NULL at runtime */ if (r0 == r6) goto 2f; /* taken as a NULL check for r0 */ *(u8 *)(r0 + 0); /* verifier: map value; runtime: zero */ 2: return 0; The r6 == 0 path is explored first and the dereference is accepted. The r6 == 1 path is pruned at the checkpoint recorded for (1), so the comparison is never verified with a non-zero r6. At runtime a failed lookup returns NULL, NULL != 1 takes the non-NULL edge and the program dereferences a pointer that is zero.
How to fix
- Linux Linuxddca9a3b8833168dda3e62676648a636fb3f221c, 6aed0134d3cda6382385a734ae0158eb7df6b142 or later
Affected products
| Product | Affected versions | Fixed in |
|---|---|---|
| Linux Linux | 2f4cb53eed448c1aeb6f4b40cf9c810716d8218c ≤ v < ddca9a3b8833168dda3e62676648a636fb3f221c, 2f4cb53eed448c1aeb6f4b40cf9c810716d8218c ≤ v < 6aed0134d3cda6382385a734ae0158eb7df6b142, 7.1 | ddca9a3b8833168dda3e62676648a636fb3f221c, 6aed0134d3cda6382385a734ae0158eb7df6b142 |
Check your version
Choose the product and enter the version you run to see whether it falls in the affected range.
Attack Surface Management
See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.