In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Correctly cap ZCR_EL2 provided by a guest hypervisor ZCR_EL2 can be… (CVE-2026-63941)
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Correctly cap ZCR_EL2 provided by a guest hypervisor ZCR_EL2 can be updated by a VHE guest hypervisor either using ZCR_EL2 (which traps) or ZCR_EL1 (which does not trap). KVM handles both in different way: - on ZCR_EL2 trap, ZCR_EL2.LEN is immediately capped at the VM's own VL limit. This has the potential to break existing SW that relies on the full LEN field to be stateful. - on ZCR_EL1 access, we do absolutely nothing. On restoring the SVE context for an L2 guest, we directly restore the guest hypervisor's view of ZCR_EL2 into the physical ZCR_EL2. If the guest's view of the register was updated using the ZCR_EL2 accessor, the value has already been sanitised (with the caveat mentioned above). But if the guest used ZCR_EL1, the raw value is written into the HW, and the L2 guest can now access VLs that it shouldn't. Fix all the above by moving the VL capping to the restore points, ensuring that: - the HW is always programmed with a capped value, irrespective of the accessor being used, - the ZCR_EL2.LEN field is always completely stateful, irrespective of the accessor being used. Additionally, move ZCR_EL2 to be a sanitised register, ensuring that only the LEN field is actually stateful. This requires some creative construction of the RES0 mask, as the sysreg generation script does not yet generate RAZ/WI fields. [maz: rewrote commit message, tidy up access_zcr_el2()]
AI Analysis
Technical Summary
The vulnerability in the Linux kernel KVM arm64 implementation involved incorrect capping of the ZCR_EL2 register's LEN field when updated by a guest hypervisor. Updates via ZCR_EL2 traps were capped immediately, potentially breaking software relying on the full LEN field statefulness, while updates via ZCR_EL1 were not trapped or capped. Upon restoring the SVE context for an L2 guest, the raw ZCR_EL2 value could be written directly to hardware, allowing the L2 guest to access vector lengths beyond its allowed limit. The fix moves the capping logic to restore points to ensure consistent capping regardless of the accessor and sanitizes ZCR_EL2 so only the LEN field is stateful.
Potential Impact
An L2 guest hypervisor could exploit this vulnerability to access vector lengths (VLs) that exceed its permitted limits, potentially leading to unauthorized access or manipulation of hardware vector registers. This could affect the isolation guarantees between nested guests in a virtualized environment on arm64 architectures using KVM.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vulnerability description indicates that a fix has been implemented in the Linux kernel source code. Users should monitor official Linux kernel releases and apply updates that include this fix once available.
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Correctly cap ZCR_EL2 provided by a guest hypervisor ZCR_EL2 can be… (CVE-2026-63941)
Description
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Correctly cap ZCR_EL2 provided by a guest hypervisor ZCR_EL2 can be updated by a VHE guest hypervisor either using ZCR_EL2 (which traps) or ZCR_EL1 (which does not trap). KVM handles both in different way: - on ZCR_EL2 trap, ZCR_EL2.LEN is immediately capped at the VM's own VL limit. This has the potential to break existing SW that relies on the full LEN field to be stateful. - on ZCR_EL1 access, we do absolutely nothing. On restoring the SVE context for an L2 guest, we directly restore the guest hypervisor's view of ZCR_EL2 into the physical ZCR_EL2. If the guest's view of the register was updated using the ZCR_EL2 accessor, the value has already been sanitised (with the caveat mentioned above). But if the guest used ZCR_EL1, the raw value is written into the HW, and the L2 guest can now access VLs that it shouldn't. Fix all the above by moving the VL capping to the restore points, ensuring that: - the HW is always programmed with a capped value, irrespective of the accessor being used, - the ZCR_EL2.LEN field is always completely stateful, irrespective of the accessor being used. Additionally, move ZCR_EL2 to be a sanitised register, ensuring that only the LEN field is actually stateful. This requires some creative construction of the RES0 mask, as the sysreg generation script does not yet generate RAZ/WI fields. [maz: rewrote commit message, tidy up access_zcr_el2()]
CVSS v3.1
Score 8.8high
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability in the Linux kernel KVM arm64 implementation involved incorrect capping of the ZCR_EL2 register's LEN field when updated by a guest hypervisor. Updates via ZCR_EL2 traps were capped immediately, potentially breaking software relying on the full LEN field statefulness, while updates via ZCR_EL1 were not trapped or capped. Upon restoring the SVE context for an L2 guest, the raw ZCR_EL2 value could be written directly to hardware, allowing the L2 guest to access vector lengths beyond its allowed limit. The fix moves the capping logic to restore points to ensure consistent capping regardless of the accessor and sanitizes ZCR_EL2 so only the LEN field is stateful.
Potential Impact
An L2 guest hypervisor could exploit this vulnerability to access vector lengths (VLs) that exceed its permitted limits, potentially leading to unauthorized access or manipulation of hardware vector registers. This could affect the isolation guarantees between nested guests in a virtualized environment on arm64 architectures using KVM.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. The vulnerability description indicates that a fix has been implemented in the Linux kernel source code. Users should monitor official Linux kernel releases and apply updates that include this fix once available.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-9mxh-6wp4-9v6p
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-63941"]
- Ecosystems
- []
- Database Specific Severity
- null
- Cvss Version
- 3.1
Threat ID: 6a5d27aa2a4a8d598912ebb7
Added to database: 07/19/2026, 19:38:18 UTC
Last enriched: 07/19/2026, 20:05:21 UTC
Last updated: 08/29/2026, 10:52:10 UTC
Views: 68
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.