ZeroHour

CVE-2026-80932

mass

Use-After-Free in Linux Kernel virtio-vsock Driver During Device Teardown

CVSS 3.1
8.4 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's virtio-vsock driver contains a use-after-free in which virtio_vsock_remove() flushes its workqueue items in the wrong order: send_pkt_work can queue rx_work after rx_work has already been flushed, so kfree(vsock) races with the still-pending rx_work, a bug confirmed by a KASAN slab-use-after-free report in virtio_transport_rx_work. The flaw is triggered when a virtio-vsock device is removed (hot-unplug or driver unbind) while transmit/receive work is in flight, a purely local race with no privileges or user interaction required per the CVSS vector. Successful exploitation of the race could allow a local attacker to corrupt freed kernel memory, plausibly yielding privilege escalation, information disclosure, or a denial of service (CVSS 3.1: 8.4, high). Any system running a kernel with the virtio_vsock driver is affected in principle, with real exposure concentrated in virtual machines and hosts that use virtio-vsock for guest-host communication (QEMU/KVM, Firecracker-style microVMs). The issue is resolved by flushing the work items in producer-to-consumer order (tx_work, then send_pkt_work, then rx_work); no public proof of concept or in-the-wild exploitation is known.

What to do: Apply a kernel update containing the fix (work items flushed in producer-to-consumer order: tx_work, then send_pkt_work, then rx_work) as soon as your distribution ships it. Until patched, avoid hot-unplugging or unbinding virtio-vsock devices (and avoid module removal) on hosts and guests where they are in active use, and consider blacklisting the virtio_vsock module on systems that do not need vsock. Watch kernel logs for KASAN 'slab-use-after-free in virtio_transport_rx_work' reports as an indicator of the race being hit.

Affected
Linux kernel (virtio_vsock driver, drivers/vsock/virtio_transport_common.c / virtio_vsock.c)All kernel versions carrying the vulnerable workqueue teardown order prior to the fixing commit; no specific version range was provided in the advisory data
Estimated exposure
massPotentially millions of systems ship the vulnerable driver, with the actively exposed subset being the far smaller population of VMs/hosts using virtio-vsock… — The virtio_vsock driver ships in mainstream Linux distribution kernels (deployed on the order of millions to billions of instances), but the vulnerable code path only executes where a virtio-vsock device exists, which is common in cloud…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: vsock/virtio: flush works in dependency order virtio_vsock_remove() stops the virtqueues and then flushes each work item before freeing the enclosing virtio_vsock. The current order does not account for dependencies between those items: tx_work may queue send_pkt_work, and send_pkt_work may queue rx_work. In particular, send_pkt_work can set restart_rx and release tx_lock. The remove path can then stop the queues and flush rx_work before send_pkt_work queues it. Although the later send_pkt_work flush waits for that producer to finish, nothing waits for the newly queued rx_work, so kfree(vsock) can race with it. KASAN reported: BUG: KASAN: slab-use-after-free in virtio_transport_rx_work+0x487/0x4b0 Read of size 8 at addr ffff888114c2b008 by task kworker/1:1/47 Workqueue: virtio_vsock virtio_transport_rx_work Call Trace: virtio_transport_rx_work+0x487/0x4b0 process_one_work+0x688/0x1120 worker_thread+0x45b/0xd10 Allocated by task 1: virtio_vsock_probe+0xef/0x6b0 Freed by task 84: kfree+0x131/0x3c0 virtio_vsock_remove+0xd1/0x100 Flush the works in producer-to-consumer order. virtio_vsock_vqs_del() has already disabled the queue callbacks and cleared the run flags, so after tx_work and send_pkt_work are drained, no source remains that can queue rx_work after its flush.

Vector
CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.