[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PULL 1/9] nvme: fix oob access issue(CVE-2018-16847)
From: |
Kevin Wolf |
Subject: |
[Qemu-block] [PULL 1/9] nvme: fix oob access issue(CVE-2018-16847) |
Date: |
Mon, 19 Nov 2018 15:29:36 +0100 |
From: Li Qiang <address@hidden>
Currently, the nvme_cmb_ops mr doesn't check the addr and size.
This can lead an oob access issue. This is triggerable in the guest.
Add check to avoid this issue.
Fixes CVE-2018-16847.
Reported-by: Li Qiang <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Signed-off-by: Li Qiang <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
hw/block/nvme.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/hw/block/nvme.c b/hw/block/nvme.c
index 09d7c90259..d0226e7fdc 100644
--- a/hw/block/nvme.c
+++ b/hw/block/nvme.c
@@ -1175,6 +1175,10 @@ static void nvme_cmb_write(void *opaque, hwaddr addr,
uint64_t data,
unsigned size)
{
NvmeCtrl *n = (NvmeCtrl *)opaque;
+
+ if (addr + size > NVME_CMBSZ_GETSIZE(n->bar.cmbsz)) {
+ return;
+ }
memcpy(&n->cmbuf[addr], &data, size);
}
@@ -1183,6 +1187,9 @@ static uint64_t nvme_cmb_read(void *opaque, hwaddr addr,
unsigned size)
uint64_t val;
NvmeCtrl *n = (NvmeCtrl *)opaque;
+ if (addr + size > NVME_CMBSZ_GETSIZE(n->bar.cmbsz)) {
+ return 0;
+ }
memcpy(&val, &n->cmbuf[addr], size);
return val;
}
--
2.19.1
- [Qemu-block] [PULL 0/9] Block layer patches, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 1/9] nvme: fix oob access issue(CVE-2018-16847),
Kevin Wolf <=
- [Qemu-block] [PULL 3/9] vvfat: Fix memory leak, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 2/9] fdc: fix segfault in fdctrl_stop_transfer() when DMA is disabled, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 7/9] block: Always abort reopen after prepare succeeded, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 4/9] qcow2: Document some maximum size constraints, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 5/9] qcow2: Don't allow overflow during cluster allocation, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 6/9] iotests: Add new test 220 for max compressed cluster offset, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 8/9] file-posix: Fix shared locks on reopen commit, Kevin Wolf, 2018/11/19
- [Qemu-block] [PULL 9/9] iotests: Test file-posix locking and reopen, Kevin Wolf, 2018/11/19
- Re: [Qemu-block] [PULL 0/9] Block layer patches, Peter Maydell, 2018/11/19