CVE-2026-64548: bpf, sockmap: reject overflowing copy + len in bpf_msg_push_data()

Greg Kroah-Hartman <[email protected]> Mon, 27 Jul 2026 22:10:46 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072737-CVE-2026-64548-892f@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

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

bpf, sockmap: reject overflowing copy + len in bpf_msg_push_data()

When the scatterlist ring is full or nearly full, bpf_msg_push_data()
enters a copy fallback path and computes copy + len for the page
allocation size. Since len comes from BPF with arg3_type = ARG_ANYTHING
and both are u32, a crafted len can wrap the sum to a small value,
causing an undersized allocation followed by an out-of-bounds memcpy.

 BUG: unable to handle page fault for address: ffffed104089a402
 Oops: Oops: 0000 [#1] SMP KASAN NOPTI
 Call Trace:
  __asan_memcpy (mm/kasan/shadow.c:105)
  bpf_msg_push_data (net/core/filter.c:2852 net/core/filter.c:2788)
  bpf_prog_9ed8b5711920a7d7+0x2e/0x36
  sk_psock_msg_verdict (net/core/skmsg.c:934)
  tcp_bpf_sendmsg (net/ipv4/tcp_bpf.c:421 net/ipv4/tcp_bpf.c:584)
  __sys_sendto (net/socket.c:2206)
  do_syscall_64 (arch/x86/entry/syscall_64.c:94)
  entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:130)

Add an overflow check before the allocation.

The Linux kernel CVE team has assigned CVE-2026-64548 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 5.10.261 with commit f1644c9508d24f50dd9e8ebe8d3ba86e0996d2f5
	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 5.15.212 with commit a12b1575f9feabd91695a9e9d004862f7195fa25
	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 6.1.178 with commit ff39d0e3b4feeb65ca43c453d7c75fdf872ded0d
	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 6.6.145 with commit 888706a76286c547bd035432602571e8024b5305
	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 6.12.97 with commit db77b6bb6e6edb79b10b4efcce346eec5582d588
	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 6.18.40 with commit 4e40056bb5c829f0423f0a6694a0477726d2147e
	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 7.1.5 with commit bd004716ba75fed6d185795c85cdc92540ebeaab
	Issue introduced in 4.20 with commit 6fff607e2f14bd7c63c06c464a6f93b8efbabe28 and fixed in 7.2-rc1 with commit 0c0a8ed85349dae298712d79cb276acfeb794d82

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64548
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	net/core/filter.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/f1644c9508d24f50dd9e8ebe8d3ba86e0996d2f5
	https://git.kernel.org/stable/c/a12b1575f9feabd91695a9e9d004862f7195fa25
	https://git.kernel.org/stable/c/ff39d0e3b4feeb65ca43c453d7c75fdf872ded0d
	https://git.kernel.org/stable/c/888706a76286c547bd035432602571e8024b5305
	https://git.kernel.org/stable/c/db77b6bb6e6edb79b10b4efcce346eec5582d588
	https://git.kernel.org/stable/c/4e40056bb5c829f0423f0a6694a0477726d2147e
	https://git.kernel.org/stable/c/bd004716ba75fed6d185795c85cdc92540ebeaab
	https://git.kernel.org/stable/c/0c0a8ed85349dae298712d79cb276acfeb794d82