ITScape ist eine Race-Condition im In-Kernel-Interrupt-Übersetzungsdienst (Interrupt Translation Service, ITS) des virtuellen Generischen Interrupt-Controllers von KVM (vGIC-ITS). Der vGIC-ITS kümmert sich um die Übersetzung von Logical Processor Interrupts (LPIs) für virtualisierte arm64-Gastsysteme. Wenn ein Eintrag im Übersetzungscache invalidiert werden muss, durchläuft der Kernel die Einträge und gibt ihre Referenzen frei. Der Fehler liegt darin, dass die Invalidierungsfunktion die Referenz für jeden vom Iterator zurückgegebenen Eintrag freigegeben hat – einschließlich der Einträge, die bereits durch eine gleichzeitige Operation aus dem Cache entfernt worden waren .
Diese doppelte Freigabe verursacht ein klassisches Use-after-Free (UAF): Zwei parallele Ausführungspfade können auf Speicher zugreifen, der bereits freigegeben wurde, was es einem Angreifer ermöglicht, den Heap-Speicher zu manipulieren und schließlich die Kontrolle über den Programmfluss auf der Host-Kernel-Ebene zu übernehmen .
Der Fehler sitzt direkt in der Funktion vgic_its_invalidate_cache(). Diese durchläuft den ITS-eigenen Übersetzungscache mit xa_for_each() und ruft vgic_put_irq() für den durchlaufenen Zeiger auf, anstatt für den Wert, der sicher von xa_erase() zurückgegeben wird. Da mehrere Kontexte unter verschiedenen Sperren in diese Funktion eintreten können, ist die Race-Condition vollständig vom Gastsystem aus erreichbar, indem man ITS-Befehle mit einem GITS_CTLR-Schreibzugriff und dem Löschen von EnableLPIs in einem Redistributor kombiniert .
Gast-zu-Host-Ausbrüche sind selten, gehören aber zur gefährlichsten Klasse von Hypervisor-Fehlern, da sie die Isolationsgrenze durchbrechen, auf der das gesamte Cloud-Computing basiert. Bisherige öffentliche KVM-Ausbrüche zielten auf x86-Systeme ab, meist über QEMU oder AMD-spezifischen Code . ITScape ist der erste funktionierende Exploit, der einen Ausbruch einer unprivilegierten arm64-VM durch den In-Kernel-KVM-Code selbst demonstriert – ganz ohne Fehler im Userspace-Emulator .
Für Cloud-Anbieter, die AWS-Graviton-Instanzen, Ampere-Altra-Server oder andere arm64-KVM-Hosts mit mandantenfähigen Workloads betreiben, hat dies gravierende Folgen. Ein Gast kann:
Die meisten Sicherheitsteams bewerten die Schwachstelle mit einem CVSS-Wert von über 9,0, was die höchste Kritikalität widerspiegelt .
Der verwundbare Code liegt im Invalidierungspfad des LPI-Übersetzungscaches. Wenn der Kernel Cache-Einträge leeren muss, iteriert er mit xa_for_each() durch das XArray und ruft vgic_put_irq() auf, um den Referenzzähler für jeden Eintrag zu senken. Das Problem: xa_for_each() kann Einträge zurückgeben, die von einer gleichzeitigen Operation – etwa einem DISCARD-ITS-Befehl einer anderen vCPU – bereits gelöscht wurden. Die Invalidierungsschleife senkt den Referenzzähler für diesen bereits entfernten Eintrag dennoch, was zu einer doppelten Freigabe und schließlich zu einem Use-after-Free führt .
Eine frühere Schwachstelle im selben Code, CVE-2024-26598, hatte eine ähnliche UAF-Lücke im Trefferpfad des LPI-Übersetzungscaches teilweise behoben, indem der Referenzzähler innerhalb von vgic_its_check_cache() vor dem Freigeben der Sperre erhöht wurde. Dieser Fix deckte den Invalidierungspfad jedoch nicht ab, sodass die Race-Condition durch eine andere Befehlssequenz weiterhin ausnutzbar blieb .
Der offizielle Upstream-Fix modifiziert vgic_its_invalidate_cache() so, dass vgic_put_irq() nur noch für den von xa_erase() zurückgegebenen Wert aufgerufen wird, nicht für jeden Eintrag, den der Iterator berührt. Die Commit-Nachricht lautet: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry" (dt.: „Gebe die Referenz des Übersetzungscaches nur für den tatsächlich gelöschten Eintrag frei“) .
Da xa_erase() den alten Eintrag atomar entfernt und zurückgibt – oder NULL zurückgibt, falls der Eintrag bereits weg war – stellt der Fix sicher, dass der Referenzzähler genau einmal dekrementiert wird, und eliminiert so das Zeitfenster für die doppelte Freigabe. Der Patch wurde Anfang Juni 2026 in den Upstream-Kernel aufgenommen und kurze Zeit später, um den 8. bis 10. Juni 2026, schnell in die stabilen 6.x-Kernel-Serien übernommen . Große Distributionen wie Red Hat, SUSE und Debian haben Backports für ihre unterstützten Kernel-Zweige veröffentlicht .
Hyunwoo Kim veröffentlichte den funktionierenden Exploit um den 9. bis 10. Juni 2026 öffentlich auf GitHub. Das Repository enthält den vollständigen Quellcode, eine Schritt-für-Schritt-Anleitung zur Reproduktion sowie eine technische Beschreibung der Exploitation-Technik . Der Exploit triggert die Race-Condition, indem er vCPU-Threads koordiniert, die gleichzeitig DISCARD-Befehle ausführen und Lookups im LPI-Übersetzungscache vornehmen, um den Use-After-Free präzise für die Host-Codeausführung auszunutzen.
Die öffentliche Verfügbarkeit eines zuverlässigen PoCs bedeutet, dass standardisierte Exploit-Scanner und echte Angreifer die Schwachstelle mit minimalem Aufwand waffenfähig machen können. Das verkürzt das Zeitfenster zwischen der Offenlegung und aktiven Angriffen erheblich.
Wenn Sie eine mandantenfähige arm64-KVM-Infrastruktur betreiben – mit AWS Graviton, Ampere Altra oder einer ähnlichen Plattform – betrachten Sie diesen Vorfall als sofortigen Notfall-Patch-Zyklus.
ITScape ist eine Race-Condition im In-Kernel-Interrupt-Übersetzungsdienst (Interrupt Translation Service, ITS) des virtuellen Generischen Interrupt-Controllers von KVM (vGIC-ITS). Der vGIC-ITS kümmert sich um die Übersetzung von Logical Processor Interrupts (LPIs) für virtualisierte arm64-Gastsysteme. Wenn ein Eintrag im Übersetzungscache invalidiert werden muss, durchläuft der Kernel die Einträge und gibt ihre Referenzen frei. Der Fehler liegt darin, dass die Invalidierungsfunktion die Referenz für jeden vom Iterator zurückgegebenen Eintrag freigegeben hat – einschließlich der Einträge, die bereits durch eine gleichzeitige Operation aus dem Cache entfernt worden waren .
Diese doppelte Freigabe verursacht ein klassisches Use-after-Free (UAF): Zwei parallele Ausführungspfade können auf Speicher zugreifen, der bereits freigegeben wurde, was es einem Angreifer ermöglicht, den Heap-Speicher zu manipulieren und schließlich die Kontrolle über den Programmfluss auf der Host-Kernel-Ebene zu übernehmen .
Der Fehler sitzt direkt in der Funktion vgic_its_invalidate_cache(). Diese durchläuft den ITS-eigenen Übersetzungscache mit xa_for_each() und ruft vgic_put_irq() für den durchlaufenen Zeiger auf, anstatt für den Wert, der sicher von xa_erase() zurückgegeben wird. Da mehrere Kontexte unter verschiedenen Sperren in diese Funktion eintreten können, ist die Race-Condition vollständig vom Gastsystem aus erreichbar, indem man ITS-Befehle mit einem GITS_CTLR-Schreibzugriff und dem Löschen von EnableLPIs in einem Redistributor kombiniert .
Gast-zu-Host-Ausbrüche sind selten, gehören aber zur gefährlichsten Klasse von Hypervisor-Fehlern, da sie die Isolationsgrenze durchbrechen, auf der das gesamte Cloud-Computing basiert. Bisherige öffentliche KVM-Ausbrüche zielten auf x86-Systeme ab, meist über QEMU oder AMD-spezifischen Code . ITScape ist der erste funktionierende Exploit, der einen Ausbruch einer unprivilegierten arm64-VM durch den In-Kernel-KVM-Code selbst demonstriert – ganz ohne Fehler im Userspace-Emulator .
Für Cloud-Anbieter, die AWS-Graviton-Instanzen, Ampere-Altra-Server oder andere arm64-KVM-Hosts mit mandantenfähigen Workloads betreiben, hat dies gravierende Folgen. Ein Gast kann:
Die meisten Sicherheitsteams bewerten die Schwachstelle mit einem CVSS-Wert von über 9,0, was die höchste Kritikalität widerspiegelt .
Der verwundbare Code liegt im Invalidierungspfad des LPI-Übersetzungscaches. Wenn der Kernel Cache-Einträge leeren muss, iteriert er mit xa_for_each() durch das XArray und ruft vgic_put_irq() auf, um den Referenzzähler für jeden Eintrag zu senken. Das Problem: xa_for_each() kann Einträge zurückgeben, die von einer gleichzeitigen Operation – etwa einem DISCARD-ITS-Befehl einer anderen vCPU – bereits gelöscht wurden. Die Invalidierungsschleife senkt den Referenzzähler für diesen bereits entfernten Eintrag dennoch, was zu einer doppelten Freigabe und schließlich zu einem Use-after-Free führt .
Eine frühere Schwachstelle im selben Code, CVE-2024-26598, hatte eine ähnliche UAF-Lücke im Trefferpfad des LPI-Übersetzungscaches teilweise behoben, indem der Referenzzähler innerhalb von vgic_its_check_cache() vor dem Freigeben der Sperre erhöht wurde. Dieser Fix deckte den Invalidierungspfad jedoch nicht ab, sodass die Race-Condition durch eine andere Befehlssequenz weiterhin ausnutzbar blieb .
Der offizielle Upstream-Fix modifiziert vgic_its_invalidate_cache() so, dass vgic_put_irq() nur noch für den von xa_erase() zurückgegebenen Wert aufgerufen wird, nicht für jeden Eintrag, den der Iterator berührt. Die Commit-Nachricht lautet: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry" (dt.: „Gebe die Referenz des Übersetzungscaches nur für den tatsächlich gelöschten Eintrag frei“) .
Da xa_erase() den alten Eintrag atomar entfernt und zurückgibt – oder NULL zurückgibt, falls der Eintrag bereits weg war – stellt der Fix sicher, dass der Referenzzähler genau einmal dekrementiert wird, und eliminiert so das Zeitfenster für die doppelte Freigabe. Der Patch wurde Anfang Juni 2026 in den Upstream-Kernel aufgenommen und kurze Zeit später, um den 8. bis 10. Juni 2026, schnell in die stabilen 6.x-Kernel-Serien übernommen . Große Distributionen wie Red Hat, SUSE und Debian haben Backports für ihre unterstützten Kernel-Zweige veröffentlicht .
Hyunwoo Kim veröffentlichte den funktionierenden Exploit um den 9. bis 10. Juni 2026 öffentlich auf GitHub. Das Repository enthält den vollständigen Quellcode, eine Schritt-für-Schritt-Anleitung zur Reproduktion sowie eine technische Beschreibung der Exploitation-Technik . Der Exploit triggert die Race-Condition, indem er vCPU-Threads koordiniert, die gleichzeitig DISCARD-Befehle ausführen und Lookups im LPI-Übersetzungscache vornehmen, um den Use-After-Free präzise für die Host-Codeausführung auszunutzen.
Die öffentliche Verfügbarkeit eines zuverlässigen PoCs bedeutet, dass standardisierte Exploit-Scanner und echte Angreifer die Schwachstelle mit minimalem Aufwand waffenfähig machen können. Das verkürzt das Zeitfenster zwischen der Offenlegung und aktiven Angriffen erheblich.
Wenn Sie eine mandantenfähige arm64-KVM-Infrastruktur betreiben – mit AWS Graviton, Ampere Altra oder einer ähnlichen Plattform – betrachten Sie diesen Vorfall als sofortigen Notfall-Patch-Zyklus.