Vulnerabilitatea procesoarelor AMD care vă permite să ocoliți mecanismul de protecție SEV (Secure Encrypted Virtualization)

Cercetătorii de la Centrul Helmholtz pentru Securitatea Informației (CISPA) au publicat o nouă metodă de atac CacheWarp pentru a compromite mecanismul de securitate AMD SEV (Secure Encrypted Virtualization) utilizat în sistemele de virtualizare pentru a proteja mașinile virtuale de interferența hipervizorului sau a administratorului de sistem gazdă. Metoda propusă permite unui atacator cu acces la hypervisor să execute cod de la terți și să escaladeze privilegiile într-o mașină virtuală protejată folosind AMD SEV.

Atacul se bazează pe exploatarea unei vulnerabilități (CVE-2023-20592) cauzată de funcționarea incorectă a cache-ului în timpul execuției instrucțiunii procesorului INVD, care poate fi folosită pentru a obține nepotrivirea datelor în memorie și cache și a mecanismelor de ocolire pentru întreținerea mașinii virtuale. integritatea memoriei implementată pe baza extensiilor SEV-ES și SEV-SNP. Vulnerabilitatea afectează procesoarele AMD EPYC de la prima până la a treia generație.

Pentru procesoarele AMD EPYC de a treia generație (Zen 3), problema este rezolvată în actualizarea microcodului din noiembrie lansată ieri de AMD (remedierea nu duce la nicio degradare a performanței). Pentru prima și a doua generație de AMD EPYC (Zen 1 și Zen 2), protecția nu este asigurată, deoarece aceste procesoare nu acceptă extensia SEV-SNP, care asigură controlul integrității mașinilor virtuale. A patra generație de procesoare AMD AMD EPYC „Genoa” bazate pe microarhitectura „Zen 4” nu este vulnerabilă.

Tehnologia AMD SEV este utilizată pentru izolarea mașinilor virtuale de către furnizorii de cloud, cum ar fi Amazon Web Services (AWS), Google Cloud, Microsoft Azure și Oracle Compute Infrastructure (OCI). Protecția AMD SEV este implementată prin criptarea la nivel hardware a memoriei mașinii virtuale. În plus, extensia SEV-ES (Stat Encrypted) protejează registrele CPU. Doar sistemul oaspete curent are acces la datele decriptate, iar alte mașini virtuale și hypervisorul, atunci când încearcă să acceseze această memorie, primesc un set criptat de date.

A treia generație de procesoare AMD EPYC a introdus o extensie suplimentară, SEV-SNP (Secure Nested Paging), care asigură funcționarea în siguranță a tabelelor de pagini de memorie imbricate. Pe lângă criptarea generală a memoriei și izolarea registrului, SEV-SNP implementează măsuri suplimentare pentru a proteja integritatea memoriei prin prevenirea modificărilor la VM de către hypervisor. Cheile de criptare sunt gestionate pe partea unui procesor separat PSP (Platform Security Processor) încorporat în cip, implementat pe baza arhitecturii ARM.

Esența metodei de atac propusă este utilizarea instrucțiunii INVD pentru a invalida blocurile (liniile) din memoria cache a paginilor murdare fără a descărca datele acumulate în cache în memorie (rescriere). Astfel, metoda vă permite să evacuați datele modificate din cache fără a modifica starea memoriei. Pentru a efectua un atac, se propune utilizarea excepțiilor software (injectare de erori) pentru a întrerupe funcționarea mașinii virtuale în două locuri: în primul rând, atacatorul apelează instrucțiunea „wbnoinvd” pentru a reseta toate operațiunile de scriere în memorie acumulate în memoria cache și, în al doilea rând, apelează instrucțiunea „invd” pentru a returna operațiunile de scriere care nu sunt reflectate în memorie la starea veche.

Pentru a verifica sistemele dumneavoastră pentru vulnerabilități, a fost publicat un prototip de exploatare care vă permite să inserați o excepție într-o mașină virtuală protejată prin AMD SEV și să anulați modificările din VM care nu au fost resetate în memorie. Rollback-ul unei modificări poate fi folosit pentru a modifica fluxul unui program prin returnarea unei adrese de retur veche pe stivă sau pentru a utiliza parametrii de conectare ai unei sesiuni vechi care a fost autentificată anterior prin returnarea unei valori de atribut de autentificare.

De exemplu, cercetătorii au demonstrat posibilitatea utilizării metodei CacheWarp pentru a efectua un atac Bellcore asupra implementării algoritmului RSA-CRT în biblioteca ipp-crypto, ceea ce a făcut posibilă recuperarea cheii private prin înlocuirea erorilor la calcularea unui cod digital. semnătură. De asemenea, arată cum puteți modifica parametrii de verificare a sesiunii în OpenSSH atunci când vă conectați de la distanță la un sistem invitat și apoi modificați starea de verificare când rulați utilitarul sudo pentru a obține drepturi de root în Ubuntu 20.04. Exploita-ul a fost testat pe sisteme cu procesoare AMD EPYC 7252, 7313P și 7443.

Sursa: opennet.ru

Adauga un comentariu