当漏洞真实存在但路径并非如此:ITscape(CVE-2026-46316)与最小运行时案例 漏洞概述 ITscape 是首个公开记录的在 KVM/arm64 上的 guest-to-host 逃逸漏洞。它利用了内核中 vGIC-ITS 模拟中的竞态条件,以从非特权 guest 内部实现 host 内核代码执行。 影响范围 平台:Jetson AGX Orin 运行内核 v7.1-rc6 受影响范围:8201d182ca4(2024-04-25)→ 13031f6b835(2026-06-05,修复) 修复方案 urunc 的安全设计:urunc 的 seccomp 过滤器阻止了 KVM_CREATE_DEVICE 用于 ITS 类型,在虚拟 GIC ITS 对象被创建之前。为了证明这是主动机制,我们故意剥离了该过滤器并确认 ITS 变得立即可达。漏洞随后直接发生。 其他 VMM 暴露 GIC ITS:QEMU(-M virt)、Cloud Hypervisor ≥v41.0.0、Dragonball(kata runtime-rs)、Firecracker ≥v1.13.0、Kata-QEMU 和 Kata-Firecracker ≥v1.13.0 无条件创建 ITS 设备。IIDR 读取确认 0x4d00043b 在每个案例中。 Firecracker ≤ v1.12.1 是唯一的架构例外:该代码库包含零 ITS 相关符号。从 v1.13.0 开始,PR #5364 无条件引入了 ITS,作为 PCIe 先决条件,没有 CHANGELOG 条目。 漏洞细节 ITscape 是内核中 KVM arm64 中断控制器模拟中的竞态条件,具体在 vgic_its_invalidate_cache() 与 vgic_its_process_commands() 结合时。在 arch/arm64/kvm/vgic.c 中,具有 EL1(内核)特权的 guest 通过普通 MMIO 写入驱动虚拟 GIC ITS。对同一 vgic_irq 的两个并发访问导致 refcount 产生 double-put,导致在 host 内核中的 kmalloc-96 对象上的 use-after-free。 利用代码 实际保护机制 ITS IIDR 作为金丝雀 guest_exploit.c 在映射 MMIO 后立即读取 ITS IIDR 寄存器。 urunc 默认阻止 ITS 故意移除 urunc 的 seccomp 过滤器(ITS 暴露) 结论 urunc 的 seccomp 过滤器是阻止攻击面的唯一运行时默认设置。该过滤器是操作性的,而非架构性的:从暴露中更改一个配置。Firecracker ≤ v1.12.1 是唯一在结构上缺乏该过滤器的 VMM。