„Intel“ procesorių pažeidžiamumas, dėl kurio gali nutekėti duomenys per trečiųjų šalių kanalus

Grupė tyrėjų iš Kinijos ir Amerikos universitetų nustatė naują Intel procesorių pažeidžiamumą, dėl kurio trečiosios šalys nutekina informaciją apie spekuliacinių operacijų rezultatą, kuri gali būti panaudota, pavyzdžiui, norint organizuoti paslėptą komunikacijos kanalą tarp procesų arba nustatyti nutekėjimus per Meltdown atakas.

Pažeidžiamumo esmė yra ta, kad EFLAGS procesoriaus registro pasikeitimas, įvykęs dėl spekuliacinio komandų vykdymo, turi įtakos tolesniam JCC komandų vykdymo laikui (šuolis, kai įvykdomos nurodytos sąlygos). Spekuliacinės operacijos nebaigtos, o rezultatas atmetamas, tačiau atmestą EFLAGS pakeitimą galima nustatyti analizuojant JCC komandų vykdymo laiką. Palyginimo operacijos, atliktos spekuliaciniu režimu prieš perėjimą, jei sėkmingos, sukelia nedidelį delsą, kurią galima išmatuoti ir naudoti kaip ženklą renkantis turinį.

„Intel“ procesorių pažeidžiamumas, dėl kurio gali nutekėti duomenys per trečiųjų šalių kanalus

Skirtingai nuo kitų panašių šoninio kanalo atakų, naujasis metodas neanalizuoja prieigos prie talpykloje saugomų ir neišsaugotų duomenų laiko pokyčių ir nereikalauja etapo, kad būtų iš naujo nustatytas EFLAGS registras į pradinę būseną, o tai apsunkina atakos aptikimą ir blokavimą. Kaip demonstraciją, mokslininkai įgyvendino Meltdown atakos variantą, naudodami naują metodą informacijai apie spekuliacinės operacijos rezultatus gauti. Informacijos nutekėjimo organizavimo metodo veikimas Meltdown atakos metu buvo sėkmingai pademonstruotas sistemose su Intel Core i7-6700 ir i7-7700 CPU aplinkoje su Ubuntu 22.04 ir Linux branduoliu 5.15. Sistemoje su „Intel i9-10980XE“ procesoriumi ataka buvo įvykdyta tik iš dalies.

Meltdown pažeidžiamumas pagrįstas tuo, kad spekuliacinio instrukcijų vykdymo metu procesorius gali pasiekti privačią duomenų sritį ir atmesti rezultatą, nes nustatytos privilegijos draudžia tokią prieigą prie vartotojo proceso. Programoje spekuliatyviai vykdomas blokas nuo pagrindinio kodo atskiriamas sąlygine šaka, kuri realiomis sąlygomis visada suveikia, bet dėl ​​to, kad sąlyginiame sakinyje naudojama apskaičiuota reikšmė, kurios procesorius nežino prevencinio vykdymo metu. kodas, visi filialų pasirinkimai vykdomi spekuliaciniu būdu.

Klasikinėje Meltdown versijoje, kadangi spekuliatyviai vykdomoms operacijoms naudojama ta pati talpykla, kaip ir įprastai vykdomoms instrukcijoms, spekuliacinio vykdymo metu talpykloje galima nustatyti žymeklius, atspindinčius atskirų bitų turinį uždaroje atminties srityje, o tada Nustatykite įprastai vykdomame kode jų reikšmę analizuodami prieigos prie talpykloje saugomų ir neišsaugotų duomenų laiką. Naujajame variante kaip nuotėkio žymeklis naudojamas EFLAGS registro pakeitimas. Slaptojo kanalo demonstracijoje vienas procesas moduliavo perduodamus duomenis, kad būtų sudarytos sąlygos keisti EFLAGS registro turinį, o kitu procesu buvo analizuojamas JCC nurodymo atkurti pirmojo proceso perduotus duomenis vykdymo laiko pasikeitimas.

Šaltinis: opennet.ru

Добавить комментарий