Kompania Intel përditësim i mikrocode-it që heq (CVE-2019-14607), përmes manipulimeve me mekanizmin e menaxhimit dinamik të tensionit dhe frekuencës në CPU për të iniciuar dëmtimin e përmbajtjes së qelizave me të dhëna, duke përfshirë zonat e përdorura gjatë llogaritjeve në enklavat e izoluar Intel SGX. Sulmi mori emrin Plundervolt dhe potencialisht lejon një përdorues lokal të arrijë rritjen e privilegjeve në sistem, të shkaktojë një dështim të shërbimit dhe të fitojë qasje në të dhëna private.
Sulmi paraqet rrezik vetëm në kontekstin e manipulimeve me llogaritjet në enklavat SGX, pasi për zbatimin e tij kërkohet të ketë të drejta root në sistem. Në rastin më të thjeshtë, sulmuesi mund të arrijë deformime në informacionin e përpunuar në enklavë, por në skenarë më të ndërlikuar nuk përjashtohet mundësia e rikrijimit të çelësave të mbyllur të ruajtur në enklavë, të cilët përdoren për enkriptimin që përdor algoritmet RSA-CRT dhe AES-NI. Teknikat gjithashtu mund të aplikohen për të gjeneruar gabime në algoritma fillimisht të saktë për të provokuar shfaqjen e dobësi në punën me memorien, për shembull, për të organizuar qasje në një zonë jashtë tamponit të ndarë.
Prototipi i kodit për realizimin e sulmit në GitHub
Thelbi i metodës qëndron në krijimin e kushteve për shfaqjen e deformimeve të paparashikueshme të të dhënave gjatë llogaritjeve në SGX, të cilat nuk mbrohen nga përdorimi i enkriptimit dhe autentifikimit të memorjes në enklavë. Për të shkaktuar deformime, është e mundur të përdoren interface programore standarde për menaxhimin e frekuencës dhe tensionit, të cilat zakonisht përdoren për të reduktuar konsumin e energjisë gjatë periudhave të papunësisë dhe për të aktivizuar performancën maksimale gjatë kryerjes së punëve intensive. Karakteristikat e frekuencës dhe tensionit përfshijnë të gjithë çipin, duke ndikuar gjithashtu në kryerjen e llogaritjeve në enklavën e izoluar.
Duke ndryshuar tensionin, është e mundur të krijohen kushte ku ngarkesa është e pamjaftueshme për rigjenerimin e qelizës së memories brenda CPU-së, duke ndryshuar kështu vlerën e saj. Diferenca kyçe nga sulmi është ajo që RowHammer lejon të ndryshojë përmbajtjen e biteve individuale në memorjen DRAM, duke lexuar në mënyrë ciklike të dhënat nga qelizat përreth, ndërsa Plundervolt lejon ndryshimin e biteve brenda CPU, kur të dhënat tashmë janë ngarkuar nga memoria për të kryer llogaritjet. Ky veçori lejon kalimin e mekanizmave të kontrollit të integritetit dhe enkriptimit të të dhënave në memorje të përdorura në SGX, pasi vlerat në memorje mbeten të sakta, por mund të deformohen gjatë operacioneve me to, para se rezultati të shkruhet në memorje.
Nëse kjo vlerë e modifikuar përdoret gjatë procesit të shumëzimit në procesin e enkriptimit, atëherë rezultati do të japë një tekst të enkriptuar të gabuar. Duke pasur mundësinë të aksesojë menaxherin në SGX për të enkriptuar të dhënat e tij, sulmuesi mund, duke shkaktuar shkëputje, të grumbullojë statistika mbi ndryshimin e tekstit të enkriptuar në dalje dhe brenda disa minutash të rimarrë vlerën e çelësit të ruajtur në enklavë. Teksti origjinal në hyrje dhe teksti i enkriptuar korrekt në dalje janë të njohur, çelësi nuk ndryshon, dhe dalja e tekstit të enkriptuar të gabuar tregon deformimin e ndonjë bitoje në vlerën e kundërt.
Duke analizuar çiftet e akumuluara të vlerave të sakta dhe të deformuara të teksteve të enkriptuara në raste të ndryshme të shkëputjes, me ndihmën e metodave të analizës diferencuese të shkëputjes (DFA, ) mund të çelësat e mundshëm që përdoren për enkriptimin simetrik AES, dhe më pas, duke analizuar ndërprerjet e çelësave në grupe të ndryshme, të përcaktojë çelësin e kërkuar.

Modeli i procesorëve Intel është i prekur nga kjo problematikë, përfshirë CPU Intel Core nga brezi i 6-të deri në të 10-të, si dhe brezat e pestë dhe të gjashtë të Xeon E3, brezat e parë dhe të dytë të Intel Xeon Scalable, Xeon D,
Xeon W dhe Xeon E.
Kujtojmë se teknologjia SGX (
Zgjerimi i Gardës së Softueritofron serit e udhëzimeve që lejojnë aplikacioneve të nivelit përdorues të izolojnë zona të mbyllura të memories — enklavë, përmbajtja e të cilave nuk mund të lexohet dhe ndryshohet as nga bërthama dhe kodi që ekzekutohet në modalitetet ring0, SMM dhe VMM. Të kalosh kontrollin te kodi në enklavë nuk është e mundur me funksione tradicionale kalimi dhe manipulime me regjistrat dhe stekat — për ta kaluar kontrollin në enklavë përdoret një instrukcion i ri i krijuar posaçërisht që kryen një kontroll të privilegjeve. Në të njëjtën kohë, kodi i vendosur në enklavë mund të përdorë metoda klasike thirrjeje për të adresuar funksionet brenda enklavës dhe një instrukcion të veçantë për thirrjen e funksioneve të jashtme. Për të mbrojtur nga sulmet harduerike, siç është lidhja në modul DRAM, aplikohet enkriptimi i memories së enklavës.
Burimi: opennet.ru
