Zapscape: una falla in KVM può consentire l’escape da VM annidate
Analisi della vulnerabilità Zapscape (CVE-2026-64561) in KVM che permette l'escape da macchine virtuali annidate. Dettagli e versioni corrette.
Immagine illustrativa generata con AI
Il difetto colpisce KVM/x86 Shadow MMU
La vulnerabilità CVE-2026-64561, denominata Zapscape, riguarda il componente KVM/x86 Shadow MMU del kernel Linux. Il problema interessa la gestione delle shadow page table usate per tradurre la memoria nei guest annidati.
Un attaccante che possiede privilegi kernel in una macchina virtuale L1, normalmente equivalenti a root nel guest, può sfruttare il difetto per uscire dall’isolamento KVM ed eseguire codice sull’host Linux con privilegi kernel o root.
La disclosure pubblica è avvenuta il 6 agosto 2026, a cura del ricercatore Hyunwoo Kim, insieme a un proof-of-concept. Non risultano evidenze di sfruttamento attivo.
Un controllo tardivo può portare a use-after-free
Il bug nasce dall’ordine con cui KVM verifica lo stato stale della root durante la gestione di un page fault generato dal guest.
In determinate condizioni, KVM può reclamare pagine MMU e invalidare la root ancora utilizzata dal percorso di gestione dell’errore. Il codice non verifica nuovamente quello stato e può creare pagine shadow figlie sotto una root ormai non valida.
Le pagine ereditano lo stato invalido del parent e restano tra le pagine MMU attive. Le operazioni successive possono quindi duplicare un collegamento in due liste, liberare una pagina lasciando riferimenti obsoleti e provocare una scrittura dopo la liberazione: una condizione use-after-free, classificata da Red Hat come CWE-825 — expired pointer dereference.
Il PoC dimostra la primitiva creando sull’host un file posseduto da root chiamato /Zapscape. Non è però uno strumento immediatamente utilizzabile contro ambienti cloud: richiede un modulo kernel nel guest L1 e adattamenti alla configurazione del kernel host e del backend di memoria.
Sistemi esposti e versioni corrette
Il rischio riguarda soprattutto gli host che espongono la nested virtualization a guest non affidabili. La NVD indica come interessate le versioni Linux dalla 5.9 in avanti, fino alle release corrette:
- 6.6.148
- 6.12.101
- 6.18.42
- 7.1.6
- 7.2-rc5
Il problema è presente in KVM/x86, non in QEMU. QEMU può essere utilizzato per i test, ma la vulnerabilità risiede nel KVM integrato nel kernel e può essere attivata indipendentemente dall’emulazione QEMU.
Su sistemi Intel devono essere esposte al guest L1 entrambe le lunghezze EPT page-walk, 4 e 5. Sui sistemi AMD non è richiesta una condizione equivalente. Il PoC prende di mira AMD nested SVM/NPT su Linux 7.1.3; per test controllati, Kim raccomanda QEMU TCG.
Per i pacchetti Debian, al 6 agosto 2026 risultavano vulnerabili i kernel di bullseye, bookworm, trixie, inclusi i repository security, e forky. sid risultava corretto alla versione 7.1.6-1. Red Hat può distribuire correzioni backportate senza modificare la stringa della versione upstream, quindi il numero di versione da solo non è sufficiente.
Patch e misure di contenimento
La correzione upstream è il commit 2abd5287f083. La modifica sposta il controllo della root stale dopo make_mmu_pages_available(). Se il reclaim invalida la root corrente, KVM riavvia la gestione del fault con RET_PF_RETRY, invece di continuare a usare la struttura non valida.
Gli amministratori dovrebbero:
- aggiornare gli host KVM a una release corretta;
- installare il pacchetto del vendor che contiene il backport;
- verificare Linux, Red Hat e Debian tramite i rispettivi tracker;
- limitare o disabilitare la nested virtualization per guest non affidabili, quando possibile.
La gravità preliminare indicata da Red Hat è CVSS 7.0. L’impatto potenziale è elevato negli ambienti cloud e multi-tenant, dove un guest L1 compromesso potrebbe raggiungere il kernel dell’host.
La segnalazione è stata inviata a [email protected] l’11 luglio 2026; la patch è stata pubblicata e integrata il 21 luglio 2026. Il problema è arrivato alla lista linux-distros il 1 agosto 2026, ha ricevuto l’identificativo CVE-2026-64561 il 4 agosto 2026 ed è stato divulgato il 6 agosto 2026.
Fonti
Questo articolo è una rielaborazione originale basata sulle fonti seguenti.
CVE trattate in questo articolo
- CVE-2026-46316Critica9.3In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry vgic_its_invalidate_cache() walks the per-ITS translation cache with xa_for_each() and drops the cache's reference on each entry with vgic_put_ir
- CVE-2026-53359Alta8.8In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Fix shadow paging use-after-free due to unexpected role Commit 0cb2af2ea66ad ("KVM: x86: Fix shadow paging use-after-free due to unexpected GFN") fixed a shadow paging mismatch between stored and computed GFNs; the bug c
- CVE-2026-64561Alta8.8In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Check for invalid/obsolete root *after* making MMU pages available Check for a "stale" page fault, i.e. for an invalid and/or obsolete root, after making MMU pages available for the shadow MMU. If reclaiming shadow page




