ITScape / Januscape / Zapscape
ITScape is a guest-to-host escape exploit (CVE-2026-46316) against KVM/arm64, discovered by Hyunwoo Kim (@v4bel), exploiting a race condition in the vGIC-ITS (Interrupt Translation Service) emulation inside the Linux kernel's in-kernel KVM code rather than QEMU userspace. A malicious guest with only EL1 (guest kernel) privilege can trigger the bug via GIC/ITS MMIO to gain host kernel (root) code execution, threatening isolation on multi-tenant arm64 public clouds; the repo includes a reproducible PoC built on the Linux kvm selftest framework and QEMU TCG for safe testing, plus patch/version range and disclosure timeline.
What it is
ITScape (CVE-2026-46316) is a KVM guest-to-host escape on arm64, found by Hyunwoo Kim (@v4bel). The repo publishes a PoC and operational guidance following an embargo coordinated through linux-distros@vs.openwall.org. The summary already states the vGIC-ITS race and the in-kernel-KVM location; what the page adds is the affected commit range, the reproduction path, and the precondition/chaining detail below.
Preconditions / Affected
- Only arm64 KVM hosts. The bug is in
arch/arm64/kvm/vgic/. Non-arm64 hosts are unaffected. - Affected range: commit
8201d1028caa(2024-04-25) through13031fb6b835(2026-06-05). - Guest privilege: driving GIC/ITS MMIO requires guest kernel (EL1) privilege. A cloud tenant with root on their own VM already meets this. Without guest root, it must be chained with an LPE such as Dirty Frag.
What to do
Confirm the fix commit 13031fb6b835 is applied to the host kernel — operators directly, tenants via their provider.
To reproduce safely, run under QEMU TCG (triggering is unrelated to QEMU). Download the v7.1-rc6 kernel source (the version just before the patch):
# ./build.sh <linux>/tools/testing/selftests/kvmBuild the kernel image with the bundled kconfig, place the PoC in an initramfs, then:
# ./qemu.sh <kernel-image> <initramfs>After boot, run the PoC; success creates /ITScape on the host owned by uid=0:
# ./poc
[+] /ITScape created by the host kernel (owner uid=0). verify: ls -la /ITScapeCaveats
- The released PoC is not a weaponized exploit. It reproduces the full chain on the kvm selftest harness by constructing state host-side. Weaponizing requires porting to a real guest-driven path and tuning addresses, gadget, offsets, and race timing to the target kernel/config. A working real-world exploit exists but is not released.
- Because this is a new vulnerability class, expect variants and follow-ups — but verify any follow-up is genuinely triggerable by guest action alone (no host-side setup) and actually exploitable before treating it as equivalent.
flowchart TD
A[Guest with EL1 privilege] --> B{Have guest root?}
B -->|Yes, e.g. own cloud VM| C[Drive GIC/ITS MMIO]
B -->|No| D[Chain LPE e.g. Dirty Frag] --> C
C --> E[Trap into in-kernel KVM]
E --> F[Double-put race in vGIC-ITS]
F --> G[Host kernel code exec / root]
P[Patch 13031fb6b835 on host] -. cuts .-> FOrganisations named here
- guest-to-host escape
- Hyunwoo Kim
- v4bel
- vGIC-ITS
CVEs named here
- CVE-2026-46316
Technologies named here
- KVM/arm64
- QEMU TCG
- kvm selftest
- Linux kernel
- Multi-tenant arm64 public clouds
- build.sh
- qemu.sh
- poc
- QEMU
- Linux
Techniques named here
- KVM guest-to-host escape via vGIC-ITS race condition
- Chaining with LPE
Related in Offensive Security