'n Kwesbaarheid van die Meltdown-klas is ontdek in AMD-verwerkers gebaseer op Zen+ en Zen 2 mikroargitekture

'n Groep navorsers van die Tegniese Universiteit van Dresden het 'n kwesbaarheid (CVE-2020-12965) in AMD-verwerkers geïdentifiseer wat gebaseer is op Zen+ en Zen 2 mikroargitekture, wat 'n Meltdown-klasaanval moontlik maak. Daar is aanvanklik aanvaar dat AMD Zen+ en Zen 2 verwerkers nie vatbaar is vir die Meltdown-kwesbaarheid nie, maar navorsers het 'n kenmerk geïdentifiseer wat lei tot spekulatiewe toegang tot beskermde geheue-areas wanneer nie-kanonieke virtuele adresse gebruik word.

Die AMD64-argitektuur gebruik slegs die eerste 48 bisse van die virtuele adres en ignoreer die oorblywende 16 bisse. Dit word gespesifiseer dat bisse 48 tot 63 altyd die waarde van bis 47 (tekenbisuitbreiding) moet kopieer. As hierdie voorwaarde oortree word en 'n poging aangewend word om toegang te verkry tot 'n adres met arbitrêre waardes van die boonste bisse, genereer die verwerker 'n uitsondering. Om die boonste bisse herhaaldelik te vul, veroorsaak dat die beskikbare adresspasie in twee blokke verdeel word - 'n onderste een (van 0 tot 00007FFFFFFFFFFFFF), waarin die boonste bisse op 800000000000 gestel is, en 'n boonste een (van FFFF1 tot FFFFFFFFFFFFFFFF), waarin al die boonste stukkies is op XNUMX gestel.

Adresse wat binne die gespesifiseerde blokke val, word kanonies genoem, en verkeerde adresse met arbitrêre inhoud van die boonste stukkies word nie-kanonies genoem. Die onderste reeks kanonieke adresse word tipies vir prosesdata toegeken, en die boonste reeks word vir kerndata gebruik (toegang tot hierdie adresse vanaf gebruikersspasie word op die voorregskeidingsvlak geblokkeer).

Die klassieke Meltdown-kwesbaarheid is gebaseer op die feit dat die verwerker tydens spekulatiewe uitvoering van instruksies toegang tot 'n privaat dataarea kan verkry en dan die resultaat kan weggooi omdat die gestelde voorregte sulke toegang van die gebruiker se proses verbied. In die program word die spekulatief uitgevoer blok van die hoofkode geskei deur 'n voorwaardelike tak, wat in werklike toestande altyd brand, maar as gevolg van die feit dat die voorwaardelike stelling 'n berekende waarde gebruik wat die verwerker nie ken tydens die voorkomende uitvoering van die kode, word alle takopsies spekulatief uitgevoer.

Aangesien spekulatief uitgevoerde bewerkings dieselfde kas gebruik as normaalweg uitgevoer instruksies, is dit tydens spekulatiewe uitvoering moontlik om merkers in die kas te stel wat die inhoud van individuele bisse in 'n privaat geheue area weerspieël, en dan in normaal uitgevoerde kode om hul waarde te bepaal deur tydsberekening ontledingstoegange tot gekas- en nie-gekasdata.

'n Kenmerk van die nuwe kwesbaarheid wat AMD Zen+ en Zen 2 verwerkers raak, is dat die SVE's spekulatiewe lees- en skryfbewerkings toelaat wat toegang tot geheue verkry deur ongeldige nie-kanoniese adresse te gebruik, en bloot die boonste 16 bisse ignoreer. Dus, tydens spekulatiewe kode-uitvoering, gebruik die verwerker altyd slegs die onderste 48 bisse, en die geldigheid van die adres word afsonderlik nagegaan. As, wanneer 'n nie-kanonieke virtuele adres na 'n fisiese adres in die assosiatiewe vertaalbuffer (TLB) vertaal word, 'n passing in die kanoniese deel van die adres bespeur word, sal die spekulatiewe laai-operasie die waarde terugstuur sonder om die inhoud in ag te neem van die boonste 16 bisse, wat geheuedeling tussen drade omseil. Daarna sal die bewerking as ongeldig beskou word en weggegooi word, maar die geheuetoegang sal voltooi word en die data sal in die kas beland.

Tydens die eksperiment, met behulp van die tegniek om die inhoud van die FLUSH+RELOAD-kas te bepaal, kon die navorsers 'n kanaal vir verborge data-oordrag teen 'n spoed van 125 grepe per sekonde organiseer. Benewens AMD-skyfies, raak die probleem ook alle Intel-verwerkers, wat vatbaar is vir die klassieke Meltdown-kwesbaarheid. Dieselfde tegnieke wat Meltdown-aanvalle help blokkeer, soos die gebruik van LFENCE-instruksies, kan gebruik word om teen hierdie nuwe tipe aanval te beskerm. Byvoorbeeld, as 'n Intel-verwerker hardewarebeskerming teen Meltdown insluit of die stelsel het sagtewarebeskerming geaktiveer, dan is sulke konfigurasies nie vatbaar vir die nuwe aanvalvariant nie.

Terselfdertyd merk die navorsers op dat, in vergelyking met Intel-verwerkers, die argitektuur van AMD-verwerkers die moontlikheid beperk om werklike aanvalle uit te voer, maar sluit nie die gebruik van 'n nuwe metode in kombinasie met ander mikroargitektoniese aanvalle uit om hul doeltreffendheid te verhoog nie. Die voorgestelde aanval laat veral nie toe om die inhoud van die kerngeheue-areas en ander prosesse te bepaal nie, maar is beperk tot die vermoë om toegang te verkry tot ander drade van dieselfde program wat in dieselfde virtuele geheueruimte loop.

Aangesien 'n program sonder 'n kwesbaarheid die vermoë het om toegang tot sy drade te verkry, is die metode uit 'n praktiese oogpunt van belang om sandbox-isolasie te omseil en inmenging met die werk van ander drade in programme te organiseer wat die uitvoering van derdepartye toelaat. kode, soos webblaaiers en JIT-enjins. Navorsers het die kwesbaarheid van die SpiderMonkey JavaScript-enjin en die Linux-kern vir aanval ondersoek, maar het nie kwesbare kodereekse gevind wat gebruik kan word om 'n aanval uit te voer nie. Benewens die aanval van toepassings, kan die metode ook gebruik word om onaanvaarbare datavloei tussen mikroargitektoniese elemente van die verwerker af te dwing terwyl ander mikroargitektoniese kwesbaarhede uitgebuit word.

Bron: opennet.ru

Voeg 'n opmerking