Inteli protsessorite haavatavus, mis põhjustab andmete lekkimist kolmandate osapoolte kanalite kaudu

Rühm Hiina ja Ameerika ülikoolide teadlasi on tuvastanud Inteli protsessorites uue haavatavuse, mis viib spekulatiivsete operatsioonide tulemuste kohta teabe lekkimiseni kolmandate osapoolte kanalite kaudu, mida saab kasutada näiteks varjatud suhtluskanali korraldamiseks. protsesside vahel või lekkeid Meltdowni rünnakute ajal.

Haavatavuse olemus seisneb selles, et käskude spekulatiivse täitmise tulemusena toimunud muutus EFLAGS protsessori registris mõjutab JCC käskude järgnevat täitmisaega (hüpe, kui määratud tingimused on täidetud). Spekulatiivseid operatsioone ei lõpetata ja tulemus visatakse ära, kuid kõrvalejäetud EFLAGS-i muudatust saab määrata JCC käskude täitmise aega analüüsides. Spekulatiivselt sooritatud hüppeeelsed võrdlustoimingud, kui võrdlus õnnestub, annavad väikese viivituse, mida saab mõõta ja kasutada sisu valiku funktsioonina.

Inteli protsessorite haavatavus, mis põhjustab andmete lekkimist kolmandate osapoolte kanalite kaudu

Erinevalt teistest sarnastest rünnakutest kolmandate osapoolte kanalite kaudu ei analüüsi uus meetod vahemällu salvestatud ja vahemällu salvestamata andmete juurdepääsuaja muutust ega nõua EFLAGS-registri algolekusse lähtestamise etappi, mis raskendab avastada ja blokeerida rünnak. Demonstratsioonina rakendasid teadlased Meltdowni rünnaku variandi, kasutades selles uut meetodit, et saada teavet spekulatiivse operatsiooni tulemuse kohta. Meetodi toimimist teabelekke korraldamiseks Meltdowni rünnaku ajal on edukalt demonstreeritud Intel Core i7-6700 ja i7-7700 protsessoritega süsteemides Ubuntu 22.04 ja Linux 5.15 tuumaga keskkonnas. Inteli i9-10980XE protsessoriga süsteemis õnnestus rünnak vaid osaliselt.

Meltdowni haavatavus põhineb asjaolul, et käskude spekulatiivse täitmise ajal pääseb protsessor ligi privaatsele andmealale ja seejärel tulemusest loobuma, kuna seatud privileegid keelavad sellise juurdepääsu kasutajaprotsessile. Spekulatiivselt teostatud plokk eraldatakse programmis põhikoodist tingimusliku hüppega, mis reaalsetes tingimustes alati käivitub, kuid tänu sellele, et tingimuslause kasutab arvutuslikku väärtust, mida protsessor ei tea ennetava koodi ajal. täitmisel, teostatakse kõik hargnemisvalikud spekulatiivselt.

Kuna Meltdowni klassikalises versioonis kasutatakse spekulatiivselt täidetavate toimingute jaoks sama vahemälu kui tavaliselt täidetavate käskude jaoks, on spekulatiivse täitmise ajal võimalik seada vahemällu markereid, mis kajastavad suletud mäluala üksikute bittide sisu ja seejärel tavaliselt käivitatavas koodis, et määrata nende tähendus vahemällu salvestatud ja vahemällu salvestamata andmetele juurdepääsu aja analüüsi kaudu. Uus variant kasutab lekke markerina muudatust registris EFLAGS. Varjatud kanali demos moduleeris üks protsess saadetavaid andmeid, et muuta EFLAGS-i registri sisu, ja teine ​​protsess sõelus JCC käsu täitmise aja muutust, et luua uuesti esimese protsessi saadetud andmed.

Allikas: opennet.ru

Lisa kommentaar