CVE-2026-98643
Received Received - Intake

Out-of-Bounds Read in Linux Kernel BPF sock_ops

Vulnerability report for CVE-2026-98643, including description, CVSS score, EPSS score, affected products, exploitability, helpful resources, and attack-flow context.

Publication date: 2026-10-18

Last updated on: 2026-10-18

Assigner: kernel.org

Description

In the Linux kernel, the following vulnerability has been resolved: bpf: Fix out-of-bounds read of rtt_min in sock_ops A sockops prog reading skops->rtt_min never checks the sk type: on the tcp_conn_request() path sock_ops->sk is a request_sock (non-full), and the ctx rewrite casts it to a tcp_sock (full) and reads rtt_min past the end of the request_sock, returning dirty adjacent memory. SEC("sockops") int prog(struct bpf_sock_ops *skops) { switch (skops->op) { case BPF_SOCK_OPS_RWND_INIT: leak = skops->rtt_min; /* reads the request_sock OOB */ ... } } For instance one such read returned rtt_min=0xffff8881, the high half of a leaked kernel pointer. Guarding that cast is exactly what SOCK_OPS_GET_FIELD() does -- it checks is_locked_tcp_sock and returns 0 when sock_ops->sk is not a locked full socket. Every other tcp_sock field in sock_ops goes through it; rtt_min is the only one open-coded, so it skips the check. Read rtt_min through SOCK_OPS_GET_FIELD() too. rtt_min is a bit special: it is a struct minmax and we only want the current min, so pass rtt_min.s[0].v. That is equivalent to the old hand-computed offset offsetof(struct tcp_sock, rtt_min) + sizeof_field(struct minmax_sample, t) (s[0] sits at rtt_min + 0 and .v at + sizeof(.t), i.e. what minmax_get() returns), so the loaded field is unchanged and only the full-sock guard is added. The two BUILD_BUG_ON()s that protected the hand-computed offset are no longer needed. Before patch: 0: r1 = *(u64 *)(r1 +0) ; r1 = skops->sk 1: r1 = *(u32 *)(r1 +2324) ; ((tcp_sock *)sk)->rtt_min.s[0].v After patch: 0: *(u64 *)(r1 +56) = r9 1: r9 = *(u8 *)(r1 +50) ; is_locked_tcp_sock 2: if r9 == 0 goto pc+4 ; not a locked full sock -> 0 3: r9 = *(u64 *)(r1 +56) 4: r1 = *(u64 *)(r1 +0) ; r1 = skops->sk 5: r1 = *(u32 *)(r1 +2324) ; rtt_min.s[0].v 6: goto pc+2 7: r9 = *(u64 *)(r1 +56) 8: r1 = 0

CVSS Scores

EPSS Scores

Probability:
Percentile:

Meta Information

Published
2026-10-18
Last Modified
2026-10-18
Generated
2026-10-18
AI Q&A
2026-10-18
EPSS Evaluated
N/A
NVD
EUVD

Affected Vendors & Products

Showing 9 associated CPEs
Vendor Product Version / Range
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 44f0e43037d3a17b043843ba67610ac7c7e37db6
Linux Linux 4.16

Helpful Resources

Exploitability

CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-UNKNOWN

Attack-Flow Graph

AI Quick Actions

Instant insights powered by AI
Executive Summary

This vulnerability is in the Linux kernel's BPF (Berkeley Packet Filter) subsystem. It involves an out-of-bounds read in the sock_ops program when accessing rtt_min. The issue occurs because the code casts a request_sock (incomplete socket) to a tcp_sock (full socket) without proper validation, leading to reading past the end of the request_sock structure and leaking adjacent memory, including kernel pointers.

Detection Guidance

This vulnerability is specific to the Linux kernel's BPF (Berkeley Packet Filter) implementation and requires kernel-level inspection. Detection involves checking if your kernel version includes the vulnerable code path for sock_ops->rtt_min access. Use commands like 'uname -a' to check kernel version and 'dmesg' or 'journalctl' to look for BPF-related errors. However, no direct network or system commands can detect this without kernel source analysis.

Impact Analysis

This vulnerability could allow an attacker with local access to read sensitive kernel memory, potentially exposing sensitive data or enabling further exploits. It may also lead to information disclosure, compromising system integrity or confidentiality.

Mitigation Strategies

Apply the kernel patch that fixes the out-of-bounds read in sock_ops->rtt_min. Update your Linux kernel to a version that includes the fix. If immediate patching is not possible, restrict BPF usage via kernel command line parameters like 'bpf_jit_enable=0' or use seccomp to limit BPF program execution.

Chat Assistant

Ask questions about this CVE
Hi! I’m here to help you understand CVE-2026-98643. Ask me anything about the vulnerability, its impact, or mitigation strategies.
0/70

EPSS Chart