Tvrtka Intel ažuriranje mikrokoda koje uklanja (CVE-2019-14607), kroz manipulacije mehanizmom dinamičkog upravljanja naponom i frekvencijom u CPU-u inicirati oštećenje sadržaja ćelija s podacima, uključujući područja koja se koriste prilikom izračuna u izoliranim enclavima Intel SGX. Napad je nazvan Plundervolt i potencijalno omogućuje lokalnom korisniku da postigne povećanje privilegija u sustavu, izazove prekid usluge i dobije pristup povjerljivim podacima.
Napad predstavlja opasnost samo u kontekstu manipulacija s izračunima u enclavima SGX, budući da za provedbu zahtijeva prava root u sustavu. U najjednostavnijem slučaju, napadač može postići iskrivljenje informacija obrađenih u enclavu, no u složenijim scenarijima ne isključuje se mogućnost ponovnog stvaranja povjerljivih ključeva pohranjenih u enclavu, koji se koriste za šifriranje uz korištenje algoritama RSA-CRT i AES-NI. Tehnika se također može primjenjivati za generiranje grešaka u izvorno ispravnim algoritmima kako bi se izazvale ranjivosti tijekom rada s memorijom, primjerice, za organizaciju pristupa području izvan dodijeljenog bafera.
Prototip koda za provedbu napada na GitHubu
Bit metode je u stvaranju uvjeta za nastanak nepredviđenih iskrivljenja podataka tijekom izračuna u SGX-u, od kojih zaštita primjenom šifriranja i autentifikacije memorije u enclavu ne štiti. Za iskrivljenje se ispostavilo da se mogu koristiti standardni programski interfejsi za upravljanje frekvencijom i naponom, obično primjenjivani za smanjenje potrošnje energije tijekom mirovanja sustava i aktiviranje maksimalne izvedbe tijekom intenzivnog rada. Karakteristike frekvencije i napona pokrivaju cijeli čip, uključujući utjecaj na izvršavanje izračuna u izoliranom enclavu.
Mijenjanjem napona moguće je stvoriti uvjete u kojima je punjenje nedovoljno za regeneraciju ćelije memorije unutar CPU-a, što dovodi do promjene njezine vrijednosti. Ključna razlika od napada je ono što RowHammer omogućava da promijeni sadržaj pojedinih bitova u DRAM memoriji, čitajući podatke iz susjednih ćelija naizmjenično, dok Plundervolt omogućava promjenu bitova unutar CPU-a kada su podaci već učitani iz memorije za izvođenje proračuna. Ova osobina omogućava zaobilaženje mehanizama kontrole integriteta i enkripcije podataka u memoriji koji se koriste u SGX-u, budući da vrijednosti u memoriji ostaju ispravne, ali se mogu izobličiti tokom operacija s njima, prije nego što se rezultat zapiše u memoriju.
Ako se ova izmijenjena vrijednost koristi u procesu množenja tokom enkripcije, rezultat će biti netočan šifrogram. Imajući mogućnost pristupa handleru u SGX-u za enkripciju svojih podataka, napadač može izazvati greške i prikupiti statistiku o promjeni šifrograma na izlazu, i za nekoliko minuta rekonstruirati vrijednost ključa koji se čuva u enklavi. Izvorni tekst na ulazu i ispravni šifrogram na izlazu su poznati, ključ se ne mijenja, a izlaz netočnog šifrograma ukazuje na izobličenje nekog bita u suprotnu vrijednost.
Analizom prikupljenih parova ispravnih i izobličenih šifrograma tokom raznih grešaka, uz pomoć metoda diferencijalne analize grešaka (DFA, ) može se vjerojatni ključevi koji se koriste za simetričnu enkripciju AES-a, a zatim, analizirajući presijecanja ključeva u različitim skupovima, odrediti traženi ključ.

Različiti modeli Intel procesora su ranjivi, uključujući Intel Core CPU od 6
do 10 generacije, kao i petu i šestu generaciju Xeon E3, prvu i drugu generaciju Intel Xeon Scalable, Xeon D,
Xeon W i Xeon E.
Podsjetimo, tehnologija SGX () uvedena je u procesore Intel Core šeste generacije (Skylake) i serije uputa koje omogućuju aplikacijama na korisničkoj razini da rezerviraju zatvorena područja memorije - enklave, čiji sadržaj ne može biti pročitan ili izmijenjen čak ni od strane jezgre ili koda koji se izvršava u ring0, SMM i VMM režimima. Prenijeti upravljanje kodu unutar enklave nije moguće tradicionalnim funkcijama prijelaza i manipulacijama s registrima i stogom - za prijenos upravljanja u enklavu koristi se posebno stvorena nova instrukcija koja provodi provjeru ovlasti. U isto vrijeme, kod koji se nalazi u enklavi može koristiti klasične metode pozivanja za pristup funkcijama unutar enklave i posebnu instrukciju za pozivanje vanjskih funkcija. Za zaštitu od hardverskih napada, kao što je povezivanje s DRAM modulom, koristi se enkripcija memorije enklave.
Izvor: opennet.ru
