En Meltdown-klassesårbarhed er blevet opdaget i AMD-processorer baseret på Zen+ og Zen 2 mikroarkitekturer

En gruppe forskere fra det tekniske universitet i Dresden har identificeret en sårbarhed (CVE-2020-12965) i AMD-processorer baseret på Zen+ og Zen 2 mikroarkitekturer, som tillader et angreb i Meltdown-klassen. Det blev oprindeligt antaget, at AMD Zen+- og Zen 2-processorer ikke er modtagelige for Meltdown-sårbarheden, men forskere identificerede en funktion, der fører til spekulativ adgang til beskyttede hukommelsesområder ved brug af ikke-kanoniske virtuelle adresser.

AMD64-arkitekturen bruger kun de første 48 bit af den virtuelle adresse og ignorerer de resterende 16 bit. Det er specificeret, at bit 48 til 63 altid skal kopiere værdien af ​​bit 47 (tegn bit forlængelse). Hvis denne betingelse overtrædes, og der gøres et forsøg på at få adgang til en adresse med vilkårlige værdier af de øvre bits, genererer processoren en undtagelse. Gentagende udfyldning af de øverste bit bevirker, at det tilgængelige adresserum opdeles i to blokke - en nedre (fra 0 til 00007FFFFFFFFFFFFF), hvor de øverste bit er sat til 800000000000, og en øvre (fra FFFF1 til FFFFFFFFFFFFFFFF), i hvilken alle de øverste bits er sat til XNUMX.

Adresser, der falder inden for de specificerede blokke, kaldes kanoniske, og forkerte adresser med vilkårligt indhold af de øverste bit kaldes ikke-kanoniske. Det nederste område af kanoniske adresser tildeles typisk til procesdata, og det øvre område bruges til kernedata (adgang til disse adresser fra brugerrum er blokeret på privilegieadskillelsesniveauet).

Den klassiske Meltdown-sårbarhed er baseret på det faktum, at processoren under spekulativ udførelse af instruktioner kan få adgang til et privat dataområde og derefter kassere resultatet, fordi de indstillede privilegier forbyder sådan adgang fra brugerens proces. I programmet er den spekulativt udførte blok adskilt fra hovedkoden af ​​en betinget gren, som under reelle forhold altid affyres, men på grund af det faktum, at den betingede sætning bruger en beregnet værdi, som processoren ikke kender under den præventive eksekvering af koden udføres alle filialoptioner spekulativt.

Da spekulativt udførte operationer bruger den samme cache som normalt udførte instruktioner, er det muligt under spekulativ udførelse at sætte markører i cachen, der afspejler indholdet af individuelle bits i et privat hukommelsesområde, og derefter i normalt udført kode for at bestemme deres værdi gennem timing analyseadgange til cachelagrede og ikke-cachelagrede data.

Et træk ved den nye sårbarhed, der påvirker AMD Zen+ og Zen 2-processorer, er, at CPU'erne tillader spekulative læse- og skriveoperationer, der får adgang til hukommelse ved hjælp af ugyldige ikke-kanoniske adresser, idet de blot ignorerer de øverste 16 bit. Under udførelse af spekulativ kode bruger processoren således altid kun de nederste 48 bit, og gyldigheden af ​​adressen kontrolleres separat. Hvis der, når en ikke-kanonisk virtuel adresse oversættes til en fysisk adresse i den associative translation buffer (TLB), detekteres et match i den kanoniske del af adressen, vil den spekulative indlæsningsoperation returnere værdien uden at tage hensyn til indholdet af de øverste 16 bit, hvilket tillader omgåelse af hukommelsesdeling mellem tråde. Efterfølgende vil handlingen blive betragtet som ugyldig og kasseret, men hukommelsesadgangen vil blive gennemført, og dataene ender i cachen.

Under eksperimentet, ved hjælp af teknikken til at bestemme indholdet af FLUSH+RELOAD-cachen, var forskerne i stand til at organisere en kanal til skjult dataoverførsel med en hastighed på 125 bytes i sekundet. Udover AMD-chips rammer problemet også alle Intel-processorer, som er modtagelige for den klassiske Meltdown-sårbarhed. De samme teknikker, der hjælper med at blokere Meltdown-angreb, såsom brug af LFENCE-instruktioner, kan bruges til at beskytte mod denne nye type angreb. For eksempel, hvis en Intel-processor inkluderer hardwarebeskyttelse mod Meltdown, eller systemet har softwarebeskyttelse aktiveret, så er sådanne konfigurationer ikke modtagelige for den nye angrebsvariant.

Samtidig bemærker forskerne, at sammenlignet med Intel-processorer begrænser arkitekturen af ​​AMD-processorer muligheden for at udføre rigtige angreb, men udelukker ikke brugen af ​​en ny metode i kombination med andre mikroarkitektoniske angreb for at øge deres effektivitet. Især tillader det foreslåede angreb ikke at bestemme indholdet af hukommelsesområder i kernen og andre processer, men er begrænset til muligheden for at få adgang til andre tråde i det samme program, der kører i det samme virtuelle hukommelsesrum.

Da et program uden en sårbarhed har mulighed for at få adgang til sine tråde, er metoden fra et praktisk synspunkt interessant til at omgå sandkasseisolering og organisere interferens med andre trådes arbejde i programmer, der tillader eksekvering af tredjeparter kode, såsom webbrowsere og JIT-motorer . Forskere undersøgte SpiderMonkey JavaScript-motorens og Linux-kernens sårbarhed over for angreb, men fandt ikke sårbare kodesekvenser, der kunne bruges til at udføre et angreb. Ud over at angribe applikationer kan metoden også bruges til at tvinge uacceptable datastrømme mellem mikroarkitektoniske elementer i processoren, mens andre mikroarkitektoniske sårbarheder udnyttes.

Kilde: opennet.ru

Tilføj en kommentar