CVE-2026-80932 in Linux
摘要
由 VulDB • 2026-09-12
在 Linux 内核中,已修复以下漏洞:
vsock/virtio: 按依赖顺序刷新工作项
virtio_vsock_remove() 停止 virtqueues(虚拟队列),然后在释放包含的 virtio_vsock 之前刷新每个工作项。当前的执行顺序未考虑这些工作项之间的依赖关系:tx_work 可能会排队 send_pkt_work,而 send_pkt_work 又可能排队 rx_work。
特别是,send_pkt_work 可以设置 restart_rx 并释放 tx_lock。随后,移除路径会停止队列并在 send_pkt_work 将其入队之前刷新 rx_work。尽管后续的 send_pkt_work 刷新等待该生产者完成,但没有任何机制等待新排队的 rx_work,因此 kfree(vsock) 可能与其发生竞态条件(Race Condition)。
KASAN 报告如下:
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
按生产者到消费者的顺序刷新工作项。virtio_vsock_vqs_del() 已经禁用了队列回调并清除了运行标志,因此在 tx_work 和 send_pkt_work 被排空后,不再有源可以在其刷新之后将 rx_work 入队。
If you want to get best quality of vulnerability data, you may have to visit VulDB.