In the Linux kernel, the following vulnerability has been resolved:
KVM: Replace guest-triggerable BUG_ON() in ioeventfd datamatch with get_unaligned()
Drop a BUG_ON() that has been reachable since it was first added, way back in 2009, and instead use get_unaligned() to perform potentially-unaligned accesses.
For a given store, KVM x86's emulator tracks the entire value in the destination operand, x86_emulate_ctxt.dst. If the destination is memory, and the target splits multiple pages and/or is emulated MMIO, then KVM handles each fragment independently. E.g. on a page split starting at page offset 0xffc, KVM writes 4 bytes to the first page, then the remaining bytes to the second page, using ctxt->dst as the source for both (with appropriate offsets).
If the destination splits a page *and* hits emulated MMIO on the second page, then KVM will complete the write to the first page, then emulate the MMIO access to the second page. If there is a datamatch-enabled ioeventfd at offset 0 of the second page, then KVM will process the remainder of the store as a potential ioeventfd signal.
Putting it all together, if the guest emits a store that splits a page starting at page offset N, and the second page has a datamatch-enabled ioeventfd at offset 0, then KVM will check for datamatch using &dst.valptr[N] as the source. Due to dst (and thus dst.valptr) being 32-byte aligned, if N is not aligned to @len, the BUG_ON() fires.
E.g. with a 16-byte store at page offset 0xffc, to an ioeventfd of len 8, all initial checks in ioeventfd_in_range() will succeed, and the BUG_ON() fires due to @val being 4-byte aligned, but not 8-byte aligned.
------------[ cut here ]------------ kernel BUG at arch/x86/kvm/../../../virt/kvm/eventfd.c:783! Oops: invalid opcode: 0000 [#1] SMP CPU: 0 UID: 1000 PID: 615 Comm: repro Not tainted 7.1.0-rc2-ff238429d1ea #365 PREEMPT Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:ioeventfd_write+0x6c/0x70 [kvm] Call Trace: <TASK> __kvm_io_bus_write+0x85/0xb0 [kvm] kvm_io_bus_write+0x53/0x80 [kvm] vcpu_mmio_write+0x66/0xf0 [kvm] emulator_read_write_onepage+0x12a/0x540 [kvm] emulator_read_write+0x109/0x2b0 [kvm] x86_emulate_insn+0x4f8/0xfb0 [kvm] x86_emulate_instruction+0x181/0x790 [kvm] kvm_mmu_page_fault+0x313/0x630 [kvm] vmx_handle_exit+0x18a/0x590 [kvm_intel] kvm_arch_vcpu_ioctl_run+0xc81/0x1c90 [kvm] kvm_vcpu_ioctl+0x2d5/0x970 [kvm] __x64_sys_ioctl+0x8a/0xd0 do_syscall_64+0xb7/0x890 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7f19c931a9bf </TASK> Modules linked in: kvm_intel kvm irqbypass ---[ end trace 0000000000000000 ]---
In a perfect world, the fix would be to simply delete the BUG_ON(), as KVM x86 doesn't perform alignment checks on "normal" memory accesses at CPL0. Sadly, C99 ruins all the fun; while the x86 architecture plays nice, dereferencing an unaligned pointer directly is undefined behavior in C, e.g. triggers splats when running with CONFIG_UBSAN_ALIGNMENT=y.
CVSS Details
- CVSS 3.1 Base Score: 7.1
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon_linux_2023 | — | Upgrade python3-perf-debuginfoUpgrade kernel6.18-debuginfo-common-aarch64Upgrade python3-perf6.18-debuginfoUpgrade perf6.18-debuginfoUpgrade python3-perf6.18Upgrade kernel6.18Upgrade python3-perfUpgrade kernel-tools-debuginfoUpgrade kernel-livepatch-6.18.38-73.137Upgrade bpftoolUpgrade kernel-livepatch-6.1.180-225.360Upgrade kernel6.18-tools-develUpgrade kernel-debuginfo-common-aarch64Upgrade kernel6.18-debuginfo-common-x86_64Upgrade kernelUpgrade kernel-tools-develUpgrade perf6.12-debuginfoUpgrade kernel-headersUpgrade kernel6.18-modules-extraUpgrade kernel6.18-headersUpgrade bpftool6.18-debuginfoUpgrade kernel6.18-develUpgrade microvm-kernel6.18Upgrade kernel6.12-tools-debuginfoUpgrade perfUpgrade kernel6.12-debuginfoUpgrade kernel6.18-debuginfoUpgrade bpftool6.12Upgrade kernel6.18-toolsUpgrade python3-perf6.12-debuginfoUpgrade kernel6.12-toolsUpgrade kernel-toolsUpgrade kernel-modules-extra-commonUpgrade kernel6.12Upgrade kernel6.12-modules-extraUpgrade kernel6.18-tools-debuginfoUpgrade kernel-develUpgrade kernel-debuginfoUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-modules-extraUpgrade kernel6.12-develUpgrade kernel6.12-debuginfo-common-aarch64Upgrade perf6.12Upgrade bpftool-debuginfoUpgrade kernel-livepatch-6.12.95-124.187Upgrade perf-debuginfo | Aug 10, 2026 | Jul 19, 2026 |
| Debian | — | Upgrade linux-6.1Upgrade linux | Jul 23, 2026 | Jul 23, 2026 |
| Ubuntu | — | Upgrade linux-image-nvidia-7.0Upgrade linux-image-intel-iotg-5.15Upgrade linux-image-lowlatencyUpgrade linux-image-7.0.0-1011-gcp-64kUpgrade linux-image-kvm-5.15Upgrade linux-image-lowlatency-hwe-20.04Upgrade linux-image-azureUpgrade linux-image-7.0.0-1018-nvidiaUpgrade linux-image-realtime-hwe-26.04Upgrade linux-image-virtual-hwe-26.04Upgrade linux-image-nvidia-bos-7.0Upgrade linux-image-5.15.0-1114-oracleUpgrade linux-image-gcp-fipsUpgrade linux-image-5.15.0-1112-intel-iotgUpgrade linux-image-5.15.0-1117-awsUpgrade linux-image-7.0.0-31-realtime-64kUpgrade linux-image-7.0.0-31-realtimeUpgrade linux-image-generic-64kUpgrade linux-image-oem-20.04dUpgrade linux-image-nvidiaUpgrade linux-image-7.0.0-1012-aws-64kUpgrade linux-image-7.0.0-1012-awsUpgrade linux-image-gkeopUpgrade linux-image-5.15.0-1117-aws-fipsUpgrade linux-image-generic-64k-hwe-20.04Upgrade linux-image-generic-lpaeUpgrade linux-image-aws-lts-22.04Upgrade linux-image-7.0.0-2018-nvidia-bos-64kUpgrade linux-image-7.0.0-1006-gkeUpgrade linux-image-azure-lts-22.04Upgrade linux-image-ibm-7.0Upgrade linux-image-azure-fdeUpgrade linux-image-gcp-lts-22.04Upgrade linux-image-raspiUpgrade linux-image-7.0.0-2018-nvidia-bosUpgrade linux-image-oem-26.04Upgrade linux-image-oracle-64kUpgrade linux-image-oracle-64k-7.0Upgrade linux-image-gcp-7.0Upgrade linux-image-7.0.0-1013-ibmUpgrade linux-image-nvidia-64k-7.0Upgrade linux-image-7.0.0-31-genericUpgrade linux-image-azure-fde-lts-22.04Upgrade linux-image-5.15.0-1100-gkeopUpgrade linux-image-5.15.0-1109-intel-iot-realtimeUpgrade linux-image-oem-20.04bUpgrade linux-image-nvidia-bos-64k-7.0Upgrade linux-image-7.0.0-1011-gcpUpgrade linux-image-gcpUpgrade linux-image-fipsUpgrade linux-image-5.15.0-198-generic-64kUpgrade linux-image-nvidia-bosUpgrade linux-image-5.15.0-195-lowlatency-64kUpgrade linux-image-nvidia-64k-hwe-26.04Upgrade linux-image-raspi-realtimeUpgrade linux-image-5.15.0-1123-azure-fipsUpgrade linux-image-7.0.0-1011-oracleUpgrade linux-image-genericUpgrade linux-image-oem-20.04cUpgrade linux-image-gke-64kUpgrade linux-image-azure-lts-26.04Upgrade linux-image-azure-fipsUpgrade linux-image-lowlatency-64kUpgrade linux-image-nvidia-bos-64kUpgrade linux-image-lowlatency-64k-hwe-20.04Upgrade linux-image-ibmUpgrade linux-image-intelUpgrade linux-image-oem-26.04bUpgrade linux-image-gke-5.15Upgrade linux-image-gke-64k-7.0Upgrade linux-image-intel-iot-realtime-5.15Upgrade linux-image-nvidia-hwe-26.04Upgrade linux-image-fips-5.15Upgrade linux-image-oracle-7.0Upgrade linux-image-oracle-5.15Upgrade linux-image-5.15.0-1113-gkeUpgrade linux-image-realtimeUpgrade linux-image-virtual-5.15Upgrade linux-image-oracle-lts-22.04Upgrade linux-image-generic-64k-5.15Upgrade linux-image-nvidia-64kUpgrade linux-image-gke-hwe-26.04Upgrade linux-image-gcp-64k-7.0Upgrade linux-image-aws-7.0Upgrade linux-image-aws-64k-7.0Upgrade linux-image-kvmUpgrade linux-image-5.15.0-198-generic-lpaeUpgrade linux-image-5.15.0-1118-gcp-fipsUpgrade linux-image-5.15.0-1117-aws-64kUpgrade linux-image-realtime-5.15Upgrade linux-image-intel-iotgUpgrade linux-image-gcp-5.15Upgrade linux-image-aws-fipsUpgrade linux-image-aws-5.15Upgrade linux-image-5.15.0-1080-xilinx-zynqmpUpgrade linux-image-realtime-64k-7.0Upgrade linux-image-raspi-realtime-7.0Upgrade linux-image-gke-64k-hwe-26.04Upgrade linux-image-generic-hwe-24.04Upgrade linux-image-azure-7.0Upgrade linux-image-7.0.0-1019-raspi-realtimeUpgrade linux-image-5.15.0-198-fipsUpgrade linux-image-7.0.0-1019-raspiUpgrade linux-image-oem-7.0Upgrade linux-image-generic-64k-7.0Upgrade linux-image-generic-hwe-20.04Upgrade linux-image-5.15.0-198-genericUpgrade linux-image-5.15.0-1109-kvmUpgrade linux-image-aws-64k-lts-22.04Upgrade linux-image-oracleUpgrade linux-image-7.0.0-1014-azureUpgrade linux-image-7.0.0-1006-gke-64kUpgrade linux-image-azure-5.15Upgrade linux-image-ibm-5.15Upgrade linux-image-gcp-fips-5.15Upgrade linux-image-aws-fips-5.15Upgrade linux-image-5.15.0-1123-azureUpgrade linux-image-5.15.0-1118-gcpUpgrade linux-image-5.15.0-1116-realtimeUpgrade linux-image-virtual-hwe-24.04Upgrade linux-image-raspi-7.0Upgrade linux-image-gke-7.0Upgrade linux-image-generic-hwe-26.04Upgrade linux-image-awsUpgrade linux-image-7.0.0-1018-nvidia-64kUpgrade linux-image-7.0.0-1011-oracle-64kUpgrade linux-image-virtual-7.0Upgrade linux-image-5.15.0-1111-ibmUpgrade linux-image-oem-20.04Upgrade linux-image-xilinx-zynqmpUpgrade linux-image-azure-fde-5.15Upgrade linux-image-5.15.0-1122-azure-fdeUpgrade linux-image-gkeop-5.15Upgrade linux-image-realtime-64k-hwe-26.04Upgrade linux-image-oem-26.04aUpgrade linux-image-gkeUpgrade linux-image-generic-64k-hwe-26.04Upgrade linux-image-virtual-hwe-20.04Upgrade linux-image-aws-64k-5.15Upgrade linux-image-5.15.0-195-lowlatencyUpgrade linux-image-generic-7.0Upgrade linux-image-xilinx-zynqmp-5.15Upgrade linux-image-lowlatency-64k-5.15Upgrade linux-image-azure-fips-5.15Upgrade linux-image-virtualUpgrade linux-image-realtime-7.0Upgrade linux-image-realtime-64kUpgrade linux-image-aws-64kUpgrade linux-image-7.0.0-31-generic-64kUpgrade linux-image-7.0.0-1013-oemUpgrade linux-image-generic-64k-hwe-24.04Upgrade linux-image-lowlatency-5.15Upgrade linux-image-intel-iot-realtimeUpgrade linux-image-generic-lpae-5.15Upgrade linux-image-gcp-64kUpgrade linux-image-generic-lpae-hwe-20.04Upgrade linux-image-generic-5.15Upgrade linux-image-azure-cvm | Sep 14, 2026 | Sep 7, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Aug 3, 2026 | Jul 19, 2026 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub