ITScape
ITScape is a race-induced use-after-free vulnerability in the Linux kernel's KVM ARM64 virtual Generic Interrupt Controller Interrupt Translation Service (vGIC-ITS). The vgic_its_invalidate_cache() function iterates over a per-ITS translation cache and calls vgic_put_irq() on the iterated pointer rather than the entry returned by xa_erase(). Cache invalidations initiated by ITS command handlers, GITS_CTLR writes, and redistributor GICR_CTLR EnableLPIs clearing are not mutually exclusive. Concurrent callers can therefore release the same cache-held reference multiple times, freeing a vgic_irq object while an Interrupt Translation Entry still references it. The resulting dangling pointer can cause host memory corruption and denial of service, or be exploited for host-kernel code execution and guest-to-host escape.
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 crash the host kernel and disrupt hosted virtual machines. A public proof of concept demonstrates an exploitation chain involving kernel-pointer disclosure, reclamation of freed objects, arbitrary kernel writes, and host command execution as root. Full exploitation compromises the virtualization boundary and the host's confidentiality, integrity, and availability. Public proof-of-concept availability does not establish malicious exploitation in the wild.
If you can’t patch tonight, do this now.
No validated vulnerability-specific workaround is established. Until patched, avoid running untrusted virtual machines on affected ARM64 KVM hosts and restrict access to KVM virtualization interfaces to trusted users and services. Where operationally feasible, avoid exposing the affected virtual ITS functionality. These measures reduce exposure but do not correct the reference-counting flaw.
Patch, then assume compromise.
Install a vendor-supported kernel update containing the KVM ARM64 vgic-its fix and reboot into the updated kernel. The correction passes only the entry returned by the atomic xa_erase() operation to vgic_put_irq(), ensuring that each cache-held reference is released exactly once. Available fixes include Debian DSA-6355-1, with trixie kernel package 6.12.94-1; RHEL 9.6 EUS kernel 5.14.0-570.127.1.el9_6; and RHEL 10.0 EUS kernel 6.12.0-55.88.1.el10_0. OpenShift updates include 4.19.40, 4.20.30, 4.21.25, and 4.22.6. Verify fix inclusion for the specific distribution and release channel rather than comparing version numbers across distributions.
1 exploit validated by Mallory's analysis. Hidden: 3 rejected by Mallory's analysis as not a working exploit.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
69 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.