Varnarleysi í bráðnunarflokki hefur fundist í AMD örgjörvum byggðum á Zen+ og Zen 2 örarkitektúrum

Hópur vísindamanna frá Tækniháskólanum í Dresden hefur greint varnarleysi (CVE-2020-12965) í AMD örgjörvum byggðum á Zen+ og Zen 2 örarkitektúrum, sem gerir árás í Meltdown class. Upphaflega var gert ráð fyrir að AMD Zen+ og Zen 2 örgjörvar séu ekki viðkvæmir fyrir Meltdown varnarleysinu, en vísindamenn fundu eiginleika sem leiðir til íhugandi aðgangs að vernduðum minnissvæðum þegar notuð eru sýndarvistföng sem ekki eru kanónísk.

AMD64 arkitektúrinn notar aðeins fyrstu 48 bitana af sýndarvistfanginu og hunsar þá 16 bita sem eftir eru. Það er tilgreint að bitar 48 til 63 verða alltaf að afrita gildi bita 47 (merkibitaframlenging). Ef þetta skilyrði er brotið og reynt er að fá aðgang að heimilisfangi með handahófskenndum gildum efri bitanna, myndar örgjörvinn undantekning. Endurtekin útfylling á efri bitana veldur því að tiltæku vistfangarými er skipt í tvo kubba - neðri (frá 0 til 00007FFFFFFFFFFFFF), þar sem efri bitarnir eru stilltir á 800000000000, og efri (frá FFFF1 til FFFFFFFFFFFFFFFF), þar sem allir efri bitarnir eru stilltir á XNUMX.

Heimilisföng sem falla innan tilgreindra blokka eru kölluð kanónísk og röng heimilisföng með handahófskenndu innihaldi efri bitanna eru kölluð ekki kanónísk. Neðra svið kanónískra vistfönga er venjulega úthlutað fyrir vinnslugögn og efra svið er notað fyrir kjarnagögn (aðgangur að þessum vistföngum frá notendarými er lokaður á réttindaaðskilnaðarstigi).

Hið klassíska Meltdown varnarleysi byggist á því að meðan á íhugandi framkvæmd leiðbeininga stendur getur vinnsluaðilinn fengið aðgang að einkagagnasvæði og síðan hent niðurstöðunni vegna þess að uppsett réttindi banna slíkan aðgang frá ferli notandans. Í forritinu er kubburinn sem er keyrður í spákaupmennsku aðskilinn frá aðalkóðanum með skilyrtri grein sem kviknar alltaf við raunverulegar aðstæður, en vegna þess að skilyrta setningin notar reiknað gildi sem örgjörvinn þekkir ekki við forvirka framkvæmd á kóðann, allir útibúsvalkostir eru framkvæmdir í spákaupmennsku.

Þar sem spákaupmenntaðar aðgerðir nota sama skyndiminni og venjulega framkvæmdar leiðbeiningar, er mögulegt við íhugandi framkvæmd að stilla merki í skyndiminni sem endurspegla innihald einstakra bita á einkaminni svæði, og síðan í venjulega keyrðum kóða til að ákvarða gildi þeirra með tímasetningu greiningaraðgangi að gögnum sem eru í skyndiminni og ekki í skyndiminni.

Það sem einkennir nýja varnarleysið sem hefur áhrif á AMD Zen+ og Zen 2 örgjörva er að örgjörvarnir leyfa íhugandi les- og skrifaðgerðir sem fá aðgang að minni með því að nota ógild netföng sem ekki eru kanónísk, einfaldlega hunsa efri 16 bitana. Þannig, meðan á íhugandi kóða keyrt er, notar örgjörvinn alltaf aðeins lægstu 48 bitana og gildi heimilisfangsins er athugað sérstaklega. Ef samsvörun greinist í kanónískum hluta vistfangsins, þegar þú þýðir að sýndarvistfang sem er ekki kanónískt yfir á líkamlegt heimilisfang í tengda þýðingarbuffi (TLB), þá mun íhugandi hleðsluaðgerð skila gildinu án þess að taka tillit til innihaldsins af efri 16 bitunum, sem gerir kleift að komast framhjá minnisdeilingu milli þráða. Í kjölfarið verður aðgerðin talin ógild og henni hent, en minnisaðganginum er lokið og gögnin lenda í skyndiminni.

Meðan á tilrauninni stóð, með því að nota tæknina til að ákvarða innihald FLUSH+RELOAD skyndiminni, gátu rannsakendur skipulagt rás fyrir falinn gagnaflutning á hraðanum 125 bæti á sekúndu. Auk AMD flísa hefur vandamálið einnig áhrif á alla Intel örgjörva, sem eru viðkvæmir fyrir klassískum Meltdown varnarleysi. Sömu aðferðir sem hjálpa til við að loka á Meltdown árásir, eins og að nota LFENCE leiðbeiningar, er hægt að nota til að verjast þessari nýju tegund af árás. Til dæmis, ef Intel örgjörvi inniheldur vélbúnaðarvörn gegn Meltdown eða kerfið er með hugbúnaðarvörn virka, þá eru slíkar stillingar ekki næmar fyrir nýja árásarafbrigðið.

Á sama tíma taka vísindamennirnir fram að miðað við Intel örgjörva takmarkar arkitektúr AMD örgjörva möguleikann á að framkvæma raunverulegar árásir, en útilokar ekki notkun nýrrar aðferðar ásamt öðrum örarkitektúrárásum til að auka skilvirkni þeirra. Sérstaklega gerir fyrirhuguð árás ekki kleift að ákvarða innihald minnisvæða kjarnans og annarra ferla, heldur takmarkast við möguleikann á að fá aðgang að öðrum þráðum sama forrits sem keyra í sama sýndarminni.

Þar sem forrit án veikleika hefur getu til að fá aðgang að þráðum sínum, frá hagnýtu sjónarhorni er aðferðin áhugaverð til að komast framhjá einangrun sandkassa og skipuleggja truflun á vinnu annarra þráða í forritum sem leyfa keyrslu þriðja aðila kóða, svo sem vafra og JIT vélar. Rannsakendur skoðuðu varnarleysi SpiderMonkey JavaScript vélarinnar og Linux kjarna til að ráðast á, en fundu ekki viðkvæmar kóðaraðir sem hægt væri að nota til að framkvæma árás. Auk þess að ráðast á forrit er aðferðin einnig hægt að nota til að þvinga fram óviðunandi gagnaflæði á milli örarkitektúrlegra þátta örgjörvans á sama tíma og aðrir örarkitektúrfræðilegir veikleika eru nýttir.

Heimild: opennet.ru

Bæta við athugasemd