Skip to main content

Linux Kernel CVE-2026-64115

| EUVDEUVD-2026-45800 HIGH
Use After Free (CWE-416)
2026-07-19 Linux GHSA-c2c8-f8x2-chfh
8.8
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
8.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI
7.8 HIGH

Local low-priv attacker (AV:L/PR:L); AC:H because exploitation depends on winning a mid-handshake RST race; kernel-wide UAF corruption justifies S:C and C/I/A:H.

3.1 AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:L/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative
Red Hat
7.0 MEDIUM
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
High
Integrity
High
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 17:32 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
8.8 (HIGH)
Patch available
Jul 19, 2026 - 17:03 EUVD
CVE Published
Jul 19, 2026 - 15:40 cve.org
UNKNOWN (no severity yet)
CVE Published
Jul 19, 2026 - 15:40 cve.org
HIGH 8.8

DescriptionCVE.org

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

vsock/vmci: fix UAF when peer resets connection during handshake

vmci_transport_recv_connecting_server() returned err = 0 for a peer RST in its default switch arm:

err = pkt->type == VMCI_TRANSPORT_PACKET_TYPE_RST ? 0 : -EINVAL;

That made vmci_transport_recv_listen() skip vsock_remove_pending(), leaving the pending socket on the listener's pending_links with sk_state = TCP_CLOSE while destroy: still dropped the explicit reference taken before schedule_delayed_work().

One second later vsock_pending_work() observed is_pending=true and performed full cleanup: vsock_remove_pending() then the two trailing sock_put(sk) calls -- the first reached refcount 0 and __sk_freed the socket, and the second wrote into the freed object:

BUG: KASAN: slab-use-after-free in refcount_warn_saturate Write of size 4 at addr ffff88800b1cac80 by task kworker Workqueue: events vsock_pending_work

Treat peer RST like any other unexpected packet type (err = -EINVAL). All destroy: arms now return err < 0, so vmci_transport_recv_listen() removes pending from pending_links synchronously and vsock_pending_work() takes the is_pending=false / !rejected branch, dropping only its own work reference. This also closes the multi-packet race Sashiko reported on v2: pending is removed from the list before any subsequent packet can find it.

The pre-existing sk_acceptq_removed() gap on the err < 0 path of vmci_transport_recv_listen() that Sashiko also noted is not introduced or changed by this patch.

Tested on lts-6.12.79 with KASAN: 52/100 unpatched -> 0/100 patched.

AnalysisAI

Local privilege-escalation-class use-after-free in the Linux kernel's VMware VMCI vsock transport (vsock/vmci) allows a local attacker to corrupt freed socket memory by resetting a connection during the vsock handshake. When a peer sends a VMCI RST packet, vmci_transport_recv_connecting_server() incorrectly returned success (err=0), so vsock_transport_recv_listen() skipped removing the pending socket; a deferred vsock_pending_work() then double-dropped the socket reference, freeing it and writing into the freed object (KASAN slab-use-after-free). CVSS is 8.8 with a scope change, but EPSS is low (0.18%, 8th percentile) and there is no public exploit identified at time of analysis and it is not in CISA KEV.

Technical ContextAI

The flaw lives in the AF_VSOCK socket family, specifically the VMCI (Virtual Machine Communication Interface) transport used for guest/host communication on VMware platforms (drivers under net/vmw_vsock/vmci_transport.c). During the three-way vsock handshake on the listener side, vmci_transport_recv_connecting_server() classified an unexpected peer RST packet as err=0 in its default switch arm. That success code caused vmci_transport_recv_listen() to leave the half-open socket on the listener's pending_links list in TCP_CLOSE state while the explicit reference taken before schedule_delayed_work() had already been dropped. One second later the delayed worker vsock_pending_work() saw is_pending=true, called vsock_remove_pending() and issued two sock_put() calls - the first hit refcount 0 and freed the socket via __sk_free, the second wrote into freed memory. The root-cause class is CWE-416 (Use After Free) - a reference-counting/lifetime error - despite the upstream feed listing CWE as N/A and tagging it 'Information Disclosure', which mischaracterizes a memory-corruption write bug.

RemediationAI

Vendor-released patch: upgrade to a fixed stable kernel - 5.10.258, 5.15.209, 6.1.175, 6.6.142, 6.12.92, 6.18.34, 7.0.11, or mainline 7.1 or later (or your distribution's backported build carrying the listed commits). The fix simply treats a peer RST like any other unexpected packet (err = -EINVAL) so the pending socket is removed from pending_links synchronously; apply the kernel commits at https://git.kernel.org/stable/c/99e22ddf4edb63dc8382bc028af928056d3450cf and siblings if building from source. Where immediate patching is not possible, the practical compensating control is to prevent use of the VMCI vsock transport on hosts that do not need it - unload/blacklist the vmw_vsock_vmci_transport and vsock modules (side effect: breaks VMware guest-host vsock services and any application relying on AF_VSOCK over VMCI), or restrict which local users can open AF_VSOCK sockets; there is no network-facing port to block since the attack vector is local.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-64115 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy