UBUNTU-CVE-2026-99139: Use After Free

Published Oct 28, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved: tcp: fix use-after-free in dotcpgetsockopt(TCPCONGESTION) dotcpgetsockopt() reads icsk->icskcaops->name without holding rcureadlock(). Since commit 0baf26b0fcd7 ("bpf: tcp: Support tcpcongestionops in bpf"), icskcaops can point to dynamically allocated BPF structops memory that may be freed concurrently via setsockopt(TCPCONGESTION), leading to a use-after-free. BUG: KASAN: slab-use-after-free in copytouser+0x37/0x60 Read of size 16 at addr ffff888013505260 by task exploit/149 copytouser+0x37/0x60 dotcpgetsockopt+0x158a/0x2460 (net/ipv4/tcp.c:4585) tcpgetsockopt+0x91/0xf0 sysgetsockopt+0xf7/0x170 Fix this by holding rcureadlock() around the caops->name access, using READONCE() to load icskcaops, and copying the name to a stack buffer before releasing the lock. Also annotate the relevant icskcaops stores with WRITEONCE() to fix the accompanying KCSAN data-race issue.

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Compensating control

    In do_tcp_getsockopt(TCP_CONGESTION), hold rcu_read_lock() around the ca_ops->name access, use READ_ONCE() to load icsk_ca_ops, and copy the name to a stack buffer before releasing the lock.

  2. Compensating control

    Annotate the relevant icsk_ca_ops stores with WRITE_ONCE() to address the accompanying KCSAN data race.

Event History

Oct 28, 2026
CVE Published
via OSV·12:00 AM
Data Sourced
via OSV·12:00 AM
DescriptionSeverityAffected Software

Frequently Asked Questions

1

What conditions are required to trigger this issue?

The vulnerable path is reached when TCP_CONGESTION is queried through getsockopt while the socket's congestion-control operations can be changed concurrently through setsockopt(TCP_CONGESTION). The race specifically involves dynamically allocated BPF struct_ops-backed TCP congestion-control operations being freed during the query.

2

Are systems using only built-in TCP congestion-control algorithms exposed to the described race?

The description identifies dynamically allocated BPF struct_ops memory as the object that can be freed concurrently. It does not state that built-in, non-BPF congestion-control algorithms are affected by this use-after-free scenario.

3

How can administrators recognize the issue on an affected system?

A successful trigger may produce a KASAN slab-use-after-free report in _copy_to_user, with do_tcp_getsockopt and tcp_getsockopt in the call trace. The reported access is a read of the congestion-control name while servicing TCP_CONGESTION.

4

What does the fix change?

The fix protects access to the congestion-control operation name with rcu_read_lock, reads the icsk_ca_ops pointer with READ_ONCE, and copies the name into a stack buffer before dropping the lock. It also adds WRITE_ONCE annotations to relevant pointer stores to address an associated KCSAN data-race report.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203