{"id":14971,"date":"2026-09-04T19:02:20","date_gmt":"2026-09-04T11:02:20","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-63941"},"modified":"2026-09-04T19:02:20","modified_gmt":"2026-09-04T11:02:20","slug":"cve-2026-63941","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-63941","title":{"rendered":"CVE-2026-63941 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: arm64: Correctly"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: arm64: Correctly cap ZCR_EL2 provided by a guest hypervisor<\/p>\n<p>ZCR_EL2 can be updated by a VHE guest hypervisor either using ZCR_EL2<br \/>\n(which traps) or ZCR_EL1 (which does not trap). KVM handles both in<br \/>\ndifferent way:<\/p>\n<p>&#8211; on ZCR_EL2 trap, ZCR_EL2.LEN is immediately capped at the VM&#8217;s own<br \/>\n  VL limit. This has the potential to break existing SW that relies<br \/>\n  on the full LEN field to be stateful.<\/p>\n<p>&#8211; on ZCR_EL1 access, we do absolutely nothing.<\/p>\n<p>On restoring the SVE context for an L2 guest, we directly restore the<br \/>\nguest hypervisor&#8217;s view of ZCR_EL2 into the physical ZCR_EL2. If the<br \/>\nguest&#8217;s view of the register was updated using the ZCR_EL2 accessor,<br \/>\nthe value has already been sanitised (with the caveat mentioned above).<\/p>\n<p>But if the guest used ZCR_EL1, the raw value is written into the HW,<br \/>\nand the L2 guest can now access VLs that it shouldn&#8217;t.<\/p>\n<p>Fix all the above by moving the VL capping to the restore points,<br \/>\nensuring that:<\/p>\n<p>&#8211; the HW is always programmed with a capped value, irrespective of<br \/>\n  the accessor being used,<\/p>\n<p>&#8211; the ZCR_EL2.LEN field is always completely stateful, irrespective<br \/>\n  of the accessor being used.<\/p>\n<p>Additionally, move ZCR_EL2 to be a sanitised register, ensuring that<br \/>\nonly the LEN field is actually stateful. This requires some creative<br \/>\nconstruction of the RES0 mask, as the sysreg generation script does<br \/>\nnot yet generate RAZ\/WI fields.<\/p>\n<p>[maz: rewrote commit message, tidy up access_zcr_el2()]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>KVM: arm64: Correctly cap ZCR_EL2 provided by a guest hypervisor<\/p>\n<p>ZCR_EL2 can be updated by a VHE guest hypervisor either using ZCR<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-14971","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/14971","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=14971"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=14971"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=14971"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}