Retbleed Intel eta AMD CPUen exekuzio mekanismo espekulatiboaren aurkako eraso berri bat da

Zuricheko ETH-ko ikertzaile talde batek PUZaren zeharkako trantsizioen exekuzio espekulatiboaren mekanismoaren aurkako eraso berri bat identifikatu du, zeinak nukleoaren memoriatik informazioa ateratzea edo makina birtualetatik ostalari sistemaren aurkako erasoa antolatzea ahalbidetzen duena. Ahuleziek Retbleed (CVE-2022-29900, CVE-2022-29901) izena dute eta Spectre-v2 erasoetatik hurbil daude. Desberdintasuna kode arbitrarioaren exekuzio espekulatiboaren antolaketari dagokio "ret" (itzulera) instrukzioa prozesatzen denean, zeinak pilatik salto egiteko helbidea lortzen du, "jmp" instrukzioa erabiliz zeharkako jauzi baten ordez, helbidea kargatuz. memoria edo CPU erregistro bat.

Erasotzaile batek trantsizio okerreko iragarpenerako baldintzak sor ditzake eta programaren exekuzio logikak ematen ez duen kode bloke baterako trantsizio espekulatibo espekulatibo bat antolatu. Azken finean, prozesadoreak zehaztuko du adar-iragarpena ez zegoela justifikatu eta eragiketa jatorrizko egoerara itzuliko du, baina exekuzio espekulatiboan prozesatutako datuak cachean eta mikroarkitektura-bufferetan amaituko dira. Oker exekutatutako bloke bat memoria sartzen bada, bere exekuzio espekulatiboak memoriatik irakurritako datuak partekatutako cachean gordetzea ekarriko du.

Espekulazio-eragiketen ondoren cachean geratzen diren datuak zehazteko, erasotzaileak alboko kanaleko teknikak erabil ditzake hondar datuak zehazteko, esate baterako, cachean gordetako eta cache gabeko datuetarako sarbide-denboretan izandako aldaketak aztertzea. Beste pribilegio-maila bateko eremuetako informazioa nahita ateratzeko (adibidez, nukleoaren memoriatik), "gadgets" erabiltzen dira - nukleoan dauden komandoen sekuentziak, memoriatik datuak espekulatiboki irakurtzeko egokiak, eragin ditzaketen kanpoko baldintzen arabera. erasotzailea.

Baldintzazko eta zeharkako jauzi-argibideak erabiltzen dituzten Spectre klaseko eraso klasikoen aurka babesteko, sistema eragile gehienek "retpoline" teknika erabiltzen dute, zeharkako jauzi-eragiketak "ret" instrukzioarekin ordezkatzean oinarritzen dena, eta horretarako prozesadoreek pila-egoera iragartzeko unitate bereizia erabiltzen dute. Adarrak iragartzeko blokerik ez erabiltzea. 2018an retpoline sartu zenean, uste zen Specter-en antzeko helbideen manipulazioak ez zirela praktikoak "ret" instrukzioa erabiliz adar espekulatiboetarako.

Retbleed eraso metodoa garatu duten ikertzaileek trantsizio espekulatibo bat hasteko aukera mikroarkitekturalak sortzeko aukera frogatu zuten "ret" instrukzioa erabiliz eta prest egindako tresnak argitaratu zituzten Linux nukleoan ahultasuna ustiatzeko egokiak diren instrukzio-sekuentziak (gadget) identifikatzeko. horietan agertzen diren baldintza horiek.

Ikerketan zehar, lan-explotazio bat prestatu zen, Intel CPUdun sistemetan, kerneleko memoriatik datu arbitrarioak erabiltzailearen espazioan pribilegiorik gabeko prozesu batetik ateratzeko aukera ematen duena, 219 byte segundoko abiaduran eta %98ko zehaztasunarekin. AMD prozesadoreetan, ustiapenaren eraginkortasuna askoz handiagoa da: ihes-tasa 3.9 KB segundoko da. Adibide praktiko gisa, proposatzen den exploit-a nola erabili erakusten dugu /etc/shadow fitxategiaren edukia zehazteko. Intel CPUdun sistemetan, root erabiltzailearen pasahitza hash zehazteko erasoa 28 minututan egin zen, eta AMD CPUdun sistemetan - 6 minututan.

Erasoa berretsi da 6ko Q8 baino lehen kaleratu ziren Intel prozesadoreen 3-2019 belaunaldietarako (Skylake barne), eta 1eko Q1 baino lehen kaleratu ziren Zen 2, Zen 2021+ eta Zen 3 mikroarkitektuetan oinarritutako AMD prozesadoreentzat. AMD ZenXNUMX eta Intel Alder Lake bezalako prozesadore-eredu berrietan, baita ARM prozesadoreetan ere, arazoa dauden babes-mekanismoek blokeatzen dute. Adibidez, IBRS (Indirect Branch Restricted Speculation) argibideak erabiltzeak erasoetatik babesten laguntzen du.

Aldaketa multzo bat prestatu da Linux kernelerako eta Xen hipervisorerako, eta horrek PUZ zaharretako softwarean arazoa blokeatuko du. Linux nukleorako proposatutako adabakiak 68 fitxategi aldatzen ditu, 1783 lerro gehitzen ditu eta 387 lerro ezabatzen ditu. Zoritxarrez, babesak gainkostu handiak eragiten ditu - AMD eta Intel prozesadoreetan egindako testuetan, errendimenduaren murrizketa %14tik %39ra bitartekoa da. Hobeagoa da IBRS argibideetan oinarritutako babesa erabiltzea, Intel CPU belaunaldi berrietan eskuragarri eta Linux kernel 4.19tik hasita onartzen duena.

Intel prozesadoreetan, zeharkako jauzi espekulatibo baten helbidearen ordezkapena Return Stack Buffer-en gainezkatze bat gertatzen denean agertzen den funtzio bati esker egiten da. Baldintza horiek gertatzen direnean, "ret" instrukzioa zeharkako jauzi arruntetarako erabiltzen den helbide-hautapen logika aplikatzen hasten da. Linux nukleoan mila leku baino gehiago aurkitu dira atzera-fluxu hori abiarazteko baldintzak sortzen dituztenak eta sistema-deien bidez eskura daitezkeenak.

AMD prozesadoreetan, "ret" instrukzioaren exekuzio espekulatiboa pila baten espezifiko buffer bati erreferentziarik egin gabe egiten da (Return Address Stack) eta adar-iragarpen-unitateak "ret" instrukzioa ez du kontrol-itzulera gisa hartzen, zeharkako adar gisa baizik. , eta, horren arabera, datuak zeharkako trantsizioak aurreikusteko erabiltzen ditu. Baldintza hauetan, sistema-dei baten bidez ia edozein "ret" eragiketa ustiatu daiteke.

Gainera, beste arazo bat ere identifikatu da AMD CPUetan (CVE-2022-23825, Branch Type Confusion) fikziozko adarren inplementazioari lotutakoa - adarrak iragartzeko baldintzak behar diren adar-argibiderik gabe ere gerta daitezke, eta horrek adar-iragarpen-bufferean eragitea ahalbidetzen du. "ret" agindurik gabe. Ezaugarri honek babesaren ezarpena nabarmen zailtzen du eta adar-iragarpen-bufferaren garbiketa aktiboagoa eskatzen du. Nukleoari babes osoa gehitzeak gainkostua % 209 handitzea espero da.

Iturria: opennet.ru

Gehitu iruzkin berria