Headline
CVE-2021-32846: Fix virtio-sock pci_vtsock_proc_tx uninitialized memory use (GHSL-202… · moby/hyperkit@af5eba2
HyperKit is a toolkit for embedding hypervisor capabilities in an application. In versions 0.20210107, function pci_vtsock_proc_tx
in virtio-sock
can lead to to uninitialized memory use. In this situation, there is a check for the return value to be less or equal to VTSOCK_MAXSEGS
, but that check is not sufficient because the function can return -1
if it finds an error it cannot recover from. Moreover, the negative return value will be used by iovec_pull
in a while condition that can further lead to more corruption because the function is not designed to handle a negative iov_len
. This issue may lead to a guest crashing the host causing a denial of service and, under certain circumstance, memory corruption. This issue is fixed in commit af5eba2360a7351c08dfd9767d9be863a50ebaba.
@@ -1121,6 +1121,11 @@ static void pci_vtsock_proc_tx(struct pci_vtsock_softc *sc,
size_t pulled;
iovec_len = vq_getchain(vq, &idx, iov, VTSOCK_MAXSEGS, flags);
if (iovec_len < 0) {
fprintf(stderr, "TX: failed to get chain at idx %"PRIx16"\n", idx);
return;
}
assert(iovec_len <= VTSOCK_MAXSEGS);
DPRINTF(("TX: chain with %d buffers at idx %"PRIx16"\n",