CVE-2024-58083
"KVM Linux Online VCPU Access Control Vulnerability"
Description
In the Linux kernel, the following vulnerability has been resolved: KVM: Explicitly verify target vCPU is online in kvm_get_vcpu() Explicitly verify the target vCPU is fully online _prior_ to clamping the index in kvm_get_vcpu(). If the index is "bad", the nospec clamping will generate '0', i.e. KVM will return vCPU0 instead of NULL. In practice, the bug is unlikely to cause problems, as it will only come into play if userspace or the guest is buggy or misbehaving, e.g. KVM may send interrupts to vCPU0 instead of dropping them on the floor. However, returning vCPU0 when it shouldn't exist per online_vcpus is problematic now that KVM uses an xarray for the vCPUs array, as KVM needs to insert into the xarray before publishing the vCPU to userspace (see commit c5b077549136 ("KVM: Convert the kvm->vcpus array to a xarray")), i.e. before vCPU creation is guaranteed to succeed. As a result, incorrectly providing access to vCPU0 will trigger a use-after-free if vCPU0 is dereferenced and kvm_vm_ioctl_create_vcpu() bails out of vCPU creation due to an error and frees vCPU0. Commit afb2acb2e3a3 ("KVM: Fix vcpu_array[0] races") papered over that issue, but in doing so introduced an unsolvable teardown conundrum. Preventing accesses to vCPU0 before it's fully online will allow reverting commit afb2acb2e3a3, without re-introducing the vcpu_array[0] UAF race.
INFO
Published Date :
March 6, 2025, 5:15 p.m.
Last Modified :
April 1, 2025, 6:30 p.m.
Source :
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Remotely Exploitable :
No
Impact Score :
5.9
Exploitability Score :
1.8
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2024-58083
.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2024-58083
vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2024-58083
vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
Initial Analysis by [email protected]
Apr. 01, 2025
Action Type Old Value New Value Added CPE Configuration OR *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.13 up to (excluding) 6.13.3 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.2 up to (excluding) 6.6.78 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 6.7 up to (excluding) 6.12.14 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.11 up to (excluding) 5.15.179 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.16 up to (excluding) 6.1.129 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.5 up to (excluding) 5.10.235 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 4.14.120 up to (excluding) 4.15 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 4.19.44 up to (excluding) 4.20 *cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* versions from (including) 5.0.17 up to (excluding) 5.4.291 Added Reference Type kernel.org: https://git.kernel.org/stable/c/09d50ccf0b2d739db4a485b08afe7520a4402a63 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/125da53b3c0c9d7f58353aea0076e9efd6498ba7 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/1e7381f3617d14b3c11da80ff5f8a93ab14cfc46 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/5cce2ed69b00e022b5cdf0c49c82986abd2941a8 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/7c4899239d0f70f88ac42665b3da51678d122480 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/ca8da90ed1432ff3d000de4f1e2275d4e7d21b96 Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/d817e510662fd1c9797952408d94806f97a5fffd Types: Patch Added Reference Type kernel.org: https://git.kernel.org/stable/c/f2f805ada63b536bc192458a7098388286568ad4 Types: Patch -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Mar. 27, 2025
Action Type Old Value New Value Added CVSS V3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H Added CWE CWE-416 -
CVE Modified by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Mar. 13, 2025
Action Type Old Value New Value Added Reference https://git.kernel.org/stable/c/09d50ccf0b2d739db4a485b08afe7520a4402a63 Added Reference https://git.kernel.org/stable/c/5cce2ed69b00e022b5cdf0c49c82986abd2941a8 Added Reference https://git.kernel.org/stable/c/7c4899239d0f70f88ac42665b3da51678d122480 -
New CVE Received by 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Mar. 06, 2025
Action Type Old Value New Value Added Description In the Linux kernel, the following vulnerability has been resolved: KVM: Explicitly verify target vCPU is online in kvm_get_vcpu() Explicitly verify the target vCPU is fully online _prior_ to clamping the index in kvm_get_vcpu(). If the index is "bad", the nospec clamping will generate '0', i.e. KVM will return vCPU0 instead of NULL. In practice, the bug is unlikely to cause problems, as it will only come into play if userspace or the guest is buggy or misbehaving, e.g. KVM may send interrupts to vCPU0 instead of dropping them on the floor. However, returning vCPU0 when it shouldn't exist per online_vcpus is problematic now that KVM uses an xarray for the vCPUs array, as KVM needs to insert into the xarray before publishing the vCPU to userspace (see commit c5b077549136 ("KVM: Convert the kvm->vcpus array to a xarray")), i.e. before vCPU creation is guaranteed to succeed. As a result, incorrectly providing access to vCPU0 will trigger a use-after-free if vCPU0 is dereferenced and kvm_vm_ioctl_create_vcpu() bails out of vCPU creation due to an error and frees vCPU0. Commit afb2acb2e3a3 ("KVM: Fix vcpu_array[0] races") papered over that issue, but in doing so introduced an unsolvable teardown conundrum. Preventing accesses to vCPU0 before it's fully online will allow reverting commit afb2acb2e3a3, without re-introducing the vcpu_array[0] UAF race. Added Reference https://git.kernel.org/stable/c/125da53b3c0c9d7f58353aea0076e9efd6498ba7 Added Reference https://git.kernel.org/stable/c/1e7381f3617d14b3c11da80ff5f8a93ab14cfc46 Added Reference https://git.kernel.org/stable/c/ca8da90ed1432ff3d000de4f1e2275d4e7d21b96 Added Reference https://git.kernel.org/stable/c/d817e510662fd1c9797952408d94806f97a5fffd Added Reference https://git.kernel.org/stable/c/f2f805ada63b536bc192458a7098388286568ad4
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2024-58083
is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2024-58083
weaknesses.