From: zhenwei pi Date: Sun, 21 Dec 2025 02:43:20 +0000 (+0800) Subject: hw/virtio/virtio-crypto: verify asym request size X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=91c6438caffc880e999a7312825479685d659b44;p=thirdparty%2Fqemu.git hw/virtio/virtio-crypto: verify asym request size The total lenght of request is limited by cryptodev config, verify it to avoid unexpected request from guest. Fixes: CVE-2025-14876 Fixes: 0e660a6f90a ("crypto: Introduce RSA algorithm") Reported-by: 이재영 Signed-off-by: zhenwei pi Reviewed-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Message-Id: <20251221024321.143196-2-zhenwei.pi@linux.dev> --- diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index cbd1810fbc..6fceb39681 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -767,11 +767,18 @@ virtio_crypto_handle_asym_req(VirtIOCrypto *vcrypto, uint32_t len; uint8_t *src = NULL; uint8_t *dst = NULL; + uint64_t max_len; asym_op_info = g_new0(CryptoDevBackendAsymOpInfo, 1); src_len = ldl_le_p(&req->para.src_data_len); dst_len = ldl_le_p(&req->para.dst_data_len); + max_len = (uint64_t)src_len + dst_len; + if (unlikely(max_len > vcrypto->conf.max_size)) { + virtio_error(vdev, "virtio-crypto asym request is too large"); + goto err; + } + if (src_len > 0) { src = g_malloc0(src_len); len = iov_to_buf(iov, out_num, 0, src, src_len);