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

xfrm: espintcp: fix UAF during close

ZDI reported and analyzed a race condition during close for espintcp
sockets:

espintcp_close() frees emsg->skb via kfree_skb() without holding
any socket lock. Concurrently, the xfrm_trans_reinject work queue
invokes esp_output_tcp_finish() -> espintcp_push_skb() ->
espintcp_push_msgs() -> skb_send_sock_locked(), which reads the
same skb as a data source.

Fix this by adding a synchronize_rcu() call after resetting sk_prot,
since esp_output_tcp_finish() runs under RCU and won't use a socket
with sk_prot == &tcp_prot. Simply taking the socket lock in
espintcp_close() could lead to leaks, if esp_output_tcp_finish()
re-adds an skb in the slot we just freed. After this, the existing
barrier() is no longer needed.
Published: 2026-09-04
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A race condition in the Linux kernel’s espintcp implementation causes a use‑after‑free during socket close. When espintcp_close() frees an skb without holding the socket lock, the work queue can concurrently read that same skb through esp_output_tcp_finish(). This dangling pointer can be abused by an attacker who can control the timing of the close, enabling execution of arbitrary code in kernel mode which would elevate privileges to root. The issue arose from missing RCU synchronization and was addressed by adding synchronize_rcu() after resetting sk_prot.

Affected Systems

Linux kernels that include the espintcp driver prior to the reference commit are affected. Any distribution using a kernel where espintcp is compiled or built as a module without this patch is vulnerable. The patch is included in later stable kernel releases; systems running versions earlier than that commit may still be at risk.

Risk and Exploitability

The flaw is a local kernel privilege escalation vulnerability that requires an adversary to trigger the closure of an espintcp socket and manipulate timing to exploit the race. While it demands local execution, a compromised or privileged service that creates espintcp sockets could serve as an entry point. No EPSS score or KEV listing is available, but the use‑after‑free in a critical driver indicates a high‑severity threat. If exploited, the attacker gains full kernel control, effectively compromising the entire system.

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

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel update that includes the synchronize_rcu() commit to protect espintcp socket close operations.
  • If an immediate kernel update is not possible, disable espintcp support in the kernel configuration or via sysctl to eliminate the race condition until the patch is applied.
  • Confirm that no espintcp sockets are created or in use during the update window and monitor the system for any attempt to open new espintcp connections.

Generated by OpenCVE AI on September 4, 2026 at 19:20 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
CWE-667

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

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: xfrm: espintcp: fix UAF during close ZDI reported and analyzed a race condition during close for espintcp sockets: espintcp_close() frees emsg->skb via kfree_skb() without holding any socket lock. Concurrently, the xfrm_trans_reinject work queue invokes esp_output_tcp_finish() -> espintcp_push_skb() -> espintcp_push_msgs() -> skb_send_sock_locked(), which reads the same skb as a data source. Fix this by adding a synchronize_rcu() call after resetting sk_prot, since esp_output_tcp_finish() runs under RCU and won't use a socket with sk_prot == &tcp_prot. Simply taking the socket lock in espintcp_close() could lead to leaks, if esp_output_tcp_finish() re-adds an skb in the slot we just freed. After this, the existing barrier() is no longer needed.
Title xfrm: espintcp: fix UAF during close
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:58.427Z

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

Link: CVE-2026-80848

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-80848

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-04T19:30:04Z

Weaknesses