Skip to main content

Linux Kernel CVE-2026-63806

| EUVDEUVD-2026-45472 HIGH
Reachable Assertion (CWE-617)
2026-07-19 Linux GHSA-3rc6-xmr7-v8j2
7.1
CVSS 3.1 · Vendor: Linux
Share

Severity by source

Vendor (Linux) PRIMARY
7.1 HIGH
AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H
vuln.today AI
7.1 HIGH

Guest-triggerable with no host privileges (PR:N) and low complexity (AC:L) over a local in-guest vector; host crash across the guest/host boundary gives S:C and A:H with no C/I impact.

3.1 AV:L/AC:L/PR:N/UI:N/S:C/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

5
Analysis Generated
Jul 20, 2026 - 15:36 vuln.today
CVSS changed
Jul 20, 2026 - 15:22 NVD
7.1 (HIGH)
Patch available
Jul 19, 2026 - 14:17 EUVD
CVE Published
Jul 19, 2026 - 12:02 cve.org
HIGH 7.1
CVE Published
Jul 19, 2026 - 12:02 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

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.

AnalysisAI

Guest-to-host denial of service in the Linux kernel's x86 KVM ioeventfd datamatch handling allows a malicious VM to crash the hypervisor host via a reachable BUG_ON(). A guest that issues an unaligned store spanning a page boundary and hitting a datamatch-enabled ioeventfd at offset 0 of the second page triggers an alignment assertion in ioeventfd_write(), panicking the host kernel. The defect has existed since 2009 (kernel 2.6.32); EPSS is low (0.18%, 7th percentile) and there is no public exploit identified at time of analysis, though the commit message includes a working reproducer trace.

Technical ContextAI

The bug lives in virt/kvm/eventfd.c in KVM's ioeventfd fast-path, used by userspace VMMs (typically QEMU) to signal virtio and other paravirtual devices without a full userspace exit. KVM x86's instruction emulator stores the full destination value in x86_emulate_ctxt.dst (dst.valptr), which is 32-byte aligned. When an emulated store splits a page and the second fragment lands on emulated MMIO backed by a datamatch ioeventfd of length @len, ioeventfd_write() reads the comparison value from &dst.valptr[N]. If N is not aligned to @len, the pointer is misaligned and the historical BUG_ON() alignment check fires. Root cause is a reachable assertion on guest-controlled input (CWE-617 Reachable Assertion; the input listed CWE as N/A). The fix removes the BUG_ON() and replaces the direct dereference with get_unaligned(), which safely performs the unaligned read and avoids C undefined behavior that would otherwise splat under CONFIG_UBSAN_ALIGNMENT=y.

RemediationAI

Apply the vendor-released patch: upgrade to Linux kernel 6.12.95, 6.18.38, 7.1.3, or 7.2-rc1 (or later) via your distribution's stable-kernel update channel, then reboot or live-patch the affected hypervisor hosts; the fix replaces the guest-triggerable BUG_ON() with get_unaligned(). Fix commits are at git.kernel.org/stable/c/bf89e3738480d33cd515b4a18900e8443d40cd2e and the related stable commits listed above. There is no clean in-place workaround because datamatch ioeventfds are used by standard virtio device emulation, so disabling them would break normal guest device I/O; as a compensating control, limit the ability to run untrusted or unprivileged guests on unpatched hosts and restrict access to the /dev/kvm-backed VM management plane, accepting that this only reduces exposure rather than eliminating the flaw. Live kernel patching (kpatch/livepatch) is preferable where reboots are disruptive to running tenants.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

Share

CVE-2026-63806 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy