Nedavno so bile objavljene informacije o ranljivosti , ki ogroža strežnike v oblaku. Ta ranljivost napadalcem omogoča, da prevzamejo popoln nadzor nad fizičnim računalnikom , kar je za ponudnike infrastrukture v oblaku nočna mora.
Zapscape, registriran pod identifikatorjem CVE-2026-64561, je kritična ranljivost v hipervizorju Linux KVM, ki razkriva tveganje, ki ga številne platforme nenamerno prevzamejo z omogočanjem ugnezdene virtualizacije. Ta ranljivost napadalcu s pravicami jedra v virtualnem stroju (L1) omogoča izvajanje kode s pravicami root v gostiteljskem sistemu (L0) in s tem prekinitev izolacije virtualiziranih okolij.
Zapscape , ki velja za zelo močno grožnjo, ne le olajša pobeg iz virtualnega stroja, temveč tudi odpre lokalno pot za eskalacijo privilegijev za uporabnike gostitelja, ki imajo dovoljenja za pisanje na napravi /dev/kvm.
Čeprav so organizacije, kot je Red Hat, ranljivost ocenile z oceno 7.0 na lestvici CVSS, pri čemer se osredotočajo na nestabilnost in zavrnitev storitve, javni dokaz koncepta (PoC) kaže veliko bolj uničujoč obseg: ustvarjanje poljubne datoteke neposredno v korenu gostitelja.
Kaos v enoti za upravljanje pomnilnika
Način delovanja Zapscapea je skrit v enoti za upravljanje pomnilnika (MMU) KVM in v tem, kako hipervizor obravnava tabele strani, ko en gost (L1) deluje kot hipervizor za drugega podgosta (L2). Težava je v logični napaki vrstnega reda med obravnavanjem napak strani. V poteh kode jedra se je preverjanje "zastarelega korena" izvedlo pred funkcijo pridobivanja strani, namesto po njej.
To napačno zaporedje sproži klasičen scenarij uporabe po sprostitvi . Med obnovitvijo lahko KVM odstrani korenski imenik, ki ga uporablja, in ga označi kot neveljavnega. Ker pa je bil pregled stanja že izveden, sistem še naprej gradi preslikave pod korenskim imenikom, ki ni več veljaven. Zanimivo je, da ta težava z razvrščanjem obstaja v kodi že od leta 2008, vendar je postala kritična in izkoriščevalna po izdaji jedra Linuxa 5.9 julija 2020 , ko je bila uvedena direktiva, ki jo je sistem preprosto prenehal uveljavljati.
Zahteve in omejitve
Da bi bilo mogoče izkoristiti Zapscape, mora okolje izpolnjevati zelo specifične zahteve. Najprej mora biti v modulu KVM omogočena vgnezdena virtualizacija, konfiguracija, ki omogoča tristopenjsko arhitekturo (L0, L1 in L2). Napadalec mora napad sprožiti s plasti L1 , kar zahteva root pravice na tem virtualnem računalniku. Od tam napadalec manipulira z načini pomnilnika, medtem ko aktivnost podgostov L2 prisili gostitelja L0, da sproži pridobivanje strani s kvotami, kar povzroči poškodbo pomnilnika.
Na ravni strojne opreme se pogoji razlikujejo glede na proizvajalca. V sistemih AMD , ki uporabljajo ugnezdene tabele strani ( SVM ), je ranljivost bolj enostavna in ne zahteva dodatnih funkcij. Nasprotno pa v procesorjih Intel scenarij zahteva , da ima gost L1 izpostavljene zmogljivosti sprehajanja strani EPT na štirih in petih ravneh . To omejuje vektor napada na Intel na novejše arhitekture, zlasti od družine Ice Lake-SP naprej.
Omeniti velja, da čeprav je javni dokaz koncepta uspel uiti na gostitelja v nadzorovanih okoljih, so varnostni raziskovalci poročali, da na nekaterih ponovno prevedenih jedrih izkoriščanje preprosto sesuje napadalčev virtualni stroj, kar deluje kot zavrnitev storitve in ne kot popoln pobeg.
Blaženje, popravki in strategije
Dokončna rešitev za Zapscape je v repozitorije Linux prispela lanskega julija s popravkom, ki popravlja vrstni red preverjanja. Ta popravek premakne preverjanje zastarelega korenskega direktorija po dodelitvi strani MMU, s čimer zagotovi, da hipervizor ne ustvari aktivnih preslikav pod izbrisanim korenskim direktorijem. Ti popravki so že bili implementirani v stabilnih vejah jedra in jih različne distribucije široko distribuirajo.
Za skrbnike, ki ne morejo takoj nadgraditi, obstajajo zelo učinkoviti začasni ukrepi. Prednostni ukrep je onemogočiti vgnezdeno virtualizacijo na vseh strežnikih, kjer ni nujno potrebna, tako da se parametru `nested=0` posreduje modula `kvm_amd` ali `kvm_intel` v konfiguracijskih datotekah modprobe. Ta ukrep zahteva ponovno nalaganje modula, kar pomeni zaustavitev vseh aktivnih virtualnih strojev.
Nenazadnje, če vas zanima več informacij, lahko podrobnosti najdete na naslednji povezavi.