mirror of
https://git.yoctoproject.org/poky
synced 2026-09-16 18:49:34 +02:00
qemu 6.2.0: Fix CVE-2023-1544
Upstream Repository: https://gitlab.com/qemu-project/qemu.git Bug Details: https://nvd.nist.gov/vuln/detail/CVE-2023-1544 Type: Security Fix CVE: CVE-2023-1544 Score: 6.3 Patch: https://gitlab.com/qemu-project/qemu/-/commit/85fc35afa93c (From OE-Core rev: d019fcc99c542d49be6e1615a5c75f88f8ff5a52) Signed-off-by: Niranjan Pradhan <nirpradh@cisco.com> Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
committed by
Steve Sakoman
parent
f9527fb2ac
commit
24646e55b2
@@ -101,6 +101,7 @@ SRC_URI = "https://download.qemu.org/${BPN}-${PV}.tar.xz \
|
|||||||
file://CVE-2023-3354.patch \
|
file://CVE-2023-3354.patch \
|
||||||
file://CVE-2023-3180.patch \
|
file://CVE-2023-3180.patch \
|
||||||
file://CVE-2021-3638.patch \
|
file://CVE-2021-3638.patch \
|
||||||
|
file://CVE-2023-1544.patch \
|
||||||
"
|
"
|
||||||
UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
|
UPSTREAM_CHECK_REGEX = "qemu-(?P<pver>\d+(\.\d+)+)\.tar"
|
||||||
|
|
||||||
|
|||||||
70
meta/recipes-devtools/qemu/qemu/CVE-2023-1544.patch
Normal file
70
meta/recipes-devtools/qemu/qemu/CVE-2023-1544.patch
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
From e7d6e37675e422cfab2fe8c6bd411d2097228760 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Yuval Shaia <yuval.shaia.ml@gmail.com>
|
||||||
|
Date: Wed, 1 Mar 2023 16:29:26 +0200
|
||||||
|
Subject: [PATCH] hw/pvrdma: Protect against buggy or malicious guest driver
|
||||||
|
|
||||||
|
Guest driver allocates and initialize page tables to be used as a ring
|
||||||
|
of descriptors for CQ and async events.
|
||||||
|
The page table that represents the ring, along with the number of pages
|
||||||
|
in the page table is passed to the device.
|
||||||
|
Currently our device supports only one page table for a ring.
|
||||||
|
|
||||||
|
Let's make sure that the number of page table entries the driver
|
||||||
|
reports, do not exceeds the one page table size.
|
||||||
|
|
||||||
|
CVE: CVE-2023-1544
|
||||||
|
Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/85fc35afa93c]
|
||||||
|
|
||||||
|
Reported-by: Soul Chen <soulchen8650@gmail.com>
|
||||||
|
Signed-off-by: Yuval Shaia <yuval.shaia.ml@gmail.com>
|
||||||
|
Fixes: CVE-2023-1544
|
||||||
|
Message-ID: <20230301142926.18686-1-yuval.shaia.ml@gmail.com>
|
||||||
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||||
|
(cherry picked from commit 85fc35afa93c7320d1641d344d0c5dfbe341d087)
|
||||||
|
Signed-off-by: Niranjan Pradhan <nirpradh@cisco.com>
|
||||||
|
---
|
||||||
|
hw/rdma/vmw/pvrdma_main.c | 16 +++++++++++++++-
|
||||||
|
1 file changed, 15 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c
|
||||||
|
index 4fc6712025..55b338046e 100644
|
||||||
|
--- a/hw/rdma/vmw/pvrdma_main.c
|
||||||
|
+++ b/hw/rdma/vmw/pvrdma_main.c
|
||||||
|
@@ -91,19 +91,33 @@ static int init_dev_ring(PvrdmaRing *ring, PvrdmaRingState **ring_state,
|
||||||
|
dma_addr_t dir_addr, uint32_t num_pages)
|
||||||
|
{
|
||||||
|
uint64_t *dir, *tbl;
|
||||||
|
- int rc = 0;
|
||||||
|
+ int max_pages, rc = 0;
|
||||||
|
|
||||||
|
if (!num_pages) {
|
||||||
|
rdma_error_report("Ring pages count must be strictly positive");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Make sure we can satisfy the requested number of pages in a single
|
||||||
|
+ * TARGET_PAGE_SIZE sized page table (taking into account that first entry
|
||||||
|
+ * is reserved for ring-state)
|
||||||
|
+ */
|
||||||
|
+ max_pages = TARGET_PAGE_SIZE / sizeof(dma_addr_t) - 1;
|
||||||
|
+ if (num_pages > max_pages) {
|
||||||
|
+ rdma_error_report("Maximum pages on a single directory must not exceed %d\n",
|
||||||
|
+ max_pages);
|
||||||
|
+ return -EINVAL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
dir = rdma_pci_dma_map(pci_dev, dir_addr, TARGET_PAGE_SIZE);
|
||||||
|
if (!dir) {
|
||||||
|
rdma_error_report("Failed to map to page directory (ring %s)", name);
|
||||||
|
rc = -ENOMEM;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ /* We support only one page table for a ring */
|
||||||
|
tbl = rdma_pci_dma_map(pci_dev, dir[0], TARGET_PAGE_SIZE);
|
||||||
|
if (!tbl) {
|
||||||
|
rdma_error_report("Failed to map to page table (ring %s)", name);
|
||||||
|
--
|
||||||
|
2.35.6
|
||||||
|
|
||||||
Reference in New Issue
Block a user