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()]
Published: 2026-07-19
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

In the Linux kernel's ARM64 KVM implementation, the ZCR_EL2 vector‑length register can be written by a guest hypervisor using the ZCR_EL1 interface without proper bounds checking. When the host restores a level‑2 guest's SVE context, the raw value written by the guest is copied directly into the hardware register. Consequently, the guest can access vector lengths that exceed the host’s configured limits, violating the intended protection of the vector‑length field. This flaw effectively allows a privileged guest hypervisor to alter the state of the host’s vector‑length configuration, potentially granting it higher privileges than intended. The weakness is an example of improper privilege management (CWE‑266).

Affected Systems

All ARM64 Linux kernels that include KVM with Virtualisation Host Extensions (VHE) and have not incorporated the patch commits 742a9b5c/8372633 are affected. This includes generic Linux kernel releases from any vendor that ship a vulnerable kernel image; no vendor‑specific products are listed beyond the generic Linux kernel for ARM64.

Risk and Exploitability

The CVSS score of 8.8 indicates a high severity vulnerability, but the EPSS score of less than 1% points to a low current exploitation probability. The vulnerability is not listed in CISA’s KEV, so no widespread attacks are known. The likely attack vector is from within a virtualised environment where a guest hypervisor with VHE capabilities writes to ZCR_EL1 to manipulate the host’s vector‑length register. While exploitation is constrained to environments that run such a guest, the high severity and insufficient mitigation make the flaw actionable and warrant prompt countermeasures.

Generated by OpenCVE AI on August 4, 2026 at 18:14 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the host kernel to a release that incorporates the ZCR_EL2 VL capping patch (commits 742a9b5c and 8372633).
  • Reboot the host after the kernel upgrade to activate the protection.
  • If the kernel cannot be updated immediately, disable the VHE feature or otherwise restrict guest writes to ZCR_EL1 to block the exploitation path while a patch is pending.

Generated by OpenCVE AI on August 4, 2026 at 18:14 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Ubuntu USN Ubuntu USN USN-8593-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-8603-1 Linux kernel (Azure) vulnerabilities
Ubuntu USN Ubuntu USN USN-8618-1 Linux kernel vulnerabilities
History

Sun, 26 Jul 2026 08:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-284
CWE-704

Wed, 22 Jul 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-266
References
Metrics threat_severity

None

threat_severity

Moderate


Tue, 21 Jul 2026 23:30:00 +0000

Type Values Removed Values Added
Weaknesses CWE-284
CWE-704

Mon, 20 Jul 2026 14:45:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H'}


Sun, 19 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
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()]
Title KVM: arm64: Correctly cap ZCR_EL2 provided by a guest hypervisor
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-08-05T12:37:28.804Z

Reserved: 2026-07-19T07:54:57.022Z

Link: CVE-2026-63941

cve-icon Vulnrichment

No data.

cve-icon NVD

No data.

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-07-19T00:00:00Z

Links: CVE-2026-63941 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-08-04T18:15:03Z

Weaknesses
  • CWE-266

    Incorrect Privilege Assignment