The virtio_queue_notify() function checks that the virtqueue number is less than the maximum number of virtqueues. A signed comparison is used but the virtqueue number could be negative if a buggy or malicious guest is run. This results in memory accesses outside of the virtqueue array.
To trigger this issue the attacker needs to issue 32bit write to Queue Notify field of Virtio Header in the virtio pci config space even though the field is 16bit only by specs. Qemu-kvm allows that for the moment and provides whole 32bit value to the underlying functions.
Unprivileged guest user could use this flaw to crash the guest (denial of service) or, possibly, escalate their privileges on the host.
This issue only affects Red Hat Enterprise Linux 6. The version of the qemu/kvm
as shipped with Red Hat Enterprise Linux 5 is not affected.
This issue has been addressed in following products:
Red Hat Enterprise Linux 6
Via RHSA-2011:0919 https://rhn.redhat.com/errata/RHSA-2011-0919.html