CVE-2026-63794
High · 7.8CVSS
7.8
EPSS
0.1%
Published
Jul 19, 2026
CISA due date
—
Cloudanix analysis
A flaw in some Linux virtualization hosts can let a local user or process crash the host, and possibly do more serious damage, by abusing an AMD secure-virtualization feature.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Buffer Overflow
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Medium
What it actually does
This is a Linux kernel memory corruption flaw in the AMD KVM SVM/SEV debug encryption path. The vulnerable code in sev_dbg_crypt() bounds each transfer by the source page offset but fails to also bound it by the destination page offset. When the destination offset is larger than the source offset, the ENCRYPT path can cause the Platform Security Processor operation and a subsequent memory copy to write past a single 4096-byte temporary page buffer by up to 15 bytes. The immediate impact is kernel memory corruption, visible in testing as KASAN-reported slab/page use-after-free or out-of-bounds writes in kvm_amd. Depending on kernel configuration, allocator state, and attacker control of adjacent memory, this could result in a host kernel crash and may have privilege-escalation potential for a local attacker with access to the relevant KVM/SEV ioctls.
Why it matters to the business
Systems running affected Linux kernels with AMD KVM SEV functionality exposed to local users or virtualization management workloads may be at risk of host instability or compromise from a user or process that can exercise SEV debug encryption operations. The most likely operational consequence is denial of service through a kernel crash or tainted kernel state on virtualization hosts. Because this affects the host kernel boundary, exploitation on shared virtualization infrastructure could have a higher business impact than an ordinary guest crash. Current public exploitation signals are low: EPSS is very low, the issue is not listed in CISA KEV, it is not marked as used in ransomware campaigns, and no exploit maturity is reported.
How an attack unfolds
An attacker first needs local ability to interact with KVM on an AMD system where the vulnerable kvm_amd SEV code path is available. They create or access a KVM VM context that can issue SEV memory encryption debug operations, then submit crafted parameters to the SEV debug encryption ioctl path so that the source page offset and destination page offset differ in a way that leaves the destination near the end of a page. Specifically, a case such as source offset 0, destination offset 1, and length close to PAGE_SIZE causes the code to calculate a transfer length that fits the source page but not the destination temporary page. The SEV firmware/PSP operation and subsequent copy then write beyond the end of the allocated 4096-byte buffer. In a reliable exploit, the attacker would attempt to shape kernel heap/page allocator state so the small overflow corrupts security-relevant adjacent metadata or objects; in a simpler attack, the malformed operation may crash the host kernel.
How to fix it
Apply the vendor kernel update that includes the fix to bound the transfer length by both the source page remainder and the destination page remainder in sev_dbg_crypt(). Because no exact fixed package versions were provided, use the fixed kernel releases from the relevant Linux distribution or upstream stable kernel stream once available. Prioritize virtualization hosts using AMD EPYC processors with KVM SVM/SEV enabled, especially hosts where untrusted users or automation can access /dev/kvm. If immediate patching is not possible, restrict access to /dev/kvm to trusted administrators and trusted virtualization services only, disable or avoid SEV debug functionality where operationally feasible, unload or disable kvm_amd on systems that do not require AMD KVM virtualization, and limit local shell access on affected hosts.
How to confirm the fix worked
Confirm the running kernel package includes the vendor fix for CVE-2026-63794 or the corresponding upstream Linux commit that updates sev_dbg_crypt() to also cap length by PAGE_SIZE - d_off. Validate that the running kernel has been rebooted after patching, because kernel package installation alone does not remove exposure from the active kernel. On affected AMD virtualization hosts, verify whether kvm_amd is loaded and whether SEV is enabled. Review permissions on /dev/kvm and confirm only trusted service accounts or administrators can access it. If a test environment is available, run a non-production regression test for SEV debug encrypt operations and confirm that malformed page-offset combinations no longer produce KASAN, UBSAN, WARN, BUG, oops, or kernel taint messages.
Typical attack path
- Gain local code execution on a Linux host or in a management context that has access to /dev/kvm and AMD SEV-related KVM ioctls.
- Confirm the host uses an affected Linux kernel with the kvm_amd module and SEV/SVM support enabled.
- Create or access a KVM VM object that can reach the SEV memory encryption ioctl handler.
- Invoke the SEV debug encrypt operation with crafted source offset, destination offset, and length values that cross the destination page boundary.
- Trigger the out-of-bounds write in sev_dbg_crypt() via the ENCRYPT path.
- Use the resulting memory corruption to crash the kernel or attempt further exploitation for elevated privileges.
How to detect it
Look for evidence of prior triggering in kernel logs, system journals, crash dumps, and hypervisor host telemetry. Relevant sources include dmesg, journalctl -k, /var/log/kern.log, /var/log/messages, kdump/vmcore records, hypervisor management logs, auditd logs for /dev/kvm access, and EDR telemetry showing processes opening /dev/kvm or repeatedly issuing KVM ioctls. The most direct artifacts are kernel warnings, KASAN reports, oopses, BUG reports, panics, or kernel taint messages with stack traces containing sev_dbg_crypt(), sev_mem_enc_ioctl(), kvm_vm_ioctl(), kvm_amd, or SEV debug encryption functions. Because exploitation is local and the overflow is small, absence of a crash does not fully rule out exploitation; however, practical attempts are likely to leave kernel instability, KASAN output on instrumented kernels, abnormal host reboots, or crash dumps involving kvm_amd. No named threat actors or ransomware campaigns are currently associated with this issue based on the provided data.
- KASAN: slab-use-after-free in sev_dbg_crypt
- KASAN: slab-out-of-bounds in sev_dbg_crypt
- BUG: KASAN
- sev_dbg_crypt+
- __sev_dbg_encrypt_user
- __sev_dbg_decrypt
- sev_mem_enc_ioctl
- kvm_vm_ioctl
- kvm_amd
- KVM_SEV_DBG_ENCRYPT
- Disabling lock debugging due to kernel taint
- /dev/kvm
What your security team should do
- Inventory Linux virtualization hosts that use AMD KVM/SVM/SEV and identify those running unpatched kernels.
- Patch and reboot affected virtualization hosts during the next urgent maintenance window, prioritizing multi-tenant, shared, or externally managed virtualization infrastructure.
- Restrict /dev/kvm access to trusted users and virtualization services; remove untrusted users from kvm-related groups.
- Search kernel logs and crash artifacts for KASAN, BUG, oops, or panic events involving sev_dbg_crypt, sev_mem_enc_ioctl, or kvm_amd.
- Monitor for unusual local processes opening /dev/kvm or issuing KVM ioctls on systems where only known hypervisor services should do so.
- If suspicious crashes are observed, preserve vmcore, dmesg/journal logs, loaded module versions, and process execution history for forensic review.
- Track distribution advisories for exact fixed kernel versions and ensure kernel live-patching, if used, explicitly covers this flaw.
The record
In the Linux kernel, the following vulnerability has been resolved: KVM: SVM: Fix page overflow in sev_dbg_crypt() for ENCRYPT path In sev_dbg_crypt(), the per-iteration transfer length is bounded by the source page offset (PAGE_SIZE - s_off) but not by the destination page offset (PAGE_SIZE - d_off). When d_off > s_off, the encrypt path (__sev_dbg_encrypt_user) performs a read-modify-write using a single-page intermediate buffer (dst_tpage): 1. __sev_dbg_decrypt() expands the size to round_up(len + (d_off & 15), 16) before issuing the PSP command. If len + (d_off & 15) > PAGE_SIZE, the PSP writes beyond the end of the 4096-byte dst_tpage allocation. 2. The subsequent memcpy()/copy_from_user() into page_address(dst_tpage) + (d_off & 15) of 'len' bytes overflows by up to 15 bytes under the same condition. Trigger example: s_off = 0, d_off = 1, debug.len = PAGE_SIZE - the PSP is instructed to write round_up(4097, 16) = 4112 bytes to a 4096-byte buffer. Fix by also bounding len by (PAGE_SIZE - d_off), the same check that sev_send_update_data() already performs for its single-page guest region. ================================================================== BUG: KASAN: slab-use-after-free in sev_dbg_crypt+0x993/0xd10 [kvm_amd] Write of size 4095 at addr ff110062293bb009 by task sev_dbg_test/228214 CPU: 96 UID: 0 PID: 228214 Comm: sev_dbg_test Tainted: G U W 7.0.0-smp--5ce9b0c48211-dbg #156 PREEMPTLAZY Tainted: [U]=USER, [W]=WARN Hardware name: Google Astoria/astoria, BIOS 0.20250817.1-0 08/25/2025 Call Trace: <TASK> dump_stack_lvl+0x54/0x70 print_report+0xbc/0x260 kasan_report+0xa2/0xd0 kasan_check_range+0x25f/0x2c0 __asan_memcpy+0x40/0x70 sev_dbg_crypt+0x993/0xd10 [kvm_amd] sev_mem_enc_ioctl+0x33c/0x450 [kvm_amd] kvm_vm_ioctl+0x65d/0x6d0 [kvm] __se_sys_ioctl+0xb2/0x100 do_syscall_64+0xe8/0x870 entry_SYSCALL_64_after_hwframe+0x4b/0x53 </TASK> The buggy address belongs to the physical page: page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x7fe72b6a0 pfn:0x62293bb memcg:ff11000112827d82 flags: 0x1400000000000000(node=1|zone=1) raw: 1400000000000000 0000000000000000 dead000000000122 0000000000000000 raw: 00000007fe72b6a0 0000000000000000 00000001ffffffff ff11000112827d82 page dumped because: kasan: bad access detected Memory state around the buggy address: ff110062293bbf00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff110062293bbf80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 >ff110062293bc000: fa fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc ^ ff110062293bc080: fa fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc ff110062293bc100: fa fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc ================================================================== Disabling lock debugging due to kernel taint [sean: add sample KASAN splat, Fixes, and stable@]
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-78402 Stack-based buffer overflow and out-of-bounds write vulnerability in Thales Sentinel Keys… CWE-787
- CVE-2026-119777 A flaw was found in GStreamer's gst-plugins-bad H.266/VVC parser. CWE-787
- CVE-2026-104065 Scribus before 1.6.7 contains an out-of-bounds write vulnerability in the importdrw… CWE-787
- CVE-2026-104067 Scribus before 1.6.7 contains an out-of-bounds memory access vulnerability in the… CWE-787
- CVE-2026-104066 Scribus before 1.6.7 contains a heap buffer overflow vulnerability in the Mac PICT image… CWE-787
- CVE-2026-104061 Scribus before 1.6.7 contains a heap out-of-bounds write vulnerability in the… CWE-787
- CVE-2026-104062 Scribus before 1.6.7 contains a heap buffer overflow vulnerability in the PICT image… CWE-787
- CVE-2026-61627 libass is a portable subtitle renderer for the `ASS`/SSA (Advanced Substation… CWE-787