A Helmholtz Center for Information Security (CISPA) kutatói közzétettek egy új támadási módszert, a CacheWarpot, amely lehetővé teszi az AMD SEV (Secure Encrypted Virtualization) védelmi mechanizmusának kompromittálását, amelyet a virtualizációs rendszerek alkalmaznak a virtuális gépek hypervisor vagy a gazdagép-adminisztrátor általi beavatkozás elleni védelmére. Az ajánlott módszer lehetővé teszi a támadó számára, aki hozzáféréssel rendelkezik a hypervisorhoz, hogy távoli kódot futtasson és privilegizált jogosultságokat szerezzen egy AMD SEV által védett virtuális gépben.
A támadás egy (CVE-2023-20592) sebezhetőségen alapul, amely a processzor INVD utasításának végrehajtása során a gyorsítótár hibás kezeléséből adódik, amellyel az adatok eltérése a memória és a gyorsítótár között érhető el, megkerülve a virtuális gépek memóriaintegritásának fenntartására irányuló mechanizmusokat, amelyeket az SEV-ES és SEV-SNP kiterjesztések valósítanak meg. A sebezhetőség az AMD EPYC processzorok első és harmadik generációját érinti.
Az AMD EPYC harmadik generációs processzorai (Zen 3) esetében a problémát a tegnap az AMD által kiadott novemberi mikrokód-frissítés szüntette meg (a javítás nem vezet teljesítménycsökkenéshez). Az AMD EPYC első és második generációs processzorai (Zen 1 és Zen 2) esetében nem áll rendelkezésre védelem, mivel ezeknél a CPU-knál hiányzik az SEV-SNP kiterjesztés, amely biztosítja az integritás ellenőrzését. virtuális gépekhez. Az AMD EPYC "Genoa" negyedik generációs processzorai, amelyek a "Zen 4" mikroarchitektúrára épülnek, nem ki vannak téve a sebezhetőségeknek.
Az AMD SEV technológiát a virtuális gépek elszigetelésére alkalmazzák olyan felhőszolgáltatók, mint az Amazon Web Services (AWS), a Google Cloud, a Microsoft Azure és az Oracle Compute Infrastructure (OCI). Az AMD SEV védelme a virtuális gépek memóriájának hardveres szintű titkosításán alapul. Továbbá, az SEV-ES (Encrypted State) kiterjesztés segítségével a CPU regiszterek védelmét is végzik. A kódolt adatokhoz csak az aktuális vendég rendszer fér hozzá, míg a többi virtuális gépek és a hypervisor titkosított adathalmazon keresztül próbál hozzáférni ehhez a memóriához.
Az AMD EPYC processzorok harmadik generációjában bevezetésre került egy új SEV-SNP (Secure Nested Paging) kiterjesztés, amely biztosítja a biztonságos működést a beágyazott memóriaoldal-táblákkal. A memória teljes titkosítása és a regiszterek elszigetelése mellett a SEV-SNP további eszközöket is tartalmaz a memória integritásának védelmére, megakadályozva, hogy a hypervisor módosításokat hajtson végre a VM-en. A titkosító kulcsok kezelése a chipekbe beépített dedikált processzor, a PSP (Platform Security Processor) által történik, amely ARM architektúrára épül.
A javasolt támadási módszer lényege, hogy az INVD utasítást használja a dirty oldalak cache-ében lévő blokkok (sorból) érvénytelenítésére anélkül, hogy az összegyűlt cache-datát visszaírná a memóriába (write-back). Így ez a módszer lehetővé teszi a módosított adatok kivetését a cache-ből, anélkül, hogy megváltoztatná a memória állapotát. A támadás végrehajtásához programozott kivételek (fault injection) alkalmazását javasolják a virtuális gép két helyen való megszakítására: az első helyen a támadó a "wbnoinvd" utasítást hívja meg, hogy ürítse ki az összes korábban a cache-ben végrehajtott írási műveletet, a második helyen pedig az "invd" utasítást, hogy a memóriában nem tükrözött írási műveleteket visszaállítsa a régi állapotába.
A rendszerek sebezhetőségének ellenőrzésére közzétették a prototípus explóiter, amely lehetővé teszi, hogy kiváltsák a kivételeket egy AMD SEV-vel védett virtuális gépben, és visszaállítsák a memóriába nem írt módosításokat az VM-ben. A módosítások visszaállítása felhasználható a program végrehajtásának menetére történő befolyásolására azáltal, hogy visszatérünk a régi visszatérési címhez a veremben, vagy a paraméterek újabb belépésére is felhasználható a régi munkamenethez, amelyhez már elvégezték az azonosítást, az azonosító értékének visszaadásával.
Például a kutatók bemutatták a CacheWarp módszer alkalmazásának lehetőségét a Bellcore támadás végrehajtására az RSA-CRT algoritmus ipp-crypto könyvtárbeli megvalósításán, ami lehetővé tette a zárkulcs helyreállítását a digitális aláírás számítása során fellépő hibák behelyettesítésével. Arra is példát mutattak, hogyan lehet megváltoztatni az OpenSSH-hoz történő távoli kapcsolódás során a munkamenet-ellenőrzési paramétereket, majd megváltoztatni az ellenőrzés állapotát a sudo segédprogram futtatásakor root jogok megszerzéséhez az Ubuntu 20.04 alatt. Az exploit működését AMD EPYC 7252, 7313P és 7443 processzorokkal rendelkezó rendszereken ellenőrizték.
Forrás: opennet.ru
