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.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
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) |
To consult the complete list of CPE names with products and versions, see this page



