From 1ba1f2e319afdcb485963cd3f426fdffd1b725f2 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 23 Dec 2011 15:39:03 +0100 Subject: [PATCH] virtio-blk: refuse SG_IO requests with scsi=off QEMU does have a "scsi" option (to be used like -device virtio-blk-pci,drive=foo,scsi=off). However, it only masks the feature bit, and does not reject the command if a malicious guest disregards the feature bits and issues a request. Without this patch, using scsi=off does not protect you from CVE-2011-4127. Reviewed-by: Stefan Hajnoczi Signed-off-by: Paolo Bonzini Signed-off-by: Anthony Liguori --- hw/virtio-blk.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c index 5e81f53e14..5b416c36ee 100644 --- a/hw/virtio-blk.c +++ b/hw/virtio-blk.c @@ -153,6 +153,12 @@ static void virtio_blk_handle_scsi(VirtIOBlockReq *req) int status; int i; + if ((req->dev->vdev.guest_features & (1 << VIRTIO_BLK_F_SCSI)) == 0) { + virtio_blk_req_complete(req, VIRTIO_BLK_S_UNSUPP); + g_free(req); + return; + } + /* * We require at least one output segment each for the virtio_blk_outhdr * and the SCSI command block.