Package: qemu / 1:5.2+dfsg-11+deb11u3

Metadata

Package Version Patches format
qemu 1:5.2+dfsg-11+deb11u3 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
vhost user gpu/fix OOB write in virgl_cmd_get_capset CVE 2021 3546.patch | (download)

contrib/vhost-user-gpu/virgl.c | 4 4 + 0 - 0 !
1 file changed, 4 insertions(+)

 vhost-user-gpu: fix oob write in 'virgl_cmd_get_capset' (cve-2021-3546)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bug-Debian: https://bugs.debian.org/989042

If 'virgl_cmd_get_capset' set 'max_size' to 0,
the 'virgl_renderer_fill_caps' will write the data after the 'resp'.
This patch avoid this by checking the returned 'max_size'.

virtio-gpu fix: abd7f08b23 ("display: virtio-gpu-3d: check
virgl capabilities max_size")

Fixes: CVE-2021-3546
Reported-by: Li Qiang <liq3ea@163.com>
ui cursor fix integer overflow in cursor_alloc CVE 2021 4206.patch | (download)

hw/display/qxl-render.c | 7 7 + 0 - 0 !
hw/display/vmware_vga.c | 2 2 + 0 - 0 !
ui/cursor.c | 8 7 + 1 - 0 !
3 files changed, 16 insertions(+), 1 deletion(-)

 ui/cursor: fix integer overflow in cursor_alloc (cve-2021-4206)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Prevent potential integer overflow by limiting 'width' and 'height' to
512x512. Also change 'datasize' type to size_t. Refer to security
advisory https://starlabs.sg/advisories/22-4206/ for more information.

Fixes: CVE-2021-4206
Signed-off-by: Mauro Matteo Cascella <mcascell@redhat.com>
display qxl render fix race condition in qxl_cursor CVE 2021 4207.patch | (download)

hw/display/qxl-render.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 display/qxl-render: fix race condition in qxl_cursor (cve-2021-4207)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Avoid fetching 'width' and 'height' a second time to prevent possible
race condition. Refer to security advisory
https://starlabs.sg/advisories/22-4207/ for more information.

Fixes: CVE-2021-4207
Signed-off-by: Mauro Matteo Cascella <mcascell@redhat.com>
virtiofsd drop membership of all supplementary group CVE 2022 0358.patch | (download)

tools/virtiofsd/passthrough_ll.c | 27 27 + 0 - 0 !
1 file changed, 27 insertions(+)

 virtiofsd: drop membership of all supplementary groups (cve-2022-0358)

At the start, drop membership of all supplementary groups. This is
not required.

If we have membership of "root" supplementary group and when we switch
uid/gid using setresuid/setsgid, we still retain membership of existing
supplemntary groups. And that can allow some operations which are not
normally allowed.

For example, if root in guest creates a dir as follows.

$ mkdir -m 03777 test_dir

This sets SGID on dir as well as allows unprivileged users to write into
this dir.

And now as unprivileged user open file as follows.

$ su test
$ fd = open("test_dir/priviledge_id", O_RDWR|O_CREAT|O_EXCL, 02755);

This will create SGID set executable in test_dir/.

And that's a problem because now an unpriviliged user can execute it,
get egid=0 and get access to resources owned by "root" group. This is
privilege escalation.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2044863
Fixes: CVE-2022-0358
Reported-by: JIETAO XIAO <shawtao1125@gmail.com>
Suggested-by: Miklos Szeredi <mszeredi@redhat.com>
vhost vsock detach the virqueue element on error CVE 2022 26354.patch | (download)

hw/virtio/vhost-vsock-common.c | 10 7 + 3 - 0 !
1 file changed, 7 insertions(+), 3 deletions(-)

 vhost-vsock: detach the virqueue element in case of error

In vhost_vsock_common_send_transport_reset(), if an element popped from
the virtqueue is invalid, we should call virtqueue_detach_element() to
detach it from the virtqueue before freeing its memory.

Fixes: fc0b9b0e1c ("vhost-vsock: add virtio sockets device")
Fixes: CVE-2022-26354
Cc: qemu-stable@nongnu.org
Reported-by: VictorV <vv474172261@gmail.com>
Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
Message-Id: <20220228095058.27899-1-sgarzare@redhat.com>
CVE 2023 0330.patch | (download)

hw/scsi/lsi53c895a.c | 23 17 + 6 - 0 !
1 file changed, 17 insertions(+), 6 deletions(-)

 [patch] hw/scsi/lsi53c895a: fix reentrancy issues in the lsi
 controller (CVE-2023-0330)

We cannot use the generic reentrancy guard in the LSI code, so
we have to manually prevent endless reentrancy here. The problematic
lsi_execute_script() function has already a way to detect whether
too many instructions have been executed - we just have to slightly
change the logic here that it also takes into account if the function
has been called too often in a reentrant way.

The code in fuzz-lsi53c895a-test.c has been taken from an earlier
patch by Mauro Matteo Cascella.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1563
Message-Id: <20230522091011.1082574-1-thuth@redhat.com>
CVE 2023 1544.patch | (download)

hw/rdma/vmw/pvrdma_cmd.c | 6 6 + 0 - 0 !
1 file changed, 6 insertions(+)

 [patch] hw/pvrdma: protect against buggy or malicious guest driver

Guest driver might execute HW commands when shared buffers are not yet
allocated.
This could happen on purpose (malicious guest) or because of some other
guest/host address mapping error.
We need to protect againts such case.

Fixes: CVE-2022-1050

Reported-by: Raven <wxhusst@gmail.com>
Signed-off-by: Yuval Shaia <yuval.shaia.ml@gmail.com>
Message-Id: <20220403095234.2210-1-yuval.shaia.ml@gmail.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>

CVE 2023 3354.patch | (download)

include/io/channel-tls.h | 1 1 + 0 - 0 !
io/channel-tls.c | 18 12 + 6 - 0 !
2 files changed, 13 insertions(+), 6 deletions(-)

 [patch] io: remove io watch if tls channel is closed during handshake
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The TLS handshake make take some time to complete, during which time an
I/O watch might be registered with the main loop. If the owner of the
I/O channel invokes qio_channel_close() while the handshake is waiting
to continue the I/O watch must be removed. Failing to remove it will
later trigger the completion callback which the owner is not expecting
to receive. In the case of the VNC server, this results in a SEGV as
vnc_disconnect_start() tries to shutdown a client connection that is
already gone / NULL.

CVE-2023-3354
Reported-by: jiangyegen <jiangyegen@huawei.com>
Signed-off-by: Daniel P. Berrang <berrange@redhat.com>
(cherry picked from commit 10be627d2b5ec2d6b3dce045144aa739eef678b4)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

CVE 2021 3930.patch | (download)

hw/scsi/scsi-disk.c | 6 6 + 0 - 0 !
1 file changed, 6 insertions(+)

 [patch] hw/scsi/scsi-disk: mode_page_alls not allowed in mode select
 commands

This avoids an off-by-one read of 'mode_sense_valid' buffer in
hw/scsi/scsi-disk.c:mode_sense_page().

Fixes: CVE-2021-3930
Cc: qemu-stable@nongnu.org
Reported-by: Alexander Bulekov <alxndr@bu.edu>
Fixes: a8f4bbe2900 ("scsi-disk: store valid mode pages in a table")
Fixes: #546
Reported-by: Qiuhao Li <Qiuhao.Li@outlook.com>
Signed-off-by: Mauro Matteo Cascella <mcascell@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

CVE 2023 3180.patch | (download)

hw/virtio/virtio-crypto.c | 5 5 + 0 - 0 !
1 file changed, 5 insertions(+)

 [patch] virtio-crypto: verify src&dst buffer length for sym request

For symmetric algorithms, the length of ciphertext must be as same
as the plaintext.
The missing verification of the src_len and the dst_len in
virtio_crypto_sym_op_helper() may lead buffer overflow/divulged.

This patch is originally written by Yiming Tao for QEMU-SECURITY,
resend it(a few changes of error message) in qemu-devel.

Fixes: CVE-2023-3180
Fixes: 04b9b37edda("virtio-crypto: add data queue processing handler")
Cc: Gonglei <arei.gonglei@huawei.com>
Cc: Mauro Matteo Cascella <mcascell@redhat.com>
Cc: Yiming Tao <taoym@zju.edu.cn>
Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
Message-Id: <20230803024314.29962-2-pizhenwei@bytedance.com>
CVE 2021 20203.patch | (download)

hw/net/vmxnet3.c | 13 13 + 0 - 0 !
1 file changed, 13 insertions(+)

 [patch] net: vmxnet3: validate configuration values during activate
 (CVE-2021-20203)

While activating device in vmxnet3_acticate_device(), it does not
validate guest supplied configuration values against predefined
minimum - maximum limits. This may lead to integer overflow or
OOB access issues. Add checks to avoid it.

Fixes: CVE-2021-20203
Buglink: https://bugs.launchpad.net/qemu/+bug/1913873
Reported-by: Gaoning Pan <pgn@zju.edu.cn>
Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
Signed-off-by: Jason Wang <jasowang@redhat.com>

CVE 2021 3507.patch | (download)

hw/block/fdc.c | 8 8 + 0 - 0 !
1 file changed, 8 insertions(+)

 [patch] hw/block/fdc: prevent end-of-track overrun (cve-2021-3507)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Per the 82078 datasheet, if the end-of-track (EOT byte in
the FIFO) is more than the number of sectors per side, the
command is terminated unsuccessfully:

* 5.2.5 DATA TRANSFER TERMINATION

  The 82078 supports terminal count explicitly through
  the TC pin and implicitly through the underrun/over-
  run and end-of-track (EOT) functions. For full sector
  transfers, the EOT parameter can define the last
  sector to be transferred in a single or multisector
  transfer. If the last sector to be transferred is a par-
  tial sector, the host can stop transferring the data in
  mid-sector, and the 82078 will continue to complete
  the sector as if a hardware TC was received. The
CVE 2020 14394.patch | (download)

hw/usb/hcd-xhci.c | 21 18 + 3 - 0 !
1 file changed, 18 insertions(+), 3 deletions(-)

 [patch] hw/usb/hcd-xhci: fix unbounded loop in
 xhci_ring_chain_length() (CVE-2020-14394)

The loop condition in xhci_ring_chain_length() is under control of
the guest, and additionally the code does not check for failed DMA
transfers (e.g. if reaching the end of the RAM), so the loop there
could run for a very long time or even forever. Fix it by checking
the return value of dma_memory_read() and by introducing a maximum
loop length.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/646
Message-Id: <20220804131300.96368-1-thuth@redhat.com>
CVE 2023 3301.patch | (download)

net/vhost-vdpa.c | 9 9 + 0 - 0 !
1 file changed, 9 insertions(+)

 [patch] vhost-vdpa: do not cleanup the vdpa/vhost-net structures if
 peer nic is present

When a peer nic is still attached to the vdpa backend, it is too early to free
up the vhost-net and vdpa structures. If these structures are freed here, then
QEMU crashes when the guest is being shut down. The following call chain
would result in an assertion failure since the pointer returned from
vhost_vdpa_get_vhost_net() would be NULL:

do_vm_stop() -> vm_state_notify() -> virtio_set_status() ->
virtio_net_vhost_status() -> get_vhost_net().

Therefore, we defer freeing up the structures until at guest shutdown
time when qemu_cleanup() calls net_cleanup() which then calls
qemu_del_net_client() which would eventually call vhost_vdpa_cleanup()
again to free up the structures. This time, the loop in net_cleanup()
ensures that vhost_vdpa_cleanup() will be called one last time when
all the peer nics are detached and freed.

All unit tests pass with this change.

CC: imammedo@redhat.com
CC: jusual@redhat.com
CC: mst@redhat.com
Fixes: CVE-2023-3301
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2128929
Signed-off-by: Ani Sinha <anisinha@redhat.com>
Message-Id: <20230619065209.442185-1-anisinha@redhat.com>
CVE 2022 0216.patch | (download)

hw/scsi/lsi53c895a.c | 4 3 + 1 - 0 !
1 file changed, 3 insertions(+), 1 deletion(-)

 [patch] scsi/lsi53c895a: really fix use-after-free in lsi_do_msgout
 (CVE-2022-0216)


CVE 2021 20196.patch | (download)

hw/block/fdc.c | 23 20 + 3 - 0 !
1 file changed, 20 insertions(+), 3 deletions(-)

 [patch] hw/block/fdc: extract blk_create_empty_drive()