CVE-2024-46830 json
KVM: x86: Acquire kvm->srcu when handling KVM_SET_VCPU_EVENTS
published 2024-09-27 2 y ago modified 2026-08-05 3 mo ago also EUVD-2024-42091
- cvss
- 7.8
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 15%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
KVM: x86: Acquire kvm->srcu when handling KVM_SET_VCPU_EVENTS
Grab kvm->srcu when processing KVM_SET_VCPU_EVENTS, as KVM will forcibly leave nested VMX/SVM if SMM mode is being toggled, and leaving nested VMX reads guest memory.
Note, kvm_vcpu_ioctl_x86_set_vcpu_events() can also be called from KVM_RUN via sync_regs(), which already holds SRCU. I.e. trying to precisely use kvm_vcpu_srcu_read_lock() around the problematic SMM code would cause problems. Acquiring SRCU isn't all that expensive, so for simplicity, grab it unconditionally for KVM_SET_VCPU_EVENTS.
============================= WARNING: suspicious RCU usage 6.10.0-rc7-332d2c1d713e-next-vm #552 Not tainted ----------------------------- include/linux/kvm_host.h:1027 suspicious rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1 1 lock held by repro/1071: #0: ffff88811e424430 (&vcpu->mutex){+.+.}-{3:3}, at: kvm_vcpu_ioctl+0x7d/0x970 [kvm]
stack backtrace: CPU: 15 PID: 1071 Comm: repro Not tainted 6.10.0-rc7-332d2c1d713e-next-vm #552 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 Call Trace: <TASK> dump_stack_lvl+0x7f/0x90 lockdep_rcu_suspicious+0x13f/0x1a0 kvm_vcpu_gfn_to_memslot+0x168/0x190 [kvm] kvm_vcpu_read_guest+0x3e/0x90 [kvm] nested_vmx_load_msr+0x6b/0x1d0 [kvm_intel] load_vmcs12_host_state+0x432/0xb40 [kvm_intel] vmx_leave_nested+0x30/0x40 [kvm_intel] kvm_vcpu_ioctl_x86_set_vcpu_events+0x15d/0x2b0 [kvm] kvm_arch_vcpu_ioctl+0x1107/0x1750 [kvm] ? mark_held_locks+0x49/0x70 ? kvm_vcpu_ioctl+0x7d/0x970 [kvm] ? kvm_vcpu_ioctl+0x497/0x970 [kvm] kvm_vcpu_ioctl+0x497/0x970 [kvm] ? lock_acquire+0xba/0x2d0 ? find_held_lock+0x2b/0x80 ? do_user_addr_fault+0x40c/0x6f0 ? lock_release+0xb7/0x270 __x64_sys_ioctl+0x82/0xb0 do_syscall_64+0x6c/0x170 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7ff11eb1b539 </TASK>
Patch / fix
- Linux Linux 5.11, 5.15.198, 5.17, 6.1.110, 6.6.51, 6.10.10, 6.11
- linux Debian 12 6.1.112-1
- linux Debian 14, Debian 13 6.10.11-1
debian advisories DEBIAN-CVE-2024-46830
- linux Ubuntu 22.04 LTS 5.15.0-173.183
- linux Ubuntu 24.04 LTS 6.8.0-50.51
- linux-aws Ubuntu 22.04 LTS 5.15.0-1103.110
- linux-aws Ubuntu 24.04 LTS 6.8.0-1020.22
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1103.112
- linux-gcp Ubuntu 24.04 LTS 6.8.0-1019.21
- linux-gke Ubuntu 22.04 LTS 5.15.0-1099.105
- linux-gke Ubuntu 24.04 LTS 6.8.0-1015.19
ubuntu advisories UBUNTU-CVE-2024-46830
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-source Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
- kernel-default Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
- kernel-kvmsmall Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1
- kernel-default-base Linux Micro 6.1, Linux Micro 6.0 6.4.0-24.1.21.4
- kernel-livepatch-MICRO-6-0_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.2
- kernel-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
- kernel-source-rt Linux Micro 6.1, Linux Micro 6.0 6.4.0-22.1
- kernel-livepatch-MICRO-6-0-RT_Update_4 Linux Micro 6.1, Linux Micro 6.0 1-1.1
suse advisories SUSE-SU-2025:20164-1SUSE-SU-2025:20247-1SUSE-SU-2025:20163-1SUSE-SU-2025:20246-1SUSE-SU-2024:4387-1SUSE-SU-2024:4318-1
- git.kernel.org/stable/c/5f35099fa3d59caf10bda88b033538e90086684e commit
- git.kernel.org/stable/c/fa297c33faefe51e10244e8a378837fca4963228 commit
- git.kernel.org/stable/c/939375737b5a0b1bf9b1e75129054e11bc9ca65e commit
- git.kernel.org/stable/c/ecdbe8ac86fb5538ccc623a41f88ec96c7168ab9 commit
- git.kernel.org/stable/c/4bcdd831d9d01e0fb64faea50732b59b2ee88da1 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2024-46830 updated cvss 5.5
kernel: KVM: x86: Acquire kvm->srcu when handling KVM_SET_VCPU_EVENTS
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 moreaffected: workaround, no fix planned “Out of support scope”
-
Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +82 moreaffected: workaround, no fix planned “Will not fix”
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 2 y ago
Exploit prediction
0.24% chance of exploitation in the next 30 days, higher than 15% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| NVD | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
Affected products
- Linux Linux
Classification
- Technology feeds
References
-
git.kernel.org
/stable/c/5f35099fa3d59caf10bda88b033538e90086684e
patch
-
git.kernel.org
/stable/c/fa297c33faefe51e10244e8a378837fca4963228
patch
-
git.kernel.org
/stable/c/939375737b5a0b1bf9b1e75129054e11bc9ca65e
patch
-
git.kernel.org
/stable/c/ecdbe8ac86fb5538ccc623a41f88ec96c7168ab9
patch
-
git.kernel.org
/stable/c/4bcdd831d9d01e0fb64faea50732b59b2ee88da1
patch
-
lists.debian.org
/debian-lts-announce/2025/01/msg00001.html
mailing-list, third-party-advisory
Sources
- CVE List CVE-2024-46830
- NVD CVE-2024-46830
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.