Ranljivost v procesorjih Intel, ki vodi do uhajanja podatkov prek kanalov tretjih oseb

Skupina raziskovalcev s kitajskih in ameriških univerz je identificirala novo ranljivost v procesorjih Intel, ki vodi do uhajanja informacij tretjim osebam o rezultatu špekulativnih operacij, ki se lahko uporabijo na primer za organizacijo skritega komunikacijskega kanala med procesi oz. prepoznati puščanje med napadi Meltdown.

Bistvo ranljivosti je v tem, da sprememba v registru procesorja EFLAGS, ki nastane kot posledica špekulativnega izvajanja ukazov, vpliva na poznejši čas izvajanja ukazov JCC (skok, ko so izpolnjeni določeni pogoji). Špekulativne operacije se ne dokončajo in rezultat se zavrže, vendar je zavrženo spremembo EFLAGS mogoče določiti z analizo časa izvajanja navodil JCC. Operacije primerjave, izvedene v špekulativnem načinu pred prehodom, če so uspešne, povzročijo majhno zakasnitev, ki jo je mogoče izmeriti in uporabiti kot znak za izbiro vsebine.

Ranljivost v procesorjih Intel, ki vodi do uhajanja podatkov prek kanalov tretjih oseb

Za razliko od drugih podobnih stranskih kanalskih napadov nova metoda ne analizira sprememb v času dostopa do predpomnjenih in nepredpomnjenih podatkov in ne zahteva stopnje za ponastavitev registra EFLAGS v začetno stanje, zaradi česar je težko zaznati in blokirati napad. Kot predstavitev so raziskovalci izvedli različico napada Meltdown z uporabo nove metode za pridobivanje informacij o rezultatu špekulativne operacije. Delovanje metode za organiziranje uhajanja informacij med napadom Meltdown je bilo uspešno prikazano na sistemih s procesorjem Intel Core i7-6700 in i7-7700 v okolju z Ubuntu 22.04 in jedrom Linux 5.15. Na sistemu s procesorjem Intel i9-10980XE je bil napad izveden le delno.

Ranljivost Meltdown temelji na dejstvu, da lahko procesor med špekulativnim izvajanjem navodil dostopa do zasebnega podatkovnega območja in nato zavrže rezultat, ker nastavljeni privilegiji prepovedujejo tak dostop uporabnikovemu procesu. V programu je špekulativno izveden blok ločen od glavne kode s pogojno vejo, ki se v realnih pogojih vedno sproži, vendar zaradi dejstva, da pogojni stavek uporablja izračunano vrednost, ki je procesor ne pozna med preventivnim izvajanjem kodo, se vse možnosti podružnic izvajajo špekulativno.

Ker se v klasični različici Meltdown za špekulativno izvedene operacije uporablja isti predpomnilnik kot za običajno izvedena navodila, je mogoče med špekulativnim izvajanjem v predpomnilnik nastaviti oznake, ki odražajo vsebino posameznih bitov v zaprtem pomnilniškem območju, in nato v običajno izvajani kodi določi njihov pomen z analizo dostopnega časa do predpomnjenih in nepredpomnjenih podatkov. Nova različica uporablja spremembo v registru EFLAGS kot označevalec uhajanja. V predstavitvi prikritega kanala je en proces moduliral prenesene podatke, da bi ustvaril pogoje za spreminjanje vsebine registra EFLAGS, drugi proces pa je analiziral spremembo časa izvajanja ukaza JCC za ponovno ustvarjanje podatkov, ki jih je posredoval prvi proces.

Vir: opennet.ru

Dodaj komentar