CVE-2026-63806
High · 7.1CVSS
7.1
EPSS
0.2%
Published
Jul 19, 2026
CISA due date
—
Cloudanix analysis
A flaw in Linux virtualization can let code inside a virtual machine crash the physical host, causing outages for other workloads on that server.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
This flaw is a guest-triggerable denial-of-service condition in the Linux kernel KVM ioeventfd datamatch path. A specially crafted guest memory store that crosses a page boundary and then reaches emulated MMIO backed by a datamatch-enabled ioeventfd can cause KVM to evaluate an unaligned value pointer. The vulnerable code used BUG_ON() to enforce alignment, so the condition triggers a kernel BUG/Oops rather than being handled safely. On affected hosts, this can crash the kernel or destabilize the hypervisor, causing loss of availability for the host and resident virtual machines. The fix replaces the unsafe alignment assumption with get_unaligned(), avoiding undefined behavior while allowing KVM to process the access safely.
Why it matters to the business
Organizations using Linux KVM-based virtualization may be exposed to host-level availability disruption from code running inside a guest VM. Successful exploitation can crash or panic the virtualization host, interrupting hosted workloads and potentially causing downtime across multiple virtual machines on the same system. The issue is not known to be exploited in the wild, is not listed in CISA KEV, has low EPSS, and currently has no reported public exploit maturity, but it should still be prioritized for virtualization hosts because availability impact is high and the trigger is reachable from guest execution under the right device/MMIO configuration.
How an attack unfolds
An attacker first needs the ability to execute code inside a virtual machine running on an affected Linux KVM host. The guest then performs a memory store of a size and address alignment that causes the access to split across a page boundary. The first part of the write is handled as normal guest memory, while the second part lands on an emulated MMIO page associated with a datamatch-enabled ioeventfd. When KVM evaluates the datamatch for the second fragment, it uses an offset into the original destination value that may not be aligned for the ioeventfd length. On vulnerable kernels, that misalignment satisfies earlier range checks but then trips a BUG_ON() in ioeventfd_write(), leading to a kernel Oops/BUG and potential host crash. The practical result is denial of service rather than data theft or privilege escalation.
How to fix it
Apply the Linux kernel update from the operating system or hypervisor vendor that includes the KVM change replacing the guest-triggerable BUG_ON() in ioeventfd datamatch handling with get_unaligned(). Because no exact fixed package versions were provided, track vendor advisories for the affected kernel branches in use and update all KVM-capable virtualization hosts to a fixed kernel build. Reboot hosts into the fixed kernel after installation; merely installing kernel packages is not sufficient if the host continues running the vulnerable kernel. Where immediate patching is not possible, reduce exposure by limiting who can run untrusted workloads on affected KVM hosts, isolating untrusted tenants/workloads onto patched or dedicated hosts, and disabling or avoiding risky virtual device configurations where operationally feasible. Treat mitigation as temporary; the durable fix is a patched kernel.
How to confirm the fix worked
Confirm remediation by verifying that each virtualization host is running, not merely has installed, a kernel version containing the KVM ioeventfd get_unaligned() fix for this issue. Validate through vendor package metadata, changelogs, or source patches referencing the replacement of the ioeventfd datamatch BUG_ON() with get_unaligned(). Check that KVM modules loaded after reboot match the patched kernel build. Exposure exists primarily on systems with KVM enabled, especially hosts loading kvm, kvm_intel, or kvm_amd and running guest VMs. A negative validation should include: no vulnerable kernel running, KVM modules aligned to the patched kernel, successful host reboot into the fixed kernel, and no recurring kernel logs showing ioeventfd_write BUG/Oops traces.
Typical attack path
- Obtain the ability to run code inside a guest VM on a KVM-based Linux virtualization host.
- Identify or influence a guest device/MMIO path that uses datamatch-enabled ioeventfd handling, commonly through virtualized device emulation.
- Issue a crafted guest store that begins near the end of a page so the write crosses into the next page.
- Ensure the second page fragment targets emulated MMIO at an offset matching an ioeventfd datamatch region.
- Trigger KVM's ioeventfd datamatch processing with an unaligned source pointer derived from the split store.
- Cause the vulnerable BUG_ON() in the host kernel KVM module to fire, producing a kernel Oops/BUG and possible host-wide denial of service.
How to detect it
To assess prior exploitation or triggering, review host-side kernel logs, persistent journal entries, hypervisor logs, crash dumps, and monitoring alerts for kernel BUG/Oops traces involving KVM ioeventfd handling. Useful sources include dmesg output, /var/log/kern.log, /var/log/messages, systemd journal entries from the kernel facility, kdump/vmcore records, hypervisor management logs, and availability monitoring events showing sudden host reboots or kernel panics. Focus on stack traces that include ioeventfd_write, __kvm_io_bus_write, kvm_io_bus_write, vcpu_mmio_write, x86_emulate_instruction, kvm_mmu_page_fault, kvm_arch_vcpu_ioctl_run, and loaded modules such as kvm, kvm_intel, or kvm_amd. Correlate any such event with guest activity immediately before the crash, especially VM workloads that performed unusual MMIO-heavy operations or custom device interaction. This issue does not provide strong network or file-based indicators by itself; detection is primarily through kernel crash telemetry and KVM stack traces.
- kernel BUG at arch/x86/kvm/../../../virt/kvm/eventfd.c:783
- ioeventfd_write+0x6c/0x70 [kvm]
- __kvm_io_bus_write+0x85/0xb0 [kvm]
- kvm_io_bus_write+0x53/0x80 [kvm]
- vcpu_mmio_write+0x66/0xf0 [kvm]
- emulator_read_write_onepage
- emulator_read_write
- x86_emulate_insn
- x86_emulate_instruction
- kvm_mmu_page_fault
- vmx_handle_exit
- kvm_arch_vcpu_ioctl_run
- kvm_vcpu_ioctl
- Modules linked in: kvm_intel kvm irqbypass
- Oops: invalid opcode: 0000
- RIP: 0010:ioeventfd_write
- ------------[ cut here ]------------
- ---[ end trace
What your security team should do
- Inventory Linux hosts running KVM or KVM-based virtualization and identify those running kernel builds that predate the vendor fix.
- Prioritize patching and rebooting multi-tenant, externally provided, or untrusted-workload virtualization hosts because a guest-triggered crash can affect many workloads at once.
- Monitor vendor advisories for exact fixed kernel package versions for each distribution and hypervisor appliance in use.
- Until patched, restrict untrusted guest execution on affected hosts and consider workload placement controls to isolate higher-risk VMs.
- Search historical kernel logs and crash dumps for KVM ioeventfd_write BUG/Oops indicators to determine whether the condition has already occurred.
- Ensure crash handling and live migration/HA policies are functioning so that host crashes do not create prolonged service outages.
- Because this is not KEV-listed and has low EPSS with no known public exploit maturity, prioritize according to virtualization criticality rather than internet exposure alone.
The record
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.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|