A Leuven, Lübecker és Birminghami Egyetem kutatócsoportja kidolgozott egy BadRAM támadási módszert (CVE-2024-21944), amely lehetővé teszi a hitelesítés megkerülését és a SEV-SNP kiterjesztéssel védett környezetek kompromittálását az AMD processzorokban. A támadáshoz a kiberbűnözőnek, ritka kivételekkel, fizikailag hozzáférnie kell a memória modulokhoz, valamint képesnek kell lennie kódot futtatni a nulladik védelmi szinten (ring0) azon a szerveren, amelyik védett vendéghálózatokat futtat.
Az AMD SEV (Secure Encrypted Virtualization) kiterjesztések célja, hogy garantálják a virtuális gépek memória integritását, valamint védjék őket a hosztrendszer rendszergazdája által végzett beavatkozástól és elemzéstől, aki képes kódot futtatni a hipervizor szintjén. Kezdetben az AMD SEV védelem a vendég rendszer memória tartalmának titkosítására és a regiszterek elszigetelésére korlátozódott, de később az AMD EPYC processzorokban további SEV-SNP (Secure Nested Paging) kiterjesztés került bevezetésre a biztonságos memória oldal táblák kezelésére, amely garantálja a memória integritását, és megakadályozza a hipervizor által végzett változtatásokat a vendég rendszer memóriájában.
Az AMD SEV-SNP mechanizmust azért hozták létre, hogy a titkosszolgálatok vagy az adatközpontok és felhőszolgáltatók személyzete, ahol védett vendéghálózatokat futtatnak, ne tudjanak beavatkozni a vendéghálózat működésébe. A javasolt BadRAM támadási módszer lehetőséget ad a védelmi garanciák megkerülésére az DDR4 vagy DDR5 memória modulok SPD (Serial Presence Detect) metaadatainak megváltoztatásával. Sikeres támadás esetén a kiberbűnöző felül tudja írni a titkosított adatokat a vendéghálózat memóriájában (titkos szöveg szintjén, visszafejtési lehetőség nélkül) és megkerülheti a hitelesítési mechanizmust, például a SEV-SNP technológia segítségével védett virtuális gépbe történő hátsó ajtó elrejtésére.
A támadás alapja az SPD-ben a memória modul hamis paramétereinek megadása, amelyek arra kényszerítik a processzort, hogy nem létező címekre hivatkozzon, amelyeket a létező memória területek tükröznek. A támadó módosíthatja az SPD-t úgy, hogy a memória modul olyan méretet adjon vissza a processzornak, amely meghaladja a modul tényleges jellemzőit. Ezt követően a támadó valótlan, nem létező memória címet térképezhet a valós területre a DRAM-on, amely már titkosított formában van használatban a védett vendég rendszerekben. Ennek következtében olyan helyzet áll elő, amikor különböző címek ugyanarra a fizikai memóriára mutatnak (két terület egy memóriaterületre van tükrözve a DRAM chipen), azaz a hamisített tükrözött memória címén keresztül hozzáférhetünk a már használatban lévő valódi memóriához, megkerülve a CPU memória védelmi mechanizmusaikat.

A támadáshoz elegendő összeszerelni egy egyszerű programozót, amelynek költsége körülbelül 10 dollár, és amely Raspberry Pi Pico mikrokontrollerből, DDR4/DDR5 modul csatlakozóból és tápegységből áll. A támadás végrehajtásához használt eszközök, az kernel modul és az exploit prototípusok a GitHub-on találhatók.

Néhány gyártó chipjeinél, ahol az SPD felülírás blokkolása nem valósult meg, a támadás programozási úton, fizikai hozzáférés nélkül is végrehajtható a szerverhez. Például programozottan meg lehet változtatni a Corsair RGB háttérvilágítással ellátott memória modulok paramétereit. Teljesen programozott támadás esetén a rendszer kompromittálható, például a BIOS rosszindulatú frissítésének alkalmazásával vagy rendszergazdák általi diverzió révén. szerverek a felhőszolgáltatásokban.

A módszer működésének megerősítéseként két támadás került bemutatásra. Az első támadás során a titkosított szöveg visszafejtésének lehetőségét mutatták be - az AMD SEV használatával az adatok a memóriában titkosított formában tárolódnak, és a támadó nem tudja meghatározni a tartalmát, de lehetősége van a titkosított adatok olvasására, majd ezek helyettesítésére más titkosított tartalommal.
A második támadás során demonstrálták az SEV-SNP hitelesítési mechanizmusának megkerülését, amely kriptográfiai megerősítést nyújt a védett környezetben futó virtuális gép integritásáról. A támadó képes lehet az integritásról szóló jelentés elfogására a megfelelő virtuális géptől, majd azt a kompromittált virtuális gép számára behelyettesíteni, például elrejtve a hátsó ajtó nyomait.
A probléma az AMD EPYC processzorok 3. és 4. generációját érinti, amelyek Milan, Milan-X, Genoa, Bergamo, Genoa-X és Siena kódneveken kerültek forgalomba. A sérülékenység blokkolása érdekében az AMD már kiadott egy SEV firmware frissítést, amelyben megvalósították az ALIAS_CHECK ellenőrzést, amely megakadályozza a memória manipulálását, ami a vizsgált támadás sajátja.
Az Intel által kínált Scalable SGX és TDX technológiák nem érzékenyek a támadásra, mivel az szükséges ellenőrzések már eleve jelen vannak. A klasszikus Intel SGX technológia, amelyet 2021-ben az Intel elavultnak minősített, részben érzékeny a támadásra (a korábban ismert MemBuster támadáshoz hasonlóan, a támadó elemezheti a titkosított memória hozzáféréseit, vagyis csak a titkos szöveg olvasása lehetséges, de annak felülírása nem). Az ARM processzorokon nem végeztek CCA (Confidential Compute Architecture) bővítmények tesztelését.
Továbbá, egy másik sérülékenységről is beszámoltak, amely az AMD SEV-SNP-hez kapcsolódik. A sérülékenységet az AMD által fejlesztett QEMU emulátor forkjában találták, amelyet a virtuális gépekhez SEV-SNP-vel való futtatására terveztek. A probléma lehetővé teszi a host környezet adminisztrátora számára, hogy root hozzáférést szerezzen a vendég rendszerekhez az ACPI táblák manipulálásával. A sérülékenység abból adódik, hogy a vendég rendszer indításakor ellenőrzik a Linux kernel, a kezdeti RAM-diszk és a kernel beállításainak integritását, de nem veszik figyelembe az ACPI táblákat, amelyeken keresztül a hypervisor speciálisan formázott AML (ACPI Machine Language) kódot állíthat be, amelyet a vendég környezetben kell végrehajtani. Állítások szerint a probléma nem specifikus a QEMU-ra, és bármilyen hypervisorban és emulátorban megjelenik, mivel a Linux kernel megbízik bármely ACPI-adatban, amelyet a hypervisor küld.


Forrás: opennet.ru
