Un grup de cercetători de la Universitățile Leuven, Lübeck și Birmingham a dezvoltat o metodă de atac BadRAM (CVE-2024-21944), care permite ocolirea mecanismului de autentificare și compromiterea mediiurilor protejate prin utilizarea extensiei SEV-SNP în procesoarele AMD. Pentru a efectua atacul, atacatorul, cu rare excepții, trebuie să obțină acces fizic la modulele de memorie, precum și să aibă capacitatea de a executa cod la nivelul inelului 0 (ring0) pe serverul care rulează medii virtuale protejate.
Extensiile AMD SEV (Secure Encrypted Virtualization) sunt concepute pentru a oferi garanții de integritate a memoriei mașinilor virtuale, precum și pentru a le proteja de intervenția și analiza din partea administratorului sistemului gazdă capabil să execute cod la nivelul hipervizorului. Inițial, protecția AMD SEV se limita la criptarea conținutului memoriei sistemului gazdă și la izolarea registrelor, dar ulterior, în procesoarele AMD EPYC a fost implementată extensia SEV-SNP (Secure Nested Paging) pentru o funcționare sigură cu tabelele de pagini imbricate, garantând integritatea memoriei și împiedicând modificarea memoriei sistemului gazdă din partea hipervizorului.
Mecanismul AMD SEV-SNP a fost creat pentru a împiedica agențiile de securitate sau personalul din centrele de date și furnizorii de cloud, în care rulează sistemele gazdă protejate, să se interpună în funcționarea sistemului gazdă. Metoda de atac BadRAM propusă permite ocolirea garanțiilor furnizate prin modificarea metadatelor SPD (Serial Presence Detect) în modulele de memorie DDR4 sau DDR5. Dacă atacul reușește, atacatorul poate rescrie datele criptate din memoria sistemului gazdă (la nivel de text criptat, fără posibilitate de decriptare) și ocoli mecanismul de atestare, de exemplu, pentru a ascunde implantarea unui backdoor într-o mașină virtuală protejată prin tehnologia SEV-SNP.
Atacul se bazează pe prezentarea de parametri fictivi în SPD-ul modulului de memorie, determinând procesorul să acceseze adrese inexistente, reflectate în zonele de memorie existente. Atacatorul poate ajusta SPD-ul astfel încât modulul de memorie să returneze procesorului o dimensiune care depășește specificațiile reale ale modulului. După aceea, atacatorul poate realiza o mapare a memoriei fictive inexistente pe o zonă reală din DRAM, care este deja utilizată în mod criptat în sistemele virtualizate protejate. Ca urmare, apare situația în care adrese diferite indică aceeași memorie fizică (două zone reflectate pe o zonă din cipul DRAM), adică se poate accesa memoria reală deja utilizată pe adresa zonei fictive reflectate, ocolind astfel mecanismele de protecție a memoriei din CPU.

Pentru a efectua atacul, este suficient să se asambleze un programator simplu, cu un cost de aproximativ 10 dolari, constând dintr-un microcontroler Raspberry Pi Pico, un conector pentru modulele DDR4/DD5 și o sursă de alimentare. Utilitary folosite pentru realizarea atacului, modulul kernel și prototipurile exploit-urilor sunt disponibile pe GitHub.

Pentru cipurile unor producători, în care nu a fost implementată blocarea rescrierii SPD, atacul poate fi realizat prin metode software, fără acces fizic la server. De exemplu, parametrii modulelor de memorie de la Corsair cu iluminare RGB pot fi modificați programatic. În cazul unui atac complet software, sistemul poate fi compromis, de exemplu, prin utilizarea unei actualizări BIOS malițioase sau prin o diversie din partea administratorilor. servere în serviciile de cloud.

Ca dovadă a funcționalității metodei, au fost demonstrate două atacuri. În primul atac, a fost arătată posibilitatea de a reproduce din nou textul criptat — utilizând AMD SEV, datele din memorie sunt păstrate în mod criptat și atacatorul nu poate determina conținutul, dar poate citi datele criptate și apoi le poate substitui cu alt conținut criptat.
În a doua atacă, s-a demonstrat posibilitatea de a ocoli mecanismul de atestare SEV-SNP, care oferă o confirmare criptografică a integrității mașinii virtuale rulate într-un mediu protejat. Atacatorul poate intercepta raportul de atestare al unei mașini virtuale corecte și apoi să-l substituie pentru o mașină virtuală compromisă, de exemplu, ascunzând urmele implantării unui backdoor.
Problema afectează generațiile 3 și 4 ale procesorului AMD din seria EPYC, livrate sub numele de cod Milan, Milan-X, Genoa, Bergamo, Genoa-X și Siena. Pentru a bloca vulnerabilitatea, compania AMD a lansat deja o actualizare a firmware-ului SEV, care implementează verificarea ALIAS_CHECK, împiedicând manipularea memoriei caracteristică atacului analizat.
Tehnologiile propuse de Intel, Scalable SGX și TDX, nu sunt vulnerabile la acest atac, deoarece verificările necesare sunt prezente din start. Tehnologia clasică Intel SGX, care în 2021 a fost clasată de Intel ca fiind învechită, este parțial vulnerabilă la atac (similar cu atacul MemBuster cunoscut anterior, atacatorul poate analiza accesările la memoria criptată, adică este posibilă doar citirea textului criptat, dar nu și rescrierea acestuia). Testarea extensiilor CCA (Confidential Compute Architecture) în procesoarele ARM nu a fost efectuată.
Se raportează suplimentar o altă vulnerabilitate legată de AMD SEV-SNP. Vulnerabilitatea a fost identificată în fork-ul AMD al emulatorului QEMU, destinat rularii mașini virtuale cu SEV-SNP. Problema permite administratorului mediului gazdă să obțină acces root la sistemele găzduite prin manipularea tabelelor ACPI. Vulnerabilitatea este cauzată de faptul că, la încărcarea sistemului găzduit, se efectuează o verificare a integrității nucleului Linux, a RAM-disk-ului inițial și a parametrilor nucleului, dar tabelele ACPI nu sunt luate în considerare, prin intermediul cărora hipervizorul poate introduce un cod AML (ACPI Machine Language) special conceput, destinat executării în mediu gazduit. Se afirmă că problema nu este specifică pentru QEMU și se manifestă în toate hipervizoarele și emulatoarele, deoarece nucleul Linux se bazează pe orice date ACPI primite de la hipervizor.


Sursa: opennet.ro
