ITScape je zranitelnost typu race condition v interním virtuálním generickém řadiči přerušení (vGIC-ITS), konkrétně v jeho službě Interrupt Translation Service, která je součástí KVM. Tato služba pro virtualizované hosty na arm64 zpracovává překlady Logických procesorových přerušení (LPI). Když je potřeba zneplatnit položku v překladové mezipaměti, jádro prochází jednotlivé položky a uvolňuje jejich reference. Chyba spočívá v tom, že funkce pro zneplatnění uvolňovala referenci na každou položku, kterou vrátil iterátor – včetně těch, které již z mezipaměti odstranila souběžná operace .
Toto dvojité uvolnění reference vytváří klasickou chybu use-after-free (UAF): dvě cesty provádění programu skončí tak, že operují s již uvolněnou pamětí. Útočník tak získá prostor pro manipulaci s haldou jádra hostitele a může nakonec převzít kontrolu nad jeho tokem provádění na úrovni jádra .
Chyba se nachází ve funkci vgic_its_invalidate_cache(), která prochází překladovou mezipaměť pomocí xa_for_each() a volá vgic_put_irq() na iterovaném ukazateli, nikoliv na hodnotě, kterou bezpečně vrátí xa_erase(). Do této funkce může vstoupit více kontextů pod různými zámky, takže race condition je plně dosažitelná z hosta kombinací zpracování ITS příkazů, zápisem do GITS_CTLR a vymazáním EnableLPIs v redistributoru .
Přestože jsou útoky typu „útěk z hosta na hostitele“ vzácné, patří k nejnebezpečnější třídě chyb v hypervizorech, protože narušují izolační bariéru, na které cloud computing stojí. Předchozí veřejné úniky z KVM cílily na architekturu x86, obvykle skrze chyby v QEMU nebo v kódu specifickém pro AMD . ITScape je prvním funkčním exploitem, který demonstruje prolomení izolace z neprivilegovaného virtuálního stroje na arm64 přímo skrze kód KVM v jádře – bez nutnosti zneužití chyb v uživatelském emulátoru .
Pro poskytovatele cloudu provozující procesory Graviton, Ampere Altra nebo jakýkoliv arm64 KVM hostitel s více tenanty může host provést následující:
Většina bezpečnostních týmů ohodnotila tuto zranitelnost skóre CVSS nad 9.0, což odráží její kritickou závažnost .
Zranitelný kód se nachází v cestě pro zneplatnění mezipaměti LPI překladů. Když jádro potřebuje vyprázdnit položky mezipaměti, iteruje skrz XArray pomocí xa_for_each() a volá vgic_put_irq(), aby uvolnilo počítadlo referencí každé položky. Problém je v tom, že xa_for_each() vrací položky, které už mohly být vymazány souběžnou operací – například příkazem DISCARD ITS vydaným z jiného vCPU. Smyčka pro zneplatnění přesto uvolní referenci na tuto již odstraněnou položku, což způsobí dvojité uvolnění (double-put) a v konečném důsledku chybu use-after-free .
Dřívější zranitelnost ve stejném kódu, CVE-2024-26598, částečně řešila UAF v cestě pro zásah do mezipaměti LPI překladů tím, že zvýšila počet referencí uvnitř vgic_its_check_cache() před uvolněním zámku. Tato oprava však nepokryla cestu pro zneplatnění, takže race condition zůstal zneužitelný skrze jinou sekvenci spouštěčů .
Oprava od upstream vývojářů upravuje vgic_its_invalidate_cache() tak, že vgic_put_irq() je volána pouze na hodnotu vrácenou funkcí xa_erase(), nikoliv na každou položku, které se iterátor dotkne. Zpráva k opravnému commitu zní: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry" .
Protože xa_erase() atomicky odstraní a vrátí starou položku – nebo vrátí NULL, pokud byla položka již pryč – tato oprava zajišťuje, že počitadlo referencí je sníženo právě jednou, čímž se eliminuje okno pro dvojité uvolnění. Záplata byla začleněna do upstream jádra na začátku června 2026 a rychle převzata do stabilní řady 6.x kolem 8.–10. června 2026 . Hlavní distribuce včetně Red Hatu, SUSE a Debianu vydaly zpětně portované opravy pro své podporované větve jádra .
Hyunwoo Kim zveřejnil funkční exploit na GitHubu kolem 9.–10. června 2026. Repozitář obsahuje kompletní zdrojový kód, instrukce pro reprodukci krok za krokem a technický popis techniky zneužití . Exploit spouští race condition koordinací vláken vCPU, která současně vydávají příkazy DISCARD a provádějí vyhledávání v mezipaměti LPI překladů, čímž přesně zacílí chybu use-after-free pro spuštění kódu na hostiteli.
Veřejná dostupnost spolehlivého PoC znamená, že komoditní skenery zranitelností a reální útočníci mohou tuto zranitelnost využít jako zbraň s minimálním úsilím, což zkracuje dobu mezi zveřejněním a aktivními útoky.
Pokud provozujete multi-tenantní ARM64 infrastrukturu na KVM – ať už jde o AWS Graviton, Ampere Altra nebo podobnou platformu – berte toto jako okamžitou nouzovou výzvu k aktualizaci.
ITScape je zranitelnost typu race condition v interním virtuálním generickém řadiči přerušení (vGIC-ITS), konkrétně v jeho službě Interrupt Translation Service, která je součástí KVM. Tato služba pro virtualizované hosty na arm64 zpracovává překlady Logických procesorových přerušení (LPI). Když je potřeba zneplatnit položku v překladové mezipaměti, jádro prochází jednotlivé položky a uvolňuje jejich reference. Chyba spočívá v tom, že funkce pro zneplatnění uvolňovala referenci na každou položku, kterou vrátil iterátor – včetně těch, které již z mezipaměti odstranila souběžná operace .
Toto dvojité uvolnění reference vytváří klasickou chybu use-after-free (UAF): dvě cesty provádění programu skončí tak, že operují s již uvolněnou pamětí. Útočník tak získá prostor pro manipulaci s haldou jádra hostitele a může nakonec převzít kontrolu nad jeho tokem provádění na úrovni jádra .
Chyba se nachází ve funkci vgic_its_invalidate_cache(), která prochází překladovou mezipaměť pomocí xa_for_each() a volá vgic_put_irq() na iterovaném ukazateli, nikoliv na hodnotě, kterou bezpečně vrátí xa_erase(). Do této funkce může vstoupit více kontextů pod různými zámky, takže race condition je plně dosažitelná z hosta kombinací zpracování ITS příkazů, zápisem do GITS_CTLR a vymazáním EnableLPIs v redistributoru .
Přestože jsou útoky typu „útěk z hosta na hostitele“ vzácné, patří k nejnebezpečnější třídě chyb v hypervizorech, protože narušují izolační bariéru, na které cloud computing stojí. Předchozí veřejné úniky z KVM cílily na architekturu x86, obvykle skrze chyby v QEMU nebo v kódu specifickém pro AMD . ITScape je prvním funkčním exploitem, který demonstruje prolomení izolace z neprivilegovaného virtuálního stroje na arm64 přímo skrze kód KVM v jádře – bez nutnosti zneužití chyb v uživatelském emulátoru .
Pro poskytovatele cloudu provozující procesory Graviton, Ampere Altra nebo jakýkoliv arm64 KVM hostitel s více tenanty může host provést následující:
Většina bezpečnostních týmů ohodnotila tuto zranitelnost skóre CVSS nad 9.0, což odráží její kritickou závažnost .
Zranitelný kód se nachází v cestě pro zneplatnění mezipaměti LPI překladů. Když jádro potřebuje vyprázdnit položky mezipaměti, iteruje skrz XArray pomocí xa_for_each() a volá vgic_put_irq(), aby uvolnilo počítadlo referencí každé položky. Problém je v tom, že xa_for_each() vrací položky, které už mohly být vymazány souběžnou operací – například příkazem DISCARD ITS vydaným z jiného vCPU. Smyčka pro zneplatnění přesto uvolní referenci na tuto již odstraněnou položku, což způsobí dvojité uvolnění (double-put) a v konečném důsledku chybu use-after-free .
Dřívější zranitelnost ve stejném kódu, CVE-2024-26598, částečně řešila UAF v cestě pro zásah do mezipaměti LPI překladů tím, že zvýšila počet referencí uvnitř vgic_its_check_cache() před uvolněním zámku. Tato oprava však nepokryla cestu pro zneplatnění, takže race condition zůstal zneužitelný skrze jinou sekvenci spouštěčů .
Oprava od upstream vývojářů upravuje vgic_its_invalidate_cache() tak, že vgic_put_irq() je volána pouze na hodnotu vrácenou funkcí xa_erase(), nikoliv na každou položku, které se iterátor dotkne. Zpráva k opravnému commitu zní: "KVM: arm64: vgic-its: Drop the translation cache reference only for the erased entry" .
Protože xa_erase() atomicky odstraní a vrátí starou položku – nebo vrátí NULL, pokud byla položka již pryč – tato oprava zajišťuje, že počitadlo referencí je sníženo právě jednou, čímž se eliminuje okno pro dvojité uvolnění. Záplata byla začleněna do upstream jádra na začátku června 2026 a rychle převzata do stabilní řady 6.x kolem 8.–10. června 2026 . Hlavní distribuce včetně Red Hatu, SUSE a Debianu vydaly zpětně portované opravy pro své podporované větve jádra .
Hyunwoo Kim zveřejnil funkční exploit na GitHubu kolem 9.–10. června 2026. Repozitář obsahuje kompletní zdrojový kód, instrukce pro reprodukci krok za krokem a technický popis techniky zneužití . Exploit spouští race condition koordinací vláken vCPU, která současně vydávají příkazy DISCARD a provádějí vyhledávání v mezipaměti LPI překladů, čímž přesně zacílí chybu use-after-free pro spuštění kódu na hostiteli.
Veřejná dostupnost spolehlivého PoC znamená, že komoditní skenery zranitelností a reální útočníci mohou tuto zranitelnost využít jako zbraň s minimálním úsilím, což zkracuje dobu mezi zveřejněním a aktivními útoky.
Pokud provozujete multi-tenantní ARM64 infrastrukturu na KVM – ať už jde o AWS Graviton, Ampere Altra nebo podobnou platformu – berte toto jako okamžitou nouzovou výzvu k aktualizaci.