CVE 7.8 HIGH

bpf: Fix unsound scalar forking in maybe_fork_scalars() for BPF_OR_CVE-2026-31413

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

Description

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

bpf: Fix unsound scalar forking in maybe_fork_scalars() for BPF_OR

maybe_fork_scalars() is called for both BPF_AND and BPF_OR when the
source operand is a constant. When dst has signed range [-1, 0], it
forks the verifier state: the pushed path gets dst = 0, the current
path gets dst = -1.

For BPF_AND this is correct: 0 & K == 0.
For BPF_OR this is wrong: 0 | K == K, not 0.

The pushed path therefore tracks dst as 0 when the runtime value is K,
producing an exploitable verifier/runtime divergence that allows
out-of-bounds map access.

Fix this by passing env->insn_idx (instead of env->insn_idx + 1) to
push_stack(), so the pushed path re-executes the ALU instruction with
dst = 0 and naturally computes the correct result for any opcode.

Basic Information

ID CVE-2026-31413
Source Linux
Published Apr 12, 2026 at 05:36
Modified Apr 27, 2026 at 14:02

Affected Product

Vendor Linux
Product Linux
Version dea9989a3f3961faede93752cd81eb5a9514d911
Affected Versions Linux Linux dea9989a3f3961faede93752cd81eb5a9514d911
Linux Linux 4c122e8ae14950cf6b59d208fc5160f7c601e746
Linux Linux e52567173ba86dbffb990595fbe60e2e83899372
Linux Linux bffacdb80b93b7b5e96b26fad64cc490a6c7d6c7
Linux Linux 6.12.75
Linux Linux 6.18.16
Linux Linux 6.19.6

References

💭 Join the Security Discussion

🔒 Your email address will not be published. Required fields are marked *

⚠️ Please be respectful and constructive in your comments. Security discussions should remain professional.