Skupina výzkumníků z univerzit v Leuven, Lübecku a Birminghamu vyvinula metodu útoku BadRAM (CVE-2024-21944), která umožňuje obcházet mechanismy autentizace a kompromitovat prostředí chráněná pomocí rozšíření SEV-SNP v procesorech AMD. K provedení útoku musí útočník, s výjimkou vzácných případů, získat fyzický přístup k paměťovým modulům a mít možnost spouštět kód na úrovni nultého privilegovaného režimu (ring0) na serveru, který provozuje chráněná hostitelská prostředí.
Rozšíření AMD SEV (Secure Encrypted Virtualization) mají za cíl poskytovat záruky integrity paměti virtuálních strojů a chránit je před zásahy a analýzou ze strany administrátora hostitelského systému, který má možnost vykonávat kód na úrovni hypervisoru. Původní ochrana AMD SEV spočívala v šifrování obsahu paměti hostitelského systému a izolaci registrů, ale později byly v procesorech AMD EPYC implementovány další rozšíření SEV-SNP (Secure Nested Paging) pro bezpečné zpracování vnořených stránek paměti, zajišťující integritu paměti a zabraňující úpravám paměti hostitelského systému ze strany hypervisoru.
Mechanismus AMD SEV-SNP byl navržen tak, aby agenti nebo personál datových center a cloudových poskytovatelů, ve kterých běží chráněné hostitelské systémy, nemohli zasahovat do jejich činnosti. Navržená metoda útoku BadRAM umožňuje obcházet poskytované záruky prostřednictvím změny metadat SPD (Serial Presence Detect) v paměťových modulech DDR4 nebo DDR5. Při úspěšném útoku může útočník přepsat šifrovaná data v paměti hostitelského systému (na úrovni šifrovaného textu, bez možnosti dešifrování) a obejít mechanismus attestace, například k skrytí implantace backdooru do virtuálního stroje, chráněného pomocí technologie SEV-SNP.
Útok spočívá v nastavení falešných parametrů modulu paměti ve SPD, které nutí procesor přistupovat k neexistujícím adresám, jež jsou mapovány na existující oblasti paměti. Útočník může upravit SPD tak, že modul paměti vrátí procesoru velikost převyšující skutečné vlastnosti modulu. Poté může útočník provést mapování vymyšlené neexistující paměti na skutečnou oblast v DRAM, která je již používána zašifrovaným způsobem v zabezpečených hostitelských systémech. Vzniká tak situace, kdy různé adresy ukazují na stejnou fyzickou paměť (dvě oblasti jsou mapovány na jednu oblast v čipu DRAM), tj. na adresu falešné mapované oblasti paměti lze získat přístup k již používané skutečné paměti a obejít mechanismy ochrany paměti v CPU.

K provedení útoku stačí sestavit jednoduchý programátor za cenu kolem 10 dolarů, skládající se z mikrokontroléru Raspberry Pi Pico, konektoru pro moduly DDR4/DD5 a zdroje napájení. Nástroje použité k provedení útoku, jádrový modul a prototypy exploitů jsou umístěny na GitHubu.

Pro čipy některých výrobců, u nichž není zablokováno přepisování SPD, je provedení útoku možné softwarově bez fyzického přístupu k serveru. Například lze softwarově změnit parametry paměťových modulů společnosti Corsair s RGB podsvícením. V případě plně softwarového útoku může být systém kompromitován například prostřednictvím škodlivého aktualizace BIOSu nebo skrze diverzi ze strany administrátorů. servery v cloudových službách.

Jako potvrzení funkčnosti metody byly demonstrovány dva útoky. V prvním útoku byla ukázána možnost opětovného zobrazení šifrovaného textu — při použití AMD SEV jsou data v paměti uložena zašifrovaně a útočník nemůže určit obsah, ale má možnost přečíst zašifrovaná data a poté je použít místo jiného zašifrovaného obsahu.
Ve druhém útoku byla demonstrována možnost obcházení mechanismu attestace SEV-SNP, který poskytuje kryptografické ověření integrity virtuálního stroje spuštěného v zabezpečeném prostředí. Útočník může zachytit zprávu o attestaci správného virtuálního stroje a poté ji použít pro kompromitovaný virtuální stroj, například skrytím stop po implantaci backdooru.
Problém se týká 3. a 4. generace procesorů AMD série EPYC, dodávaných pod kódovými jmény Milan, Milan-X, Genoa, Bergamo, Genoa-X a Siena. Aby zablokovala zranitelnost, společnost AMD již vydala aktualizaci firmwaru SEV, v níž je implementována kontrola ALIAS_CHECK, která zabraňuje manipulaci s paměťmi, jakými je dotyčný útok.
Navrhované technologie společnosti Intel Scalable SGX a TDX nejsou útoku vystaveny, neboť potřebné kontroly jsou zahrnuty již od počátku. Klasická technologie Intel SGX, která byla v roce 2021 převedena na seznam zastaralých, je částečně náchylná k útoku (analogicky k dříve známému útoku MemBuster, útočník může analyzovat přístupy k šifrované paměti, tedy je možné pouze čtení šifrovaného textu, ale ne jeho přepsání). Testování rozšíření CCA (Confidential Compute Architecture) v procesorech společnosti ARM nebylo provedeno.
Dále je hlášena další zranitelnost související s AMD SEV-SNP. Zranitelnost byla identifikována ve vyvíjené AMD fork emulátoru QEMU, určeného pro spuštění virtuálních strojů s SEV-SNP. Problém umožňuje správci hostitelského prostředí získat root přístup ke гостevým systémům prostřednictvím manipulace s ACPI tabulkami. Zranitelnost je způsobena tím, že při načítání гостевého systému probíhá ověření integrity jádra Linuxu, počátečního RAM disku a parametrů jádra, ale nezohledňují se ACPI tabulky, prostřednictvím kterých může hypervizor vystavit speciálně upravený kód AML (ACPI Machine Language), určený pro vykonávání v гостевém prostředí. Je uvedeno, že problém není specifický pro QEMU a projevuje se v jakýchkoliv hypervizorech a emulátorech, neboť jádro Linuxu důvěřuje jakýmkoliv datům ACPI přicházejícím od hypervizora.


Zdroj: opennet.ru
