CVE-2026-64309 Overview
CVE-2026-64309 affects the Linux kernel Cryptographic Coprocessor (CCP) driver used for AMD Secure Encrypted Virtualization with Secure Nested Paging (SEV-SNP). The vulnerability involves incorrect firmware initialization when handling the ioctl(SNP_COMMIT) command through /dev/sev. The kernel unnecessarily initialized SNP firmware for a command that does not require it, creating a code path where userspace could disrupt active virtualization state.
Critical Impact
If SEV initialization fails while KVM hosts active virtual machines, a userspace process invoking /dev/sev ioctls could zero out MSR_VM_HSAVE_PA globally, potentially causing a general protection fault on the next VMRUN and crashing the host.
Affected Products
- Linux kernel CCP (Cryptographic Coprocessor) driver
- AMD SEV-SNP firmware interface via /dev/sev
- KVM hypervisor hosts running AMD EPYC processors with SEV-SNP
Discovery Timeline
- 2026-07-25 - CVE-2026-64309 published to NVD
- 2026-07-25 - Last updated in NVD database
Technical Details for CVE-2026-64309
Vulnerability Analysis
The issue resides in the AMD CCP driver's handling of the SNP_COMMIT ioctl command. The SNP_COMMIT command does not require the SEV-SNP firmware to be in any particular initialization state. However, the kernel path attempted to initialize SNP even when the firmware was previously uninitialized. If that initialization failed while KVM was already running non-SNP guests, the failure handler could zero out MSR_VM_HSAVE_PA on all CPUs. The next VMRUN executed by an active VM would then take a general protection fault, crashing the host kernel.
Root Cause
The root cause is an incorrect state assumption in the CCP driver. The SEV-SNP firmware specification (document 56860) did not list SNP_COMMIT in Table 5 as a command permitted in the UNINIT state, yet the command is in fact allowed and a documentation update will reflect that. The driver treated SNP_COMMIT as if it required initialization, triggering unnecessary firmware state transitions and cleanup side effects on failure paths.
Attack Vector
A local userspace process with access to /dev/sev can issue SEV ioctls such as SEV_PDH_GEN or SNP_COMMIT to trigger the vulnerable initialization path. On a system where SEV initialization fails, this triggers global MSR modification affecting all CPUs. Active KVM guests unrelated to SEV-SNP would then crash the host at the next VMRUN, producing a denial-of-service condition against the hypervisor and every tenant workload it hosts.
The fix skips SNP initialization for SNP_COMMIT when the firmware was previously uninitialized. See the upstream kernel commit for the patch implementation.
Detection Methods for CVE-2026-64309
Indicators of Compromise
- Unexpected host kernel panics or general protection faults referencing VMRUN on AMD EPYC hosts running KVM
- Kernel log entries showing SEV or SNP initialization failures followed by VM instability
- Userspace processes opening /dev/sev and issuing SEV_PDH_GEN, SNP_COMMIT, or related ioctls outside of expected virtualization management workflows
Detection Strategies
- Audit access to /dev/sev and correlate ioctl invocations with the process identity and parent workload
- Monitor dmesg and journal output for ccp, sev, and snp subsystem errors, especially failure paths that touch MSR_VM_HSAVE_PA
- Track host crash frequency on AMD SEV-capable hypervisors and compare against baseline uptime metrics
Monitoring Recommendations
- Ingest kernel logs from AMD EPYC KVM hosts into a centralized logging platform and alert on SEV subsystem errors
- Restrict device node permissions on /dev/sev and log any process outside the virtualization stack that opens the device
- Alert on VMRUN-related general protection faults, which typically indicate host-level MSR corruption
How to Mitigate CVE-2026-64309
Immediate Actions Required
- Apply the upstream Linux kernel patches referenced in the stable tree commits for the CCP driver
- Restrict /dev/sev access to trusted virtualization management components only
- Reboot affected KVM hosts after patching to ensure the corrected initialization path is active
Patch Information
The fix is available in the mainline and stable kernel trees. Refer to the following commits: 5a1364da2f04, 67ed191b4c8b, 74768f73854d, and 7a361c74bb12. Distribution vendors will backport these commits to their supported kernel branches.
Workarounds
- Tighten permissions on /dev/sev so only the virtualization control plane can issue ioctls
- Disable SEV-SNP in firmware or kernel boot parameters on hosts that do not require confidential VM workloads
- Isolate confidential-computing tenants from standard KVM workloads to limit blast radius if the host crashes
# Restrict /dev/sev access to the kvm group only
chown root:kvm /dev/sev
chmod 0660 /dev/sev
# Optionally disable SEV-SNP at boot if not required
# Append to kernel cmdline in /etc/default/grub:
# kvm_amd.sev=0 kvm_amd.sev_snp=0
update-grub
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

