Një cenueshmëri e klasës Meltdown është zbuluar në procesorët AMD bazuar në mikroarkitekturat Zen+ dhe Zen 2

Një grup studiuesish nga Universiteti Teknik i Dresdenit ka identifikuar një dobësi (CVE-2020-12965) në procesorët AMD bazuar në mikroarkitekturat Zen+ dhe Zen 2, e cila lejon një sulm të klasës Meltdown. Fillimisht u supozua se procesorët AMD Zen+ dhe Zen 2 nuk janë të ndjeshëm ndaj cenueshmërisë së Meltdown, por studiuesit identifikuan një veçori që çon në qasje spekulative në zonat e mbrojtura të memories kur përdorin adresa virtuale jo-kanonike.

Arkitektura AMD64 përdor vetëm 48 bitet e para të adresës virtuale dhe injoron 16 bitet e mbetura. Është specifikuar se bitet 48 deri në 63 duhet të kopjojnë gjithmonë vlerën e bitit 47 (zgjatja e bitit të shenjës). Nëse ky kusht shkelet dhe bëhet një përpjekje për të hyrë në një adresë me vlera arbitrare të biteve të sipërme, procesori gjeneron një përjashtim. Plotësimi i përsëritur i biteve të sipërm bën që hapësira e disponueshme e adresave të ndahet në dy blloqe - një më i ulët (nga 0 në 00007FFFFFFFFFFFFFF), në të cilin bitet e sipërme vendosen në 800000000000 dhe një i sipërm (nga FFFF1 në FFFFFFFFFFFFFFFFFFFFFFFFFF), në të cilin. të gjitha bitet e sipërme janë vendosur në XNUMX.

Adresat që bien brenda blloqeve të specifikuara quhen kanonike, dhe adresat e pasakta me përmbajtje arbitrare të biteve të sipërme quhen jo-kanonike. Gama e poshtme e adresave kanonike zakonisht ndahet për të dhënat e procesit, dhe diapazoni i sipërm përdoret për të dhënat e kernelit (qasja në këto adresa nga hapësira e përdoruesit është e bllokuar në nivelin e ndarjes së privilegjeve).

Dobësia klasike e Meltdown bazohet në faktin se gjatë ekzekutimit spekulativ të instruksioneve, procesori mund të hyjë në një zonë të të dhënave private dhe më pas të heqë rezultatin sepse privilegjet e vendosura ndalojnë një akses të tillë nga procesi i përdoruesit. Në program, blloku i ekzekutuar në mënyrë spekulative ndahet nga kodi kryesor me një degë të kushtëzuar, e cila në kushte reale ndizet gjithmonë, por për faktin se deklarata e kushtëzuar përdor një vlerë të llogaritur që procesori nuk e njeh gjatë ekzekutimit paraprak të kodi, të gjitha opsionet e degës kryhen në mënyrë spekulative.

Meqenëse operacionet e ekzekutuara në mënyrë spekulative përdorin të njëjtën cache si instruksionet e ekzekutuara normalisht, është e mundur gjatë ekzekutimit spekulativ të vendosen shënues në cache që pasqyrojnë përmbajtjen e biteve individuale në një zonë të memories private, dhe më pas në kodin e ekzekutuar normalisht për të përcaktuar vlerën e tyre përmes kohës. qasjet e analizës në të dhënat e memories dhe jo të ruajtura.

Një tipar i cenueshmërisë së re që prek procesorët AMD Zen+ dhe Zen 2 është se CPU-të lejojnë operacione spekulative të leximit dhe shkrimit që hyjnë në memorie duke përdorur adresa të pavlefshme jo-kanonike, thjesht duke injoruar 16 bitet e sipërme. Kështu, gjatë ekzekutimit spekulativ të kodit, procesori përdor gjithmonë vetëm 48 bit më të ulët, dhe vlefshmëria e adresës kontrollohet veçmas. Nëse, gjatë përkthimit të një adrese virtuale jo-kanonike në një adresë fizike në buferin e përkthimit asociativ (TLB), zbulohet një përputhje në pjesën kanonike të adresës, atëherë operacioni i ngarkesës spekulative do të kthejë vlerën pa marrë parasysh përmbajtjen nga 16 bitët e sipërm, i cili lejon anashkalimin e ndarjes së memories ndërmjet thread-ve. Më pas, operacioni do të konsiderohet i pavlefshëm dhe do të hidhet poshtë, por qasja në kujtesë do të përfundojë dhe të dhënat do të përfundojnë në cache.

Gjatë eksperimentit, duke përdorur teknikën e përcaktimit të përmbajtjes së cache-it FLUSH+RELOAD, studiuesit ishin në gjendje të organizonin një kanal për transferimin e të dhënave të fshehura me një shpejtësi prej 125 bajt në sekondë. Përveç çipave AMD, problemi prek edhe të gjithë procesorët Intel, të cilët janë të ndjeshëm ndaj cenueshmërisë klasike të Meltdown. Të njëjtat teknika që ndihmojnë në bllokimin e sulmeve Meltdown, të tilla si përdorimi i udhëzimeve LFENCE, mund të përdoren për të mbrojtur kundër këtij lloji të ri sulmi. Për shembull, nëse një procesor Intel përfshin mbrojtje harduerike kundër Meltdown ose sistemi ka mbrojtjen e softuerit të aktivizuar, atëherë konfigurime të tilla nuk janë të ndjeshme ndaj variantit të ri të sulmit.

Në të njëjtën kohë, studiuesit vërejnë se, në krahasim me procesorët Intel, arkitektura e procesorëve AMD kufizon mundësinë e kryerjes së sulmeve reale, por nuk përjashton përdorimin e një metode të re në kombinim me sulme të tjera mikroarkitekturore për të rritur efektivitetin e tyre. Në veçanti, sulmi i propozuar nuk lejon që dikush të përcaktojë përmbajtjen e zonave të kujtesës të kernelit dhe proceseve të tjera, por është i kufizuar në aftësinë për të fituar akses në temat e tjera të të njëjtit program që ekzekutohet në të njëjtën hapësirë ​​të memories virtuale.

Meqenëse një program pa dobësi ka aftësinë për të hyrë në temat e tij, nga pikëpamja praktike metoda është me interes për anashkalimin e izolimit të sandbox dhe organizimin e ndërhyrjeve në punën e fijeve të tjera në programe që lejojnë ekzekutimin e palëve të treta kodi, të tillë si shfletuesit e uebit dhe motorët JIT . Studiuesit ekzaminuan cenueshmërinë e motorit SpiderMonkey JavaScript dhe kernelit Linux për të sulmuar, por nuk gjetën sekuenca kodesh të cenueshme që mund të përdoren për të kryer një sulm. Përveç sulmit të aplikacioneve, metoda mund të përdoret gjithashtu për të detyruar rrjedhat e papranueshme të të dhënave midis elementeve mikroarkitekturore të procesorit duke shfrytëzuar dobësitë e tjera mikroarkitekturore.

Burimi: opennet.ru

Shto një koment