CVE-2026-80932
massUse-After-Free in Linux Kernel virtio-vsock Driver During Device Teardown
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.
| 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 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
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 news0 stories
No ingested article mentions this CVE yet.