Meltdown klaseko ahultasun bat aurkitu da Zen+ eta Zen 2 mikroarkitekturan oinarritutako AMD prozesadoreetan.

Dresdengo Unibertsitate Teknikoko ikertzaile talde batek ahultasun bat (CVE-2020-12965) identifikatu du Zen+ eta Zen 2 mikroarkitekturan oinarritutako AMD prozesadoreetan, Meltdown klaseko erasoa ahalbidetzen duena. Hasiera batean AMD Zen+ eta Zen 2 prozesadoreak Meltdown ahultasuna jasan ez zuela uste zen, baina ikertzaileek helbide birtual ez-kanonikoak erabiltzean babestutako memoria-eremuetarako sarbide espekulatiboa eragiten duen ezaugarri bat identifikatu zuten.

AMD64 arkitekturak helbide birtualaren lehen 48 bitak soilik erabiltzen ditu eta gainerako 16 bitak alde batera uzten ditu. Zehazten da 48tik 63ra bitek beti kopiatu behar dutela 47 bitaren balioa (zeinu-bit luzapena). Baldintza hau urratzen bada eta goiko biten balio arbitrarioak dituen helbide batera sartzeko saiakera egiten bada, prozesadoreak salbuespen bat sortzen du. Goiko bitak behin eta berriz betetzeak erabilgarri dagoen helbide-espazioa bi bloketan banatzea eragiten du: beheko bat (0-tik 00007FFFFFFFFFFFFF-era), goiko bitak 800000000000-ra ezarrita daudenean, eta goiko bat (FFFFFF1-tik FFFFFFFFFFFFFF-era), zeinetan. goiko bit guztiak XNUMXean ezarrita daude.

Zehaztutako blokeetan sartzen diren helbideei kanoniko deritze, eta goiko biten eduki arbitrarioa duten helbide okerrek ez-kanonikoak. Helbide kanonikoen beheko tartea prozesuko datuetarako esleitzen da normalean, eta goiko barrutia nukleoko datuetarako erabiltzen da (helbide horietarako sarbidea erabiltzaile-espaziotik blokeatzen da pribilegioen bereizketa mailan).

Meltdown ahultasun klasikoa jarraibideen exekuzio espekulatiboan, prozesadoreak datu pribatuen eremu batera sar dezakeela eta, ondoren, emaitza baztertu dezake, ezarritako pribilegioek erabiltzailearen prozesutik sarbide hori debekatzen dutelako. Programan, espekulatiboki exekutatutako blokea kode nagusitik bereizten da baldintzazko adar batek, baldintza errealetan beti su egiten duena, baina baldintzapeko adierazpenak prozesadoreak prebentziozko exekuzioan ezagutzen ez duen balio kalkulatua erabiltzen duelako. kodea, adar-aukera guztiak espekulatiboki egiten dira.

Espekulatiboki exekutatutako eragiketek normalean exekutatzen diren instrukzioen cache bera erabiltzen dutenez, exekuzio espekulatiboan posible da memoria pribatu batean bit indibidualen edukia islatzen duten markatzaileak ezartzea cachean, eta, ondoren, normalean exekutatutako kodean, denboraren bidez haien balioa zehazteko. cachean gordetako eta cachean ez dauden datuetarako sarbideak aztertzea.

AMD Zen+ eta Zen 2 prozesadoreei eragiten dien ahultasun berriaren ezaugarri bat da PUZek helbide ez-kanoniko baliogabeak erabiliz memoriara sartzen diren irakurketa- eta idazketa-eragiketa espekulatiboak baimentzen dituztela, goiko 16 bit-ak alde batera utzita. Horrela, kode espekulatiboaren exekuzioan, prozesadoreak beti beheko 48 bitak bakarrik erabiltzen ditu, eta helbidearen baliozkotasuna bereizita egiaztatzen da. Baldin eta, kanonikoa ez den helbide birtual bat itzulpen asoziatiboko buffer-eko (TLB) helbide fisiko batera itzultzean, bat-etortze bat detektatzen bada helbidearen zati kanonikoan, orduan karga espekulatiboak eragiketak balioa itzuliko du edukia kontuan hartu gabe. goiko 16 biten, harien arteko memoria partekatzea saihesteko aukera ematen duena. Ondoren, eragiketa baliogabetzat joko da eta baztertu egingo da, baina memoriarako sarbidea amaituko da eta datuak cachean amaituko dira.

Esperimentuan zehar, FLUSH+RELOAD cachearen edukia zehazteko teknika erabiliz, ikertzaileek ezkutuko datuen transferentziarako kanal bat antolatu ahal izan zuten segundoko 125 byte-ko abiaduran. AMD txipez gain, arazoak Meltdown ahultasun klasikoaren jasaten duten Intel prozesadore guztiei ere eragiten die. Meltdown-en erasoak blokeatzen laguntzen duten teknika berdinak erabil daitezke eraso mota berri honen aurka babesteko, LFENCE argibideak erabiltzea adibidez. Esate baterako, Intel prozesadore batek Meltdown-en aurkako hardware babesa badu edo sistemak software babesa gaituta badu, konfigurazio horiek ez dira erasoko aldaera berria jasan.

Aldi berean, ikertzaileek adierazi dute, Intel prozesadoreekin alderatuta, AMD prozesadoreen arkitekturak benetako erasoak egiteko aukera mugatzen duela, baina ez duela baztertzen metodo berri bat erabiltzea beste mikroarkitekturako eraso batzuekin batera erabiltzea haien eraginkortasuna areagotzeko. Bereziki, proposatutako erasoak ez du onartzen nukleoaren eta beste prozesu batzuen memoria-eremuen edukia zehazten, baina memoria birtualeko espazio berean exekutatzen den programa bereko beste hari batzuetara sartzeko aukerara mugatzen da.

Ahultasunik gabeko programa batek bere harietara sarbidea izateko gaitasuna duenez, ikuspuntu praktikotik metodoa interesgarria da sandbox isolamendua saihesteko eta hirugarrenen exekuzioa ahalbidetzen duten programetan beste hari batzuen lanarekin interferentziak antolatzeko. kodea, hala nola web arakatzaileak eta JIT motorrak . Ikertzaileek SpiderMonkey JavaScript motorra eta Linux nukleoa erasotzeko duten ahultasuna aztertu zuten, baina ez zuten aurkitu eraso bat egiteko erabil daitezkeen kode-sekuentzia ahulak. Aplikazioak erasotzeaz gain, metodoa prozesadorearen elementu mikroarkitekturalen artean datu-fluxu onartezinak behartzeko ere erabil daiteke beste ahultasun mikroarkitektural batzuk ustiatzen dituen bitartean.

Iturria: opennet.ru

Gehitu iruzkin berria