Zapscape : une faille dans KVM peut permettre une évasion depuis des VM imbriquées
Zapscape (CVE-2026-64561) est une faille dans KVM/x86 Shadow MMU permettant une évasion depuis des VM imbriquées via un use-after-free. Découvrez les systèmes exposés et les correctifs.
Image d’illustration générée par IA
Le défaut affecte KVM/x86 Shadow MMU
La vulnérabilité CVE-2026-64561, baptisée Zapscape, concerne le composant KVM/x86 Shadow MMU du noyau Linux. Le problème affecte la gestion des tables de pages shadow utilisées pour traduire la mémoire des systèmes invités imbriqués.
Un attaquant disposant de privilèges kernel dans une machine virtuelle L1, généralement équivalents à ceux de root dans l’invité, peut exploiter cette faille pour s’extraire de l’isolation KVM et exécuter du code sur l’hôte Linux avec des privilèges kernel ou root.
La divulgation publique a eu lieu le 6 août 2026, par le chercheur Hyunwoo Kim, accompagnée d’un proof of concept. Aucun élément ne fait état d’une exploitation active.
Un contrôle tardif peut entraîner un use-after-free
Le bug provient de l’ordre dans lequel KVM vérifie l’état stale de la racine lors du traitement d’un page fault généré par l’invité.
Dans certaines conditions, KVM peut récupérer des pages MMU et invalider la racine encore utilisée par le chemin de traitement de l’erreur. Le code ne vérifie pas de nouveau cet état et peut créer des pages shadow enfants sous une racine qui n’est plus valide.
Les pages héritent de l’état invalide du parent et restent parmi les pages MMU actives. Les opérations suivantes peuvent alors dupliquer un lien dans deux listes, libérer une page tout en laissant des références obsolètes et provoquer une écriture après libération : une condition de type use-after-free, classée par Red Hat comme CWE-825 — expired pointer dereference.
Le PoC démontre cette primitive en créant sur l’hôte un fichier appartenant à root nommé /Zapscape. Il ne s’agit toutefois pas d’un outil immédiatement exploitable contre les environnements cloud : il nécessite un module kernel dans l’invité L1 ainsi que des adaptations de la configuration du noyau hôte et du backend mémoire.
Systèmes exposés et versions corrigées
Le risque concerne principalement les hôtes qui exposent la virtualisation imbriquée à des invités non fiables. La NVD indique que les versions Linux à partir de la 5.9 sont affectées, jusqu’aux versions corrigées suivantes :
- 6.6.148
- 6.12.101
- 6.18.42
- 7.1.6
- 7.2-rc5
Le problème se situe dans KVM/x86, et non dans QEMU. QEMU peut être utilisé pour les tests, mais la vulnérabilité réside dans KVM intégré au noyau et peut être déclenchée indépendamment de l’émulation QEMU.
Sur les systèmes Intel, les deux longueurs de parcours EPT (4 et 5) doivent être exposées à l’invité L1. Les systèmes AMD ne nécessitent pas de condition équivalente. Le PoC cible AMD nested SVM/NPT sous Linux 7.1.3 ; pour des tests contrôlés, Kim recommande QEMU TCG.
Pour les paquets Debian, au 6 août 2026, les noyaux de bullseye, bookworm et trixie, y compris ceux des dépôts de sécurité, ainsi que forky, étaient vulnérables. sid était corrigé dans la version 7.1.6-1. Red Hat peut distribuer des correctifs rétroportés sans modifier la chaîne de version upstream ; le numéro de version seul ne suffit donc pas.
Correctif et mesures d’atténuation
Le correctif upstream correspond au commit 2abd5287f083. La modification déplace le contrôle de la racine stale après make_mmu_pages_available(). Si la récupération invalide la racine courante, KVM relance le traitement du fault avec RET_PF_RETRY, au lieu de continuer à utiliser la structure invalide.
Les administrateurs doivent :
- mettre à jour les hôtes KVM vers une version corrigée ;
- installer le paquet du fournisseur contenant le backport ;
- vérifier les avis Linux, Red Hat et Debian via leurs trackers respectifs ;
- limiter ou désactiver la virtualisation imbriquée pour les invités non fiables, lorsque cela est possible.
La gravité préliminaire indiquée par Red Hat est de CVSS 7.0. L’impact potentiel est élevé dans les environnements cloud et multi-tenant, où un invité L1 compromis pourrait atteindre le noyau de l’hôte.
Le signalement a été envoyé à [email protected] le 11 juillet 2026 ; le correctif a été publié et intégré le 21 juillet 2026. Le problème a été transmis à la liste linux-distros le 1er août 2026, a reçu l’identifiant CVE-2026-64561 le 4 août 2026 et a été divulgué le 6 août 2026.
Sources
Cet article est une réécriture originale fondée sur les sources ci-dessous.
CVE traitées dans cet article
- CVE-2026-46316Critique9.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-53359Élevée8.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-64561Élevée8.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




