KernelScan.io

HIGH Introduced in 5.8

bpf Jmp32 Bypass

CVE-2026-98041

CVSS 7.0 / 10.0 NVD

CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI8.8HIGH

01

In the Linux kernel, the following vulnerability has been resolved: bpf: Don't predict JMP32 pointer vs zero comparisons Consider the following program: r1 = map_value; /* low 32 bits are zero at runtime */ r6 = 0xdead000000000000; if w1 != 0 goto l1; l0: r1 += r6; r2 = *(u64 *)(r1 + 0); exit; l1: r6 = 0; goto l0; At the moment is_branch_taken() reports the jump as always taken, because it does not distinguish between BPF_JMP and BPF_JMP32 comparisons when processing 'if w1 != 0 ...'.

02

Engine v0.6.0

Risk summary

A BPF verifier logic flaw allows crafted programs to bypass safety checks, leading to out-of-bounds kernel memory access. Any process with BPF loading privileges can exploit this; on systems with unprivileged BPF enabled, unprivileged local users and containers are affected, making it a container-escape primitive.

Affectedkernel/bpf/verifier.c (bpf verifier)

Vulnerability analysis

The BPF verifier incorrectly predicts the outcome of 32-bit conditional jumps that compare a pointer against zero. Because the verifier treats 32-bit comparisons the same as 64-bit ones, it assumes a non-null pointer always compares unequal to zero — but the lower 32 bits of a valid pointer may legitimately be zero, causing the verifier to skip verifying a code path that should have been fully checked. A crafted program can exploit this to hide unsafe memory accesses on the unverified path, which then execute at runtime with out-of-bounds access to kernel memory. The fix makes the verifier decline to predict 32-bit pointer comparisons against zero, forcing it to analyze both possible branches. This is reachable by any process that can load BPF programs, which requires CAP_BPF; on systems allowing unprivileged BPF, an unprivileged local user or container can trigger it.

03

BranchIntroducedFixed inPatch commit
6.125.86.12.111d16f0eafcaa6
6.185.86.18.53e2ae33247e8b
6.65.86.6.1606e1544986536
7.25.87.2.7a4d7f94c1ca9
mainline5.87.3e51179a4e098
cip/6.125.86.12.111-cip32d16f0eafcaa6

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)