CVE-2026-64308: crypto: ccp - Do not initialize SNP for ioctl(SNP_VLEK_LOAD)
In the Linux kernel, the following vulnerability has been resolved:
crypto: ccp - Do not initialize SNP for ioctl(SNPVLEKLOAD)
Sashiko notes:
if SEV initialization fails and KVM is actively running normal VMs, could a userspace process trigger this code path via /dev/sev ioctls (e.g., SEVPDHGEN) and zero out MSRVMHSAVEPA globally? Would the next VMRUN execution for an active VM trigger a general protection fault and crash the host?
The SEV firmware docs for SNPVLEKLOAD note:
On SNPSHUTDOWN, the VLEK is deleted.
That is, the initialization/shutdown wrapper here is pointless, because the firmware immediately throws away the key anyway. Instead, refuse to do anything if SNP has not been previously initialized.
This is an ABI break: before, this was a no-op and almost certainly a mistake by userspace, and now it returns -ENODEV. ABI compatibility could be maintained here by simply returning 0 in the check instead.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Apply the kernel fix for 'crypto: ccp - Do not initialize SNP for ioctl(SNP_VLEK_LOAD)' so that the SNP initialization/shutdown wrapper does not run for this ioctl; the check should return 0 instead of performing the previously pointless initialization, and the ioctl path should refuse with -ENODEV when appropriate per the fix description.
Linux kernel crypto: ccp Do not initialize SNP for ioctl(SNP_VLEK_LOAD) = implemented as returning 0 in the check / refuse to do the initialization (return -ENODEV)
Event History
Frequently Asked Questions
Who is exposed to this issue?
Systems running the Linux kernel with access to the /dev/sev ioctl interface are relevant. Exploitation requires a local user with sufficient permissions to invoke the affected ioctls.
What could happen if the issue is triggered?
If SEV initialization fails while KVM is running normal virtual machines, a userspace process may be able to drive a code path that clears MSR_VM_HSAVE_PA globally. A subsequent VMRUN for an active VM could cause a general protection fault and crash the host.
What behavior changes after the fix?
SNP_VLEK_LOAD no longer initializes SNP when SNP has not already been initialized; it returns -ENODEV instead. Previously this case was a no-op, so userspace relying on that behavior may need adjustment.