Guest-to-host escape in Linux KVM/arm64 VNCR TLB invalidation
CVE-2026-89775 is a vulnerability in Linux kernel KVM/arm64 nested virtualization caused by incorrect handling of negative stage-1 translation walk levels during VNCR pseudo-TLB invalidation. When the stage-1 MMU is disabled, its walk level is represented by -127 (S1_MMU_DISABLED). The pgshift_level_to_ttl() function converts this negative value to an unsigned 8-bit value and considers only its lowest two bits, resulting in a calculated invalidation size of zero. The invalidation logic treats this as an empty range and skips the required invalidation. Stale mappings can consequently retain writable access to freed host-memory pages, potentially enabling a malicious guest to escape to the host.
What it means and what to do now: patch path, interim mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
Successful exploitation can breach guest-to-host isolation by exposing freed host-memory pages through stale writable mappings. An attacking guest can obtain 64-bit reads and writes to these pages without a hardware trap or VM exit, potentially enabling host-kernel code execution and compromise of host confidentiality, integrity, and availability. An unprivileged local user who can create KVM guests may also escalate to host root privileges when the required nested-virtualization configuration is enabled.
If you can’t patch tonight, do this now.
Where operationally feasible, disable ARM64 nested virtualization until the kernel is patched; hosts without nested virtualization enabled are outside the reported attack path. Restrict tenant access to nested-virtualization capabilities and restrict KVM device access to trusted users to reduce local exposure. These measures do not replace patching, and Red Hat has not identified a workaround meeting its mitigation criteria.
Patch, then assume compromise.
Install a vendor-supported kernel containing the fix and reboot into the updated kernel. The patch makes pgshift_level_to_ttl() handle negative walk levels and makes ttl_to_size() return SZ_1G when no valid TTL is present. Identified upstream fixed releases include Linux 6.18.51, 7.2.5, and 7.3-rc1. For Red Hat Enterprise Linux 10, apply RHSA-2026:72624; other distributions should use their corresponding security updates. Affected Google COS kernel packages should be updated to version 19999.44.106 or later.
No public exploits tracked yet. Mallory keeps watching.
36 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.