CVE-2022-48862

Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
16/07/2024
Last modified:
23/07/2024

Description

In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> vhost: fix hung thread due to erroneous iotlb entries<br /> <br /> In vhost_iotlb_add_range_ctx(), range size can overflow to 0 when<br /> start is 0 and last is ULONG_MAX. One instance where it can happen<br /> is when userspace sends an IOTLB message with iova=size=uaddr=0<br /> (vhost_process_iotlb_msg). So, an entry with size = 0, start = 0,<br /> last = ULONG_MAX ends up in the iotlb. Next time a packet is sent,<br /> iotlb_access_ok() loops indefinitely due to that erroneous entry.<br /> <br /> Call Trace:<br /> <br /> iotlb_access_ok+0x21b/0x3e0 drivers/vhost/vhost.c:1340<br /> vq_meta_prefetch+0xbc/0x280 drivers/vhost/vhost.c:1366<br /> vhost_transport_do_send_pkt+0xe0/0xfd0 drivers/vhost/vsock.c:104<br /> vhost_worker+0x23d/0x3d0 drivers/vhost/vhost.c:372<br /> kthread+0x2e9/0x3a0 kernel/kthread.c:377<br /> ret_from_fork+0x1f/0x30 arch/x86/entry/entry_64.S:295<br /> <br /> <br /> Reported by syzbot at:<br /> https://syzkaller.appspot.com/bug?extid=0abd373e2e50d704db87<br /> <br /> To fix this, do two things:<br /> <br /> 1. Return -EINVAL in vhost_chr_write_iter() when userspace asks to map<br /> a range with size 0.<br /> 2. Fix vhost_iotlb_add_range_ctx() to handle the range [0, ULONG_MAX]<br /> by splitting it into two entries.

Vulnerable products and versions

CPE From Up to
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.7 (including) 5.15.29 (excluding)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (including) 5.16.15 (excluding)