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

bpf, sockmap: fix integer overflow in bpf_msg_pop_data() bounds check

start and len are u32, so

u64 last = start + len;

evaluates start + len in 32-bit and wraps before storing it in last.
The bounds check

if (start >= offset + l || last > msg->sg.size)
return -EINVAL;

can then be passed with an out-of-range start/len, after which the pop
loop runs off the end of the scatterlist and sk_msg_shift_left() calls
put_page() on the empty msg->sg.end slot:

Oops: general protection fault, probably for non-canonical address
0xdffffc0000000001: 0000 [#1] SMP KASAN PTI
KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
RIP: 0010:sk_msg_shift_left net/core/filter.c:2957 [inline]
RIP: 0010:____bpf_msg_pop_data net/core/filter.c:3103 [inline]
RIP: 0010:bpf_msg_pop_data+0x753/0x1a10 net/core/filter.c:2984
Call Trace:
<TASK>
bpf_prog_4cc92c278f4d5d56+0x1b1/0x1e8
bpf_prog_run_pin_on_cpu+0x107/0x320 include/linux/filter.h:746
sk_psock_msg_verdict+0x357/0x7f0 net/core/skmsg.c:934
tcp_bpf_send_verdict net/ipv4/tcp_bpf.c:420 [inline]
tcp_bpf_sendmsg+0x766/0x1ae0 net/ipv4/tcp_bpf.c:583
__sock_sendmsg+0x153/0x1c0 net/socket.c:802
__sys_sendto+0x326/0x430 net/socket.c:2265
__x64_sys_sendto+0xe3/0x100 net/socket.c:2268
do_syscall_64+0x14c/0x480
entry_SYSCALL_64_after_hwframe+0x77/0x7f
</TASK>

Widen the addition with a (u64) cast so the bound is evaluated in
64-bit and a len near U32_MAX no longer wraps below msg->sg.size.

While here, change pop from int to u32. It counts bytes against the
unsigned scatterlist lengths and can never be negative, so the signed
type only invites sign-confusion in the pop loop.
Published: 2026-08-15
Score: 8.4 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw arises when the bpf_msg_pop_data helper adds two 32‑bit values, start and len, and stores the result in a 64‑bit variable without casting. The addition wraps at 32‑bit, so the later bounds check can accept an out‑of‑range start/len combination. This allows the pop loop to read beyond the end of the scatter‑list, ultimately triggering a general protection fault and kernel panic. No elevation of privileges is mentioned; the impact is purely an availability failure due to a kernel crash.

Affected Systems

Linux kernel versions that do not yet contain the commit series that introduces a 64‑bit cast in the addition and tightens the bounds check are affected. The patch appears in the referenced commit series (e.g., 17eb9832a10db2f7a80cb429ca2bc5038445a943). All users running a vulnerable kernel should verify whether their system includes these changes.

Risk and Exploitability

Based on the description, it is inferred that an attacker would need the ability to execute a BPF program that utilizes sockmap to trigger the vulnerability. The integer overflow occurs during a bounds check in bpf_msg_pop_data(), allowing an out‑of‑range start/len pair that causes the pop loop to read beyond the end of the scatterlist, culminating in a general protection fault and kernel panic. The available data does not explicitly state the required privilege level; therefore, we cannot conclusively determine whether local or remote execution is necessary. The EPSS score of < 1 % indicates a very low probability of exploitation, the CVSS score of 8.4 reflects high severity, and the vulnerability is not listed in CISA’s KEV catalog. The most likely attack vector involves sending malformed data to a BPF program running in a privileged context on the host, which would lead to an availability loss by crashing the kernel.

Generated by OpenCVE AI on August 22, 2026 at 04:35 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Update the Linux kernel to a release that includes the 64‑bit cast and bounds‑check fixes.
  • If an upgrade is not immediately possible, restrict or disable the execution of BPF programs that use sockmap on vulnerable hosts until a patch is applied.
  • Monitor system logs for “general protection fault,” “KASAN,” or kernel panic messages; treat any occurrence as a high‑priority incident.

Generated by OpenCVE AI on August 22, 2026 at 04:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 22 Aug 2026 02:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-190

Thu, 20 Aug 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-476
References
Metrics threat_severity

None

threat_severity

Moderate


Mon, 17 Aug 2026 15:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-190

Mon, 17 Aug 2026 13:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-190
CWE-20

Mon, 17 Aug 2026 06:00:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 8.4, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}


Sat, 15 Aug 2026 18:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-190
CWE-20

Sat, 15 Aug 2026 06:15:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: bpf, sockmap: fix integer overflow in bpf_msg_pop_data() bounds check start and len are u32, so u64 last = start + len; evaluates start + len in 32-bit and wraps before storing it in last. The bounds check if (start >= offset + l || last > msg->sg.size) return -EINVAL; can then be passed with an out-of-range start/len, after which the pop loop runs off the end of the scatterlist and sk_msg_shift_left() calls put_page() on the empty msg->sg.end slot: Oops: general protection fault, probably for non-canonical address 0xdffffc0000000001: 0000 [#1] SMP KASAN PTI KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f] RIP: 0010:sk_msg_shift_left net/core/filter.c:2957 [inline] RIP: 0010:____bpf_msg_pop_data net/core/filter.c:3103 [inline] RIP: 0010:bpf_msg_pop_data+0x753/0x1a10 net/core/filter.c:2984 Call Trace: <TASK> bpf_prog_4cc92c278f4d5d56+0x1b1/0x1e8 bpf_prog_run_pin_on_cpu+0x107/0x320 include/linux/filter.h:746 sk_psock_msg_verdict+0x357/0x7f0 net/core/skmsg.c:934 tcp_bpf_send_verdict net/ipv4/tcp_bpf.c:420 [inline] tcp_bpf_sendmsg+0x766/0x1ae0 net/ipv4/tcp_bpf.c:583 __sock_sendmsg+0x153/0x1c0 net/socket.c:802 __sys_sendto+0x326/0x430 net/socket.c:2265 __x64_sys_sendto+0xe3/0x100 net/socket.c:2268 do_syscall_64+0x14c/0x480 entry_SYSCALL_64_after_hwframe+0x77/0x7f </TASK> Widen the addition with a (u64) cast so the bound is evaluated in 64-bit and a len near U32_MAX no longer wraps below msg->sg.size. While here, change pop from int to u32. It counts bytes against the unsigned scatterlist lengths and can never be negative, so the signed type only invites sign-confusion in the pop loop.
Title bpf, sockmap: fix integer overflow in bpf_msg_pop_data() bounds check
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-17T05:45:05.356Z

Reserved: 2026-08-15T05:44:03.876Z

Link: CVE-2026-74256

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-15T06:22:24.743

Modified: 2026-08-17T06:19:18.920

Link: CVE-2026-74256

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-08-15T00:00:00Z

Links: CVE-2026-74256 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-22T04:45:03Z

Weaknesses