vgic_its_invalidate_cache()xa_for_each()vgic_put_irq()xa_erase()GITS_CTLREnableLPIsPř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.
Comments
0 comments