CVE-2026-64286 Overview
CVE-2026-64286 is a Linux kernel vulnerability in the KVM subsystem for arm64, specifically affecting protected KVM (pKVM). The flush_hyp_vcpu() function copies the host vCPU context verbatim into the hypervisor's private vCPU without clearing the __hyp_running_vcpu field. Because ctxt_to_vcpu() expects guest contexts to have a NULL __hyp_running_vcpu and resolves the vCPU via container_of(), a host-supplied pointer is dereferenced at Exception Level 2 (EL2). This host-to-EL2 boundary violation undermines the isolation guarantees that pKVM is designed to provide.
Critical Impact
A privileged host actor can influence pointer resolution inside the pKVM hypervisor at EL2, breaking the host-hypervisor trust boundary on arm64 systems.
Affected Products
- Linux kernel with KVM arm64 protected mode (pKVM) enabled
- arm64 systems running affected upstream kernel versions
- Distributions shipping the vulnerable flush_hyp_vcpu() code path
Discovery Timeline
- 2026-07-25 - CVE-2026-64286 published to NVD
- 2026-07-30 - Last updated in NVD database
Technical Details for CVE-2026-64286
Vulnerability Analysis
The flaw resides in the arm64 KVM pKVM implementation. Protected KVM runs a portion of the hypervisor at EL2 in an isolated trust domain distinct from the host kernel at EL1. On every guest run, flush_hyp_vcpu() copies the host-owned vCPU context into the hyp's private vCPU structure. The copy is verbatim and preserves fields that should only ever be valid inside a host context.
One such field, __hyp_running_vcpu, is set only on the host context. The helper ctxt_to_vcpu() assumes any guest context has this field cleared and uses container_of() against it to derive the associated vCPU pointer. When the field carries over a host-provided value into the hyp's private vCPU, EL2 code dereferences an attacker-influenced pointer.
Root Cause
The root cause is missing sanitization at a privilege boundary. The copy from EL1 host memory into EL2-owned state does not enforce the invariant that guest contexts have __hyp_running_vcpu == NULL. This is a classic input validation failure across a trust boundary, closely related to improper trust of caller-controlled pointer data.
Attack Vector
Exploitation requires local access with high privileges on the host kernel. An actor able to control the host vCPU context can seed __hyp_running_vcpu with a chosen value. When flush_hyp_vcpu() copies the context into EL2 and later code invokes ctxt_to_vcpu(), the hypervisor computes a vCPU pointer from the attacker-supplied value using container_of() and dereferences it at EL2. This can lead to hypervisor memory corruption or information disclosure, breaking the confidentiality and integrity guarantees that pKVM provides for guest workloads.
No public proof-of-concept is available. See the upstream fix commits referenced below for the exact code path.
Detection Methods for CVE-2026-64286
Indicators of Compromise
- Unexpected EL2 panics, hyp aborts, or kernel oops entries referencing flush_hyp_vcpu, ctxt_to_vcpu, or pKVM hyp code paths
- Kernel logs showing KVM arm64 hypervisor faults on protected VM runs
- Anomalous crashes on arm64 hosts running confidential or protected guests
Detection Strategies
- Inventory arm64 hosts running kernels with pKVM enabled and cross-reference against the fixed commit hashes 477145860dba, 6bea2f8becdb, d4f4d61715d1, dfaef40d8a15, and e8042f6e1d7b
- Monitor dmesg and kernel crash telemetry for hyp-related faults tied to KVM vCPU flush operations
- Correlate hypervisor faults with local privileged process activity on virtualization hosts
Monitoring Recommendations
- Forward kernel logs from arm64 virtualization hosts to a centralized logging pipeline and alert on KVM hyp-panic signatures
- Track root and CAP_SYS_ADMIN process activity that interacts with /dev/kvm on protected-KVM hosts
- Baseline guest lifecycle events and alert on unexpected VM crashes clustered around specific host processes
How to Mitigate CVE-2026-64286
Immediate Actions Required
- Apply the upstream Linux kernel patches referenced in the stable git commits 477145860dba, 6bea2f8becdb, d4f4d61715d1, dfaef40d8a15, and e8042f6e1d7b
- Track distribution advisories for backported fixes and update arm64 virtualization hosts running pKVM
- Restrict local privileged access on hosts running protected KVM guests until patched
Patch Information
The fix clears __hyp_running_vcpu in the hyp's private vCPU after flush_hyp_vcpu() copies the host context, restoring the invariant that guest contexts have this field NULL. See the upstream commits: 477145860dba, 6bea2f8becdb, d4f4d61715d1, dfaef40d8a15, and e8042f6e1d7b.
Workarounds
- Disable protected KVM on arm64 hosts where it is not required until patches are deployed
- Limit access to /dev/kvm and virtualization management interfaces to a minimal set of trusted administrators
- Isolate arm64 virtualization workloads from untrusted local tenants pending remediation
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

