Mitigating Zapscape (CVE-2026-64561) on Rocky Linux 8, 9, 10, and LTS Variants
Introduction
Zapscape (CVE-2026-64561) is a use-after-free vulnerability in the Linux kernel's KVM shadow MMU emulation. The flaw is in the mmu_page_zap_pte() function, which lacks proper root_count guards during shadow page reclamation. An untrusted KVM guest can exploit this to corrupt host kernel shadow pages, breaking guest-host isolation and enabling a guest-to-host escape. On Intel hosts, exploitation requires both EPT page walk lengths 4 and 5 to be exposed to L1 (a nested virtualization configuration). On AMD hosts, no such constraint exists. Public proof-of-concept code is available.
Problem
Zapscape affects any Linux system running KVM with the vulnerable kernel code present. The risk is highest on hosts that run untrusted guest workloads or enable nested virtualization. Exploitation requires guest-side code execution but no special privileges within the guest.
Treat the following CIQ product variants as affected unless they are running a patched kernel listed in the Patched Kernels section:
- RLC Pro LTS 8.6 and 8.8 variants
- RLC Pro LTS 9.2, 9.4, and 9.6 variants
- RLC Pro FIPS 9.2 and 9.6 variants
- CIQ SIG/Cloud Next 10
- CIQ Linux Kernel LT 6.12
- CIQ Linux Kernel 6.18
The following are not affected:
- CIQ Bridge 7.9 and CentOS 7: the vulnerable code was not present in the 3.10 kernel
- Rocky Linux 8.10 (Community): the fix is included in the current release kernel (
4.18.0-553.148.1.el8_10) - Rocky Linux 9.8 (Community): the fix is included in the current release kernel (
5.14.0-687.31.1.el9_8)
Systems that do not use KVM (no kvm or kvm_intel/kvm_amd modules loaded) are not exposed to this vulnerability regardless of kernel version.
Status
- Patched kernels are available for RLC Pro LTS, FIPS, and SIG/Cloud Next variants. See the Patched Kernels table below.
- CIQ Linux Kernel (CLK) 6.12 and 6.18 patched builds are in progress and will be available shortly.
- Disabling nested virtualization reduces the attack surface on Intel hosts. See the Mitigation section.
- Rocky Linux 8 and 9 community editions are already protected in their current release kernels.
- CIQ Bridge 7.9 and CentOS 7 are not affected.
- Open a support case if you need help assessing exposure or tracking patched kernel availability for a specific CIQ variant.
Patched Kernels
| Variant | Patched Kernel Version | Repo | Released |
|---|---|---|---|
| RLC Pro LTS 8.6 | kernel-4.18.0-372.32.1.el8_6.86ciq_lts.17.1 |
rlc-8.6-lts.x86_64 | 2026-08-05 |
| RLC Pro LTS 9.2 | kernel-5.14.0-284.30.1.el9_2.92ciq_lts.14.2 |
rlc-9.2-lts.x86_64 | 2026-08-06 |
| RLC Pro LTS 9.6 | kernel-5.14.0-570.60.1+21.1.el9_6_ciq |
rlc-9.6-lts.x86_64 | 2026-08-05 |
| RLC Pro FIPS 9.2 | kernel-5.14.0-284.30.1.el9_2.ciqfips.0.21.1 |
fips-9.2-compliant-x86_64 | 2026-08-06 |
| RLC Pro FIPS 9.6 | kernel-5.14.0-570.60.1+21.1.el9_6_ciq |
fips-9.6-compliant-x86_64 | 2026-08-05 |
| CIQ SIG/Cloud Next 10 | kernel-6.12.0-211.43.1+2.1.el10_2_ciq |
ciq-scn-10.x86_64 | 2026-08-05 |
CIQ updates this table as tested kernels become available for each variant.
| Variant | Status |
|---|---|
| CIQ Linux Kernel LT 6.12 | Pending |
| CIQ Linux Kernel 6.18 | Pending |
Confirm what is running on a given system with:
uname -r
Installing the Update
RLC Pro LTS, FIPS, and SIG/Cloud Next
sudo dnf update kernel*
Reboot into the new kernel after the update completes. No additional repository configuration is needed; the update is available from the configured CIQ repository. If the update does not appear, run sudo dnf clean all && sudo dnf makecache to refresh repository metadata.
CIQ Linux Kernel (CLK) Variants
sudo dnf update kernel-clk*
Reboot into the new kernel. CLK patched kernels will be available once the build promotion completes.
Community Edition (RESF)
sudo dnf update kernel*
Reboot into the new kernel. Rocky Linux 8 and 9 community editions already include the fix in their current release kernels.
Mitigation
The vulnerability is in the KVM shadow page table code path (mmu_page_zap_pte()), which is exercised primarily through nested virtualization. On modern hardware, direct guest translations use EPT (Intel) or NPT (AMD), so the shadow MMU code path is largely dormant for non-nested workloads.
Disabling nested virtualization
If nested virtualization is not required, disabling it eliminates the primary attack surface. This is effective on Intel hosts, where the exploit requires nested EPT page walk configuration. On AMD hosts, the vulnerability can also be triggered without nested virtualization, so this mitigation provides reduced protection on AMD platforms.
For Intel hosts:
echo "options kvm_intel nested=0" | sudo tee /etc/modprobe.d/kvm-no-nested.conf
sudo modprobe -r kvm_intel && sudo modprobe kvm_intel
For AMD hosts:
echo "options kvm_amd nested=0" | sudo tee /etc/modprobe.d/kvm-no-nested.conf
sudo modprobe -r kvm_amd && sudo modprobe kvm_amd
Unloading the KVM module (modprobe -r) requires shutting down all running VMs first. Plan a maintenance window before applying this change on production hypervisors. For a reboot-based approach, create the modprobe config file and reboot during a scheduled maintenance window instead.
Verify nested virtualization is disabled:
cat /sys/module/kvm_intel/parameters/nested # Intel
cat /sys/module/kvm_amd/parameters/nested # AMD
Output should be N or 0.
If nested virtualization is required
If nested virtualization cannot be disabled, the only effective mitigation is updating to a patched kernel. In the interim, restrict KVM access to trusted users and audit which guests have nested virtualization enabled.
Verification
To verify whether a system is running a patched kernel:
uname -r
Compare the output against the Patched Kernels table above. If the running kernel version matches or is newer than the patched version listed for your variant, the fix is in place.
To check whether a system is running KVM and could be exposed:
lsmod | grep kvm
If no output is returned, KVM is not loaded and the system is not exposed regardless of kernel version.
To check whether nested virtualization is currently enabled:
cat /sys/module/kvm_intel/parameters/nested 2>/dev/null || \
cat /sys/module/kvm_amd/parameters/nested 2>/dev/null
Resolution
- Update the kernel:
sudo dnf update kernel*(orkernel-clk*for CLK variants) - Reboot into the new kernel
- Verify the running kernel with
uname -r - If nested virtualization was disabled as a temporary measure and is needed, re-enable it by removing
/etc/modprobe.d/kvm-no-nested.confand reloading the KVM module or rebooting
Notes
- On Intel hosts, the exploit requires both EPT page walk lengths 4 and 5 exposed to L1, which is a nested virtualization configuration. Hosts running only direct (non-nested) guests on Intel are at lower risk.
- On AMD hosts, the vulnerability can be triggered without nested virtualization, making the attack surface broader on AMD platforms.
- Systems not running KVM at all (bare-metal workloads, container-only hosts) are not affected regardless of kernel version.
- The proof-of-concept requires only unprivileged code execution within a guest VM. No special kernel modules or guest-side privileges are needed.