Nova inačica ranljivosti Spectre in Meltdown prinaša nove upočasnitve procesorjev

Matej Huš

22. maj 2018 ob 22:14:41

Intel in Microsoft ter Google so sporočili, da sta odkrila novo varianto ranljivosti Spectre in Meltdown, ki je v začetku leta pošteno zatresla procesorski trg in povzročila ogromno nadur inženirjev in programerjev. Tokratna različica je dobila ime Varianta 4. Četrta različica ponuja še eno, novo možnost za nepooblaščeno črpanje starih informacij iz pomnilnika. Ranljivi so Intelovi, AMD-jevi in nekaj ARM-jevih procesorjev.

Intel novo ranljivost označuje kot srednje nevarno, saj je dobršen del že zakrpan s popravki za pretekle verzije. Vseeno pa pridejo še novi popravki. Da so odkrili novo luknjo, v resnici ni tako nenavadno, nekateri strokovnjaki pa so to že napovedali. Ko so namreč razkrili Spectre in Meltdown, se je odprla nova smer raziskav in različni strokovnjaki ter raziskovalci so začeli razstavljati procesorje in kodo. Po pričakovanjih sedaj na plan prihajajo dodatne nedoslednosti, ki pa jih k sreči originalni popravki uspešno krpajo.

Uradno ime nove ranljivost se glasi Speculative Store Bypass (SSB). V osnovi gre za enak razlog. Procesorji se na mikroarhitekturni ravni vedejo drugače kakor na arhitekturni. Srž problema je špekulativno izvajanje ukazov, ki ji procesor poizkusi izvesti še preden, se izvedejo ustrezna preverjanja, ali imamo do njih sploh dostop. Na ta način se lahko prihrani precej časa, če pa dostopa nimamo, procesor zavrže rezultate. Problem pa je, da pri tem spremeni vsebino registrov in predpomnilnika, kar je mogoče spremljati - podatke iz predpomnilnika lahko beremo hitreje kakor bolj oddaljene podatke. SBB deluje, če imamo v kodi počasen ukaz, ki shrani podatke na neko mesto v pomnilniku, pri čemer je to mesto odvisno od predhodnih izračunov. Naslednji korak pa je hitro branje s tega istega mesta, a je ukaz sedaj napisan tako, da ga procesor izvede takoj. Ker zaradi špekulativnega izvajanja ta korak pride na vrsto pred pisanjem, procesor prebere napačne (stare) podatke. Seveda to potem ugotovi in rezultat zavrže, a vsebina registrov in predpomnilnika se je zaradi izvedbe ukaza spremenila, kar lahko zaznamo. K sreči je napako mogoče izrabiti le, če lahko poganjamo kodo, torej moramo sistem nekako okužiti že prej ali pa imeti legalen dostop do njega (recimo napad iz virtualnih strojev ali JavaScripta).

Intel je obljubil, da bo pripravil še dodatne popravke za Varianto 4. Testi beta popravkov so pokazali, da ti hitrost procesorjev znižajo za 2-8 odstotkov. Poleg omenjene ranljivosti obstaja še sedem novih podobnih lukenj. Eno (varianta 3A) je odkril ARM in jo je zelo težko izrabiti, o preostalih šestih pa še ni javnih podatkov.