Compania Intel actualizarea microcodului, care elimină (CVE-2019-14607), prin manipularea mecanismului de gestionare dinamică a tensiunii și frecvenței din CPU, inițierea deteriorării conținutului celulelor de date, inclusiv în zonele utilizate pentru calcul în enclavele izolate Intel SGX. Atacul a fost denumit Plundervolt și permite potențial un utilizator local să își crească privilegiile în sistem, să provoace o indisponibilitate a serviciului și să obțină acces la datele confidențiale.
Atacul reprezintă un pericol doar în contextul manipulărilor cu calculele din enclavele SGX, deoarece pentru a fi efectuat necesită existența drepturilor root în sistem. În cel mai simplu caz, atacatorul poate provoca distorsiuni în informațiile procesate în enclave, dar în scenarii mai complexe nu este exclusă posibilitatea recreării cheilor de criptare confidențiale stocate în enclave, utilizate pentru criptare folosind algoritmi RSA-CRT și AES-NI. Tehnica poate fi folosită, de asemenea, pentru a genera erori în algoritmi inițial corecți pentru a provoca apariția vulnerabilităților în gestionarea memoriei, de exemplu, pentru a organiza accesul la zone dincolo de bufferul alocat.
Prototipul codului pentru efectuarea atacului de pe GitHub
Esenta metodei constă în crearea condițiilor pentru apariția distorsiunilor neprevăzute ale datelor în timpul calculelor în SGX, de care nu protejează utilizarea criptării și autentificării memoriei în enclave. Pentru a provoca distorsiuni, s-a constatat că se pot utiliza interfețele software standard pentru gestionarea frecvenței și tensiunii, aplicate de obicei pentru reducerea consumului de energie în timpul inactivității sistemului și activarea performanței maxime în timpul sarcinilor intensive. Caracteristicile frecvenței și tensiunii acoperă întreaga cip, afectând și execuția calculelor în enclavele izolate.
Prin modificarea tensiunii, se pot crea condiții în care sarcina nu este suficientă pentru regenerarea celulei de memorie din interiorul CPU-ului, iar valoarea acesteia se schimbă. Principala diferență față de atac RowHammer permite modificarea conținutului unor biți individuali în memoria DRAM prin citirea repetată a datelor din celulele adiacente, în timp ce Plundervolt permite modificarea biților din interiorul CPU, atunci când datele sunt deja încărcate din memorie pentru executarea calculelor. Această caracteristică permite ocolirea mecanismelor de control al integrității și criptării datelor în memorie implementate de SGX, deoarece valorile din memorie rămân corecte, dar pot fi distorsionate în timpul operațiunilor asupra lor, înainte ca rezultatul să fie scris în memorie.
Dacă acestă valoare modificată este utilizată în procesul de înmulțire în cadrul criptării, atunci va rezulta un text criptat incorect. Având posibilitatea de a apela managerul SGX pentru a cripta datele sale, un atacator poate genera erori pentru a acumula statistici referitoare la modificările textului criptat la ieșire și, în câteva minute, poate recupera valoarea cheii stocate în enclava. Textul original la intrare și textul criptat corect la ieșire sunt cunoscute, cheia nu se modifică, iar ieșirea unui text criptat incorect indică distorsionarea unui bit în valoarea sa opusă.
Analizând perechile de valori corecte și distorsionate ale textelor criptate acumulate în urma diferitelor erori, prin metode de analiză diferențială a erorilor (DFA, ) se poate cheile probabile utilizate pentru criptarea simetrică AES, iar apoi, analizând intersecțiile cheilor în diferite seturi, se poate determina cheia căutată.

Această problemă afectează diverse modele de procesoare Intel, inclusiv CPU Intel Core din generațiile 6
până la 10, precum și generațiile 5 și 6 Xeon E3, prima și a doua generație Intel Xeon Scalable, Xeon D,
Xeon W și Xeon E.
Reamintim că tehnologia SGX () a apărut în procesoarele Intel Core din a șasea generație (Skylake) și o serie de instrucțiuni care permit aplicațiilor la nivel de utilizator să acceseze zone închise de memorie — enclave, al căror conținut nu poate fi citit sau modificat nici măcar de nucleu și codul executat în modurile ring0, SMM și VMM. Trecerea controlului către codul din enclave nu este posibilă prin funcții tradiționale de tranziție și manipulări cu registre și stive — pentru a transfera controlul în enclave se folosește o instrucțiune nou creată, care efectuează o verificare a autorizațiilor. În același timp, codul plasat în enclave poate aplica metode clasice de apel pentru a accesa funcțiile din interiorul enclavei și o instrucțiune specială pentru a apela funcții externe. Pentru a proteja împotriva atacurilor hardware, cum ar fi conectarea la modulul DRAM, se aplică criptarea memoriei enclavei.
Sursa: opennet.ro
