KernelScan.io

HIGH Introduced in 4.8

vsock WorkFlush UAF

CVE-2026-80932

CVSS 8.4 / 10.0 NVD

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

KernelScan AI7.0HIGH

01

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.

02

Engine v0.6.0

Risk summary

A race condition in the virtio-vsock driver's device removal path allows a use-after-free on the driver's main structure. Any local user in a guest VM with a virtio-vsock device who can create vsock connections and influence device removal timing can trigger kernel memory corruption, potentially leading to code execution or a kernel panic. The bug has existed since the driver was introduced in kernel 4.8.

Affectednet/vmw_vsock/virtio_transport.c (virtio-vsock driver)

Vulnerability analysis

When the virtio-vsock device is removed, the driver stops the virtqueues and flushes pending work items before freeing the driver structure. The original flush order does not respect dependencies between work items: the send-packet work can queue the receive work, but the receive work is flushed first. After the receive work flush completes, the still-running send-packet work can queue it again, and the subsequent free of the driver structure races with the newly queued receive work, causing a use-after-free. The fix reorders the flushes to drain producers before consumers—transmit work, then event work, then send-packet work, and finally receive work—so that once the receive work is flushed, no remaining producer can re-queue it. The bug is reachable from within a guest VM that has a virtio-vsock device, by a local user who can open vsock sockets; triggering the race also requires the device removal path to run, which is normally host-initiated but may be guest-triggerable depending on the hot-unplug configuration.

03

BranchIntroducedFixed inPatch commit
5.104.85.10.270e059a14c1067
5.154.85.15.221531e2ac2dab1
6.14.86.1.188f3313d952fc3
6.124.86.12.1092187a56f2fd1
6.184.86.18.50165a330a68b5
6.64.86.6.157b9cb4e8ba71c
7.24.87.2.4da5e9f08714c
mainline4.87.3728836ebca23
cip/5.104.85.10.271-cip78e059a14c1067
cip/6.14.86.1.189-cip61f3313d952fc3
cip/6.1-rt4.86.1.189-cip61-rt32f3313d952fc3
cip/6.124.86.12.111-cip322187a56f2fd1

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Fixed in 6.1.189-cip61
cip/6.1-rtFixed in 6.1.189-cip61-rt32
cip/5.10Fixed in 5.10.271-cip78
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)
cip/4.19Affected — no CIP fix yet (latest 4.19.325-cip136)
cip/4.19-rtAffected — no CIP fix yet (latest 4.19.325-cip136-rt50)