Ranjivost u Intelovim procesorima dovodi do curenja podataka putem kanala trećih strana

Skupina istraživača s kineskih i američkih sveučilišta identificirala je novu ranjivost u Intelovim procesorima koja dovodi do curenja informacija trećih strana o rezultatu spekulativnih operacija, što se može koristiti, primjerice, za organiziranje skrivenog komunikacijskog kanala između procesa ili identificirati curenja tijekom Meltdown napada.

Suština ranjivosti je da promjena u registru EFLAGS procesora koja se javlja kao rezultat spekulativnog izvršavanja instrukcija utječe na naknadno vrijeme izvršenja JCC instrukcija (skok kada su ispunjeni navedeni uvjeti). Spekulativne operacije se ne dovršavaju i rezultat se odbacuje, ali se odbačena EFLAGS promjena može odrediti analizom vremena izvršenja JCC instrukcija. Operacije usporedbe izvedene u spekulativnom načinu prije prijelaza, ako su uspješne, rezultiraju malim kašnjenjem koje se može izmjeriti i koristiti kao znak za odabir sadržaja.

Ranjivost u Intelovim procesorima dovodi do curenja podataka putem kanala trećih strana

Za razliku od drugih sličnih napada na bočnim kanalima, nova metoda ne analizira promjene u vremenu pristupa predmemoriranim i nekeširanim podacima i ne zahtijeva stupanj za resetiranje EFLAGS registra u početno stanje, što otežava otkrivanje i blokiranje napada. Kao demonstraciju, istraživači su implementirali varijantu napada Meltdown, koristeći novu metodu za dobivanje informacija o rezultatu spekulativne operacije. Djelovanje metode za organiziranje curenja informacija tijekom napada Meltdown uspješno je demonstrirano na sustavima s Intel Core i7-6700 i i7-7700 CPU-om u okruženju s Ubuntu 22.04 i Linux kernelom 5.15. Na sustavu s procesorom Intel i9-10980XE napad je samo djelomično izveden.

Ranjivost Meltdown temelji se na činjenici da tijekom spekulativnog izvršavanja instrukcija procesor može pristupiti privatnom području podataka i zatim odbaciti rezultat jer postavljene privilegije zabranjuju takav pristup korisničkom procesu. U programu je spekulativno izvedeni blok odvojen od glavnog koda uvjetnom granom, koja se u stvarnim uvjetima uvijek aktivira, ali zbog činjenice da uvjetna naredba koristi izračunatu vrijednost koju procesor ne zna tijekom preventivnog izvođenja koda, sve opcije grana provode se špekulativno.

U klasičnoj verziji Meltdowna, budući da se ista predmemorija koristi za spekulativno izvršene operacije kao i za normalno izvršene instrukcije, moguće je tijekom spekulativnog izvođenja postaviti markere u predmemoriju koji odražavaju sadržaj pojedinačnih bitova u zatvorenom memorijskom području, a zatim utvrditi u normalno izvršenom kodu njihovo značenje analizom vremena pristupa predmemoriranim i nekeširanim podacima. Nova varijanta koristi promjenu u registru EFLAGS kao marker curenja. U demonstraciji prikrivenog kanala, jedan je proces modulirao prenesene podatke kako bi stvorio uvjete za promjenu sadržaja EFLAGS registra, a drugi je proces analizirao promjenu u vremenu izvršenja JCC instrukcije kako bi se ponovno stvorili podaci koje je odašiljao prvi proces.

Izvor: opennet.ru

Dodajte komentar