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

tcp: fix use-after-free in do_tcp_getsockopt(TCP_CONGESTION)

do_tcp_getsockopt() reads icsk->icsk_ca_ops->name without holding
rcu_read_lock(). Since commit 0baf26b0fcd7 ("bpf: tcp: Support
tcp_congestion_ops in bpf"), icsk_ca_ops can point to dynamically
allocated BPF struct_ops memory that may be freed concurrently via
setsockopt(TCP_CONGESTION), leading to a use-after-free.

BUG: KASAN: slab-use-after-free in _copy_to_user+0x37/0x60
Read of size 16 at addr ffff888013505260 by task exploit/149
_copy_to_user+0x37/0x60
do_tcp_getsockopt+0x158a/0x2460 (net/ipv4/tcp.c:4585)
tcp_getsockopt+0x91/0xf0
__sys_getsockopt+0xf7/0x170

Fix this by holding rcu_read_lock() around the ca_ops->name access,
using READ_ONCE() to load icsk_ca_ops, and copying the name to a
stack buffer before releasing the lock. Also annotate the relevant
icsk_ca_ops stores with WRITE_ONCE() to fix the accompanying KCSAN
data-race issue.
Published: 2026-10-28
Score: n/a
EPSS: n/a
KEV: No
Impact: Kernel memory corruption that can enable arbitrary code execution
Action: Patch Immediately
AI Analysis

Impact

The vulnerability originates from an uncontrolled access to the icsk_ca_ops->name field in the Linux kernel’s TCP GETSOCKOPT handler when no read lock is held. This race allows a user to free the underlying BPF structure concurrently via TCP_CONGESTION setsockopt, producing a use‑after‑free and a KASAN crash. An attacker who can trigger this sequence could run arbitrary code at kernel privilege level.

Affected Systems

The flaw exists in the Linux kernel for all distributions that compile the network stack with support for BPF based congestion control helpers, prior to the patch. No specific version was listed, so any kernel lacking the commit that protects ca_ops->name is potentially affected.

Risk and Exploitability

Because the flaw involves a kernel data‑structure race, it requires local code execution or privileged access to trigger. The EPSS score is unavailable and the vulnerability has not yet appeared in the CISA KEV catalog, but the severity of a kernel use‑after‑free is high. The likely attack vector is a local module or user‑space program that invokes setsockopt(TCP_CONGESTION) while a socket is being queried for its congestion control name under do_tcp_getsockopt.

Generated by OpenCVE AI on October 28, 2026 at 11:38 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Apply the kernel update that contains the commit fixing the RCU read lock and READ_ONCE usage for ca_ops->name.
  • If an immediate kernel upgrade is not possible, block or restrict the use of BPF congestion‑control helpers (e.g., via SELinux/AppArmor) to prevent setsockopt(TCP_CONGESTION) from being called on sockets that may be queried.
  • Reboot the system after the patch or the restriction is in place to ensure the kernel’s memory state is clean and no stale references remain.

Generated by OpenCVE AI on October 28, 2026 at 11:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 28 Oct 2026 13:00:00 +0000

Type Values Removed Values Added
First Time appeared Linux linux
Vendors & Products Linux linux

Wed, 28 Oct 2026 12:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Wed, 28 Oct 2026 10:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: tcp: fix use-after-free in do_tcp_getsockopt(TCP_CONGESTION) do_tcp_getsockopt() reads icsk->icsk_ca_ops->name without holding rcu_read_lock(). Since commit 0baf26b0fcd7 ("bpf: tcp: Support tcp_congestion_ops in bpf"), icsk_ca_ops can point to dynamically allocated BPF struct_ops memory that may be freed concurrently via setsockopt(TCP_CONGESTION), leading to a use-after-free. BUG: KASAN: slab-use-after-free in _copy_to_user+0x37/0x60 Read of size 16 at addr ffff888013505260 by task exploit/149 _copy_to_user+0x37/0x60 do_tcp_getsockopt+0x158a/0x2460 (net/ipv4/tcp.c:4585) tcp_getsockopt+0x91/0xf0 __sys_getsockopt+0xf7/0x170 Fix this by holding rcu_read_lock() around the ca_ops->name access, using READ_ONCE() to load icsk_ca_ops, and copying the name to a stack buffer before releasing the lock. Also annotate the relevant icsk_ca_ops stores with WRITE_ONCE() to fix the accompanying KCSAN data-race issue.
Title tcp: fix use-after-free in do_tcp_getsockopt(TCP_CONGESTION)
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 Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-10-28T10:34:50.674Z

Reserved: 2026-09-25T10:25:14.395Z

Link: CVE-2026-99139

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-28T11:17:33.850

Modified: 2026-10-28T11:17:33.850

Link: CVE-2026-99139

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-28T12:45:15Z

Weaknesses