Katalog CVE

CVE-2026-74256

WysokieCVSS 8.4
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.18%

Percentyl 8 - wyżej niż 8% wszystkich znanych CVE

Streszczenie

W jądrze Linux wykryto podatność w mechanizmie BPF sockmap, polegającą na przepełnieniu liczby całkowitej w funkcji bpf_msg_pop_data(). Mnożenie start + len wykonywane jest w arytmetyce 32-bitowej, co pozwala na obejście kontroli granic i prowadzi do dostępu poza zakresem listy rozproszonej (scatterlist), skutkując błędem ogólnej ochrony (GPF) i potencjalną awarią systemu.

Ocena ryzyka

Podatność może zostać wykorzystana lokalnie przez użytkownika z uprawnieniami do tworzenia programów BPF, prowadząc do awarii jądra (denial of service) lub potencjalnie do eskalacji uprawnień. Organizacje korzystające z sockmap i BPF w środowiskach produkcyjnych są narażone na przerwy w działaniu usług.

Rekomendacja

Zaleca się natychmiastowe zastosowanie oficjalnej łatki jądra Linux, która zawiera poprawkę dla CVE-2026-74256. Należy również zaktualizować system do wersji jądra zawierającej tę poprawkę oraz ograniczyć dostęp do tworzenia programów BPF tylko zaufanym użytkownikom.

Oryginalny opis (angielski, źródło NVD)

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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS