QEMU fixes virtio feature masking flaw that enabled host OOB reads
Unmasked guest feature bits could turn on virtio-net RSC without the headers the receive path assumed, triggering CVE-2026-63321.
QEMU maintainer Michael S. Tsirkin has posted fixes for CVE-2026-63321, a virtio feature-negotiation bug that could let a buggy or malicious guest trigger out-of-bounds reads on the host in virtio-net.
The flaw was in the path that applies guest-requested virtio features without the usual validation. Unlike the normal setter, that path passed the guest’s raw feature bits into the extended features callback instead of the value masked against what the host actually supports. Spec-compliant drivers would not set bits outside the host mask, but a malicious or broken guest could, and devices were not prepared for that.
In virtio-net the practical effect was enabling Receive Segment Coalescing (RSC) without vnet header support. The RSC receive path then parsed frames using the guest header length while the backend buffer only carried the shorter host header, reading past the end of short packets.
The primary fix masks guest features before handing them to the extended setter, matching the behavior of the ordinary path. A follow-up change adds defense in depth in virtio-net: if host and guest header lengths disagree, RSC is skipped with a one-time warning and traffic falls back to the normal receive path. Tsirkin notes that mismatch should not occur with existing backends after the first fix, but the check hardens the assumption.