{"id":14872,"date":"2026-09-04T19:02:16","date_gmt":"2026-09-04T11:02:16","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-63794"},"modified":"2026-09-04T19:02:16","modified_gmt":"2026-09-04T11:02:16","slug":"cve-2026-63794","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-63794","title":{"rendered":"CVE-2026-63794 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: SVM: Fix page ov"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: SVM: Fix page overflow in sev_dbg_crypt() for ENCRYPT path<\/p>\n<p>In sev_dbg_crypt(), the per-iteration transfer length is bounded by<br \/>\nthe source page offset (PAGE_SIZE &#8211; s_off) but not by the destination<br \/>\npage offset (PAGE_SIZE &#8211; d_off).  When d_off &gt; s_off, the encrypt<br \/>\npath (__sev_dbg_encrypt_user) performs a read-modify-write using a<br \/>\nsingle-page intermediate buffer (dst_tpage):<\/p>\n<p>  1. __sev_dbg_decrypt() expands the size to round_up(len + (d_off &amp; 15), 16)<br \/>\n     before issuing the PSP command.  If len + (d_off &amp; 15) &gt; PAGE_SIZE,<br \/>\n     the PSP writes beyond the end of the 4096-byte dst_tpage allocation.<\/p>\n<p>  2. The subsequent memcpy()\/copy_from_user() into<br \/>\n     page_address(dst_tpage) + (d_off &amp; 15) of &#8216;len&#8217; bytes overflows<br \/>\n     by up to 15 bytes under the same condition.<\/p>\n<p>Trigger example: s_off = 0, d_off = 1, debug.len = PAGE_SIZE &#8211;<br \/>\nthe PSP is instructed to write round_up(4097, 16) = 4112 bytes to<br \/>\na 4096-byte buffer.<\/p>\n<p>Fix by also bounding len by (PAGE_SIZE &#8211; d_off), the same check that<br \/>\nsev_send_update_data() already performs for its single-page guest<br \/>\nregion.<\/p>\n<p> ==================================================================<br \/>\n BUG: KASAN: slab-use-after-free in sev_dbg_crypt+0x993\/0xd10 [kvm_amd]<br \/>\n Write of size 4095 at addr ff110062293bb009 by task sev_dbg_test\/228214<\/p>\n<p> CPU: 96 UID: 0 PID: 228214 Comm: sev_dbg_test Tainted: G     U  W           7.0.0-smp&#8211;5ce9b0c48211-dbg #156 PREEMPTLAZY<br \/>\n Tainted: [U]=USER, [W]=WARN<br \/>\n Hardware name: Google Astoria\/astoria, BIOS 0.20250817.1-0 08\/25\/2025<br \/>\n Call Trace:<\/p>\n<p>  dump_stack_lvl+0x54\/0x70<br \/>\n  print_report+0xbc\/0x260<br \/>\n  kasan_report+0xa2\/0xd0<br \/>\n  kasan_check_range+0x25f\/0x2c0<br \/>\n  __asan_memcpy+0x40\/0x70<br \/>\n  sev_dbg_crypt+0x993\/0xd10 [kvm_amd]<br \/>\n  sev_mem_enc_ioctl+0x33c\/0x450 [kvm_amd]<br \/>\n  kvm_vm_ioctl+0x65d\/0x6d0 [kvm]<br \/>\n  __se_sys_ioctl+0xb2\/0x100<br \/>\n  do_syscall_64+0xe8\/0x870<br \/>\n  entry_SYSCALL_64_after_hwframe+0x4b\/0x53<\/p>\n<p> The buggy address belongs to the physical page:<br \/>\n page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x7fe72b6a0 pfn:0x62293bb<br \/>\n memcg:ff11000112827d82<br \/>\n flags: 0x1400000000000000(node=1|zone=1)<br \/>\n raw: 1400000000000000 0000000000000000 dead000000000122 0000000000000000<br \/>\n raw: 00000007fe72b6a0 0000000000000000 00000001ffffffff ff11000112827d82<br \/>\n page dumped because: kasan: bad access detected<\/p>\n<p> Memory state around the buggy address:<br \/>\n  ff110062293bbf00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br \/>\n  ff110062293bbf80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br \/>\n &gt;ff110062293bc000: fa fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc<br \/>\n                    ^<br \/>\n  ff110062293bc080: fa fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc<br \/>\n  ff110062293bc100: fa fb fb fb fb fb fb fb fc fc fc fc fc fc fc fc<br \/>\n ==================================================================<br \/>\n Disabling lock debugging due to kernel taint<\/p>\n<p>[sean: add sample KASAN splat, Fixes, and stable@]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: SVM: Fix page overflow in sev_dbg_crypt() for ENCRYPT path<\/p>\n<p>In sev_dbg_crypt(), the per-iteration transfer length is bounded b<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-14872","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/14872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}