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

net/tcp-ao: fix use-after-free of current_key on reconnect to another peer

tcp_inbound_ao_hash() is called before bh_lock_sock_nested() is taken,
with only rcu_read_lock() held. On the fast path for established
sockets, if the rnext_keyid sent by the peer differs from
current_key->sndid, the key the peer asked for is looked up and stored
in current_key. The lookup is inside the RCU read side, but current_key
outlives it.

When the socket is disconnected and connect() is called again for
another peer, tcp_ao_connect_init() unlinks every key that does not
match the new peer and frees it with call_rcu(). If current_key points
at such a key, it is cleared to NULL.

The fast path reads sk_state only once on entry, so a softirq that got
into it while the socket was still established can update current_key
after that loop has already run. The update is inside the RCU read side,
so it comes before the call_rcu() callback, and once the callback frees
the key, current_key is left pointing at freed memory.

The next transmission picks that pointer up in tcp_get_current_key().
tcp_ao_transmit_skb() then reads the traffic key from the freed object,
which is the use-after-free.

Wait for one grace period before unlinking, and only if a key is going
to be removed. By the time tcp_connect() runs the socket is already in
TCP_SYN_SENT, and TCP_AO_ESTABLISHED does not contain TCPF_SYN_SENT, so
a softirq entering after the wait cannot reach the fast path, and the
ones already in it have finished. The existing NULL handling in the loop
is then enough.
Published: 2026-09-04
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Remote code execution via kernel use‑after‑free
Action: Apply Patch
AI Analysis

Impact

The flaw is a use‑after‑free in the Linux kernel’s TCP Acknowledgement Offload (AO) implementation. When a socket reconnects to a different peer, the kernel may free a key object that is still referenced by the current key pointer. During the next data transmission the kernel reads from this freed memory, which can corrupt kernel data structures or allow arbitrary code to be executed with kernel privileges. The vulnerability represents a serious integrity breach of the operating system kernel and could lead to full system compromise or denial of service.

Affected Systems

All Linux kernel releases that include the buggy TCP AO code and have not yet incorporated the patch commit that adds a guard around current_key. The data set does not list specific version numbers, so any kernel version running the unmodified AO logic before the fix is considered vulnerable.

Risk and Exploitability

The CVSS score is not provided, and the EPSS score is not available; the vulnerability is not listed in the CISA KEV catalog. The vulnerability is a classic kernel use‑after‑free (CWE‑416) that can be triggered through legitimate TCP traffic by an attacker who induces a socket to reconnect to a malicious peer. Successful exploitation would give the attacker kernel‑level privileges or could cause a kernel crash, leading to denial of service.

Generated by OpenCVE AI on September 4, 2026 at 19:19 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that contains the Ao use‑after‑free fix (that removes the race around current_key).
  • If an immediate upgrade is not possible, apply the targeted patch from the Linux kernel source that implements the free‑guard logic for current_key.
  • As a temporary countermeasure, disable TCP Acknowledgement Offload (CONFIG_TCP_AO) in the kernel configuration or restart services that use the feature so that the vulnerable code path is not exercised.

Generated by OpenCVE AI on September 4, 2026 at 19:19 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 04 Sep 2026 19:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Fri, 04 Sep 2026 16:00:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: net/tcp-ao: fix use-after-free of current_key on reconnect to another peer tcp_inbound_ao_hash() is called before bh_lock_sock_nested() is taken, with only rcu_read_lock() held. On the fast path for established sockets, if the rnext_keyid sent by the peer differs from current_key->sndid, the key the peer asked for is looked up and stored in current_key. The lookup is inside the RCU read side, but current_key outlives it. When the socket is disconnected and connect() is called again for another peer, tcp_ao_connect_init() unlinks every key that does not match the new peer and frees it with call_rcu(). If current_key points at such a key, it is cleared to NULL. The fast path reads sk_state only once on entry, so a softirq that got into it while the socket was still established can update current_key after that loop has already run. The update is inside the RCU read side, so it comes before the call_rcu() callback, and once the callback frees the key, current_key is left pointing at freed memory. The next transmission picks that pointer up in tcp_get_current_key(). tcp_ao_transmit_skb() then reads the traffic key from the freed object, which is the use-after-free. Wait for one grace period before unlinking, and only if a key is going to be removed. By the time tcp_connect() runs the socket is already in TCP_SYN_SENT, and TCP_AO_ESTABLISHED does not contain TCPF_SYN_SENT, so a softirq entering after the wait cannot reach the fast path, and the ones already in it have finished. The existing NULL handling in the loop is then enough.
Title net/tcp-ao: fix use-after-free of current_key on reconnect to another peer
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 Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-04T15:54:59.412Z

Reserved: 2026-08-26T14:34:25.797Z

Link: CVE-2026-80849

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-04T16:18:13.683

Modified: 2026-09-04T16:18:13.683

Link: CVE-2026-80849

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-05T04:00:13Z

Weaknesses