REDHAT-BUG-2254580: Buffer Overflow
A stack based buffer overflow was found in the virtio-net device of QEMU. The flaw occurs while copying data to mhdr, a local variable of type virtionethdrmrgrxbuf, when flushing TX in the virtionetflushtx function. If guest features VIRTIONETFHASHREPORT, VIRTIOFVERSION1 and VIRTIONETFMRGRXBUF are enabled, n->guesthdrlen is set to sizeof(struct virtionethdrv1hash), which is bigger than sizeof(virtionethdrmrgrxbuf). This vulnerability could potentially allow a malicious user to overwrite local variables adjacent to mhdr allocated on the stack. Specifically, the outsg variable could be used to read some part of process memory and send it to the wire:
ret = qemusendvpacketasync(qemugetsubqueue(n->nic, queueindex), outsg, outnum, virtionettxcomplete);
Affected Software
Event History
Frequently Asked Questions
What is the severity of REDHAT-BUG-2254580?
The severity of REDHAT-BUG-2254580 is considered critical due to the potential for remote code execution through stack-based buffer overflow.
How do I fix REDHAT-BUG-2254580?
To fix REDHAT-BUG-2254580, update the QEMU package to the latest version that has addressed this vulnerability.
What systems are affected by REDHAT-BUG-2254580?
The systems affected by REDHAT-BUG-2254580 include any installations of QEMU that utilize the virtio-net device with specific guest features enabled.
What causes the vulnerability in REDHAT-BUG-2254580?
The vulnerability in REDHAT-BUG-2254580 is caused by a stack-based buffer overflow occurring in the virtio_net_flush_tx function when handling certain guest features.
Is there a workaround for REDHAT-BUG-2254580 until I can apply a fix?
Yes, a possible workaround for REDHAT-BUG-2254580 is to disable the affected features on the virtio-net device if feasible.