In the Linux kernel, the following vulnerability has been resolved:
KVM: arm64: nv: Inject SEA if guest VNCR isn't normal memory
When constructing an L1 VNCR mapping, KVM unconditionally uses cacheable
memory attributes, even if the underlying PFN isn't memory. This gets
particularly hairy if the endpoint doesn't support cacheable memory
attributes, potentially throwing an SError on writeback...
While KVM does permit cacheable memory attributes on certain PFNMAP
VMAs, kvm_translate_vncr() isn't currently grabbing the VMA. So do the
simpler thing for now and just reject everything that isn't memory.
CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CVSS Score: 9.3
AV:L - The bug is reached only when an arm64 nested-KVM L1 hypervisor triggers VNCR_EL2 data aborts (ESR_ELx_EC_DABT_CUR with ESR_ELx_VNCR) during KVM_RUN, handled via kvm_handle_vncr_abort(); no network, adjacent-radio, or physical-device path reaches this code.
AC:L - An attacker controlling an L1 nested-hypervisor VM can set VNCR_EL2 and guest EL2 page tables to point VNCR at non-RAM guest physical addresses (e.g. VFIO/MMIO passthrough) and reliably trigger VNCR translation faults; nested virt on arm64 cloud hosts is an attacker-selectable deployment, not an uncontrollable condition.
PR:N - Exploitation requires no host root or init-namespace capabilities beyond running hypervisor code in a tenant KVM guest on an arm64 host with nested virtualization enabled; the attacker operates entirely from within their assigned VM, consistent with other arm64 KVM nested-virt CVE scoring.
UI:N - No victim user or administrator action is required beyond the attacker operating their own nested-virtualization workload; VNCR faults, page-table configuration, and fixmap establishment are fully attacker-driven from within the guest.
S:C - Guest-controlled VNCR_EL2 mappings cause host KVM to create per-CPU EL2 fixmap aliases with cacheable kernel attributes to attacker-chosen non-RAM physical pages, crossing the guest-to-hypervisor security boundary and impacting host kernel integrity and availability beyond the guest's intended authority.
C:H - Before the fix, kvm_map_l1_vncr() mapped non-memory PFNs via __set_fixmap() with PAGE_KERNEL/PAGE_KERNEL_RO, letting the host hypervisor read attacker-selected physical addresses (device/MMIO or other non-RAM PFNs) through kernel virtual addresses during VNCR register emulation, providing an information-disclosure primitive across the isolation boundary.
I:H - The same writable cacheable fixmap mapping gives the host kernel write access to attacker-chosen non-RAM physical pages; combined with incorrect cacheable attributes on endpoints that reject them, this can corrupt device/MMIO state and trigger uncontained host SErrors, constituting arbitrary physical write impact beyond guest scope.
A:H - Mapping non-memory PFNs with cacheable attributes can provoke Synchronous External Abort/SError on cache maintenance or writeback; on arm64 these commonly escalate to arm64_serror_panic()/nmi_panic(), crashing the host and denying service to all co-resident VMs and workloads.
| Attack Vector |
Local |
Scope |
Changed |
| Attack Complexity |
Low |
Confidentiality Impact |
High |
| Privileges Required |
None |
Integrity Impact |
High |
| User Interaction |
None |
Availability Impact |
High |
AV:L - The bug is reached only when an arm64 nested-KVM L1 hypervisor triggers VNCR_EL2 data aborts (ESR_ELx_EC_DABT_CUR with ESR_ELx_VNCR) during KVM_RUN, handled via kvm_handle_vncr_abort(); no network, adjacent-radio, or physical-device path reaches this code.
AC:L - An attacker controlling an L1 nested-hypervisor VM can set VNCR_EL2 and guest EL2 page tables to point VNCR at non-RAM guest physical addresses (e.g. VFIO/MMIO passthrough) and reliably trigger VNCR translation faults; nested virt on arm64 cloud hosts is an attacker-selectable deployment, not an uncontrollable condition.
PR:N - Exploitation requires no host root or init-namespace capabilities beyond running hypervisor code in a tenant KVM guest on an arm64 host with nested virtualization enabled; the attacker operates entirely from within their assigned VM, consistent with other arm64 KVM nested-virt CVE scoring.
UI:N - No victim user or administrator action is required beyond the attacker operating their own nested-virtualization workload; VNCR faults, page-table configuration, and fixmap establishment are fully attacker-driven from within the guest.
S:C - Guest-controlled VNCR_EL2 mappings cause host KVM to create per-CPU EL2 fixmap aliases with cacheable kernel attributes to attacker-chosen non-RAM physical pages, crossing the guest-to-hypervisor security boundary and impacting host kernel integrity and availability beyond the guest's intended authority.
C:H - Before the fix, kvm_map_l1_vncr() mapped non-memory PFNs via __set_fixmap() with PAGE_KERNEL/PAGE_KERNEL_RO, letting the host hypervisor read attacker-selected physical addresses (device/MMIO or other non-RAM PFNs) through kernel virtual addresses during VNCR register emulation, providing an information-disclosure primitive across the isolation boundary.
I:H - The same writable cacheable fixmap mapping gives the host kernel write access to attacker-chosen non-RAM physical pages; combined with incorrect cacheable attributes on endpoints that reject them, this can corrupt device/MMIO state and trigger uncontained host SErrors, constituting arbitrary physical write impact beyond guest scope.
A:H - Mapping non-memory PFNs with cacheable attributes can provoke Synchronous External Abort/SError on cache maintenance or writeback; on arm64 these commonly escalate to arm64_serror_panic()/nmi_panic(), crashing the host and denying service to all co-resident VMs and workloads.
CVSS 3.1