Er is een kwetsbaarheid in de Meltdown-klasse ontdekt in AMD-processors die zijn gebaseerd op Zen+- en Zen 2-microarchitecturen

Een groep onderzoekers van de Technische Universiteit van Dresden heeft een kwetsbaarheid (CVE-2020-12965) geïdentificeerd in AMD-processors gebaseerd op Zen+- en Zen 2-microarchitecturen, die een Meltdown-klasse-aanval mogelijk maken. Aanvankelijk werd aangenomen dat AMD Zen+- en Zen 2-processors niet vatbaar zijn voor de Meltdown-kwetsbaarheid, maar onderzoekers hebben een functie geïdentificeerd die leidt tot speculatieve toegang tot beschermde geheugengebieden bij gebruik van niet-canonieke virtuele adressen.

De AMD64-architectuur gebruikt alleen de eerste 48 bits van het virtuele adres en negeert de resterende 16 bits. Er is gespecificeerd dat de bits 48 tot en met 63 altijd de waarde van bit 47 moeten kopiëren (tekenbitextensie). Als deze voorwaarde wordt geschonden en er wordt geprobeerd toegang te krijgen tot een adres met willekeurige waarden van de bovenste bits, genereert de processor een uitzondering. Het herhaaldelijk vullen van de bovenste bits zorgt ervoor dat de beschikbare adresruimte in twee blokken wordt verdeeld: een onderste (van 0 tot 00007FFFFFFFFFFFFF), waarin de bovenste bits op 800000000000 worden ingesteld, en een bovenste (van FFFF1 tot FFFFFFFFFFFFFFFF), waarin alle bovenste bits zijn ingesteld op XNUMX.

Adressen die binnen de gespecificeerde blokken vallen, worden canoniek genoemd, en onjuiste adressen met willekeurige inhoud van de bovenste bits worden niet-canoniek genoemd. Het onderste bereik van canonieke adressen wordt doorgaans toegewezen voor procesgegevens, en het bovenste bereik wordt gebruikt voor kernelgegevens (toegang tot deze adressen vanuit de gebruikersruimte wordt geblokkeerd op het privilegescheidingsniveau).

De klassieke Meltdown-kwetsbaarheid is gebaseerd op het feit dat de processor tijdens speculatieve uitvoering van instructies toegang kan krijgen tot een privégegevensgebied en het resultaat vervolgens kan negeren omdat de ingestelde privileges dergelijke toegang tot het proces van de gebruiker verbieden. In het programma wordt het speculatief uitgevoerde blok gescheiden van de hoofdcode door een voorwaardelijke vertakking, die in reële omstandigheden altijd wordt geactiveerd, maar vanwege het feit dat de voorwaardelijke instructie een berekende waarde gebruikt die de processor niet kent tijdens de preventieve uitvoering van de code worden alle vertakkingsopties speculatief uitgevoerd.

Omdat speculatief uitgevoerde bewerkingen dezelfde cache gebruiken als normaal uitgevoerde instructies, is het mogelijk om tijdens speculatieve uitvoering markeringen in de cache te plaatsen die de inhoud van individuele bits in een privégeheugengebied weerspiegelen, en vervolgens in normaal uitgevoerde code hun waarde te bepalen door middel van timing. analysetoegang tot gegevens in de cache en niet in de cache.

Een kenmerk van de nieuwe kwetsbaarheid die AMD Zen+- en Zen 2-processors treft, is dat de CPU's speculatieve lees- en schrijfbewerkingen toestaan ​​die toegang krijgen tot het geheugen met behulp van ongeldige, niet-canonieke adressen, waarbij eenvoudigweg de bovenste 16 bits worden genegeerd. Tijdens speculatieve code-uitvoering gebruikt de processor dus altijd alleen de onderste 48 bits en wordt de geldigheid van het adres afzonderlijk gecontroleerd. Als er bij het vertalen van een niet-canoniek virtueel adres naar een fysiek adres in de associatieve vertaalbuffer (TLB) een overeenkomst wordt gedetecteerd in het canonieke deel van het adres, retourneert de speculatieve laadbewerking de waarde zonder rekening te houden met de inhoud van de bovenste 16 bits, waardoor het delen van geheugen tussen threads kan worden omzeild. Vervolgens wordt de bewerking als ongeldig beschouwd en verwijderd, maar de geheugentoegang wordt voltooid en de gegevens komen in de cache terecht.

Tijdens het experiment konden de onderzoekers, met behulp van de techniek om de inhoud van de FLUSH+RELOAD-cache te bepalen, een kanaal organiseren voor verborgen gegevensoverdracht met een snelheid van 125 bytes per seconde. Naast AMD-chips treft het probleem ook alle Intel-processors, die gevoelig zijn voor de klassieke Meltdown-kwetsbaarheid. Dezelfde technieken die Meltdown-aanvallen helpen blokkeren, zoals het gebruik van LFENCE-instructies, kunnen worden gebruikt om te beschermen tegen dit nieuwe type aanval. Als een Intel-processor bijvoorbeeld hardwarebescherming tegen Meltdown bevat of als het systeem softwarebescherming heeft ingeschakeld, zijn dergelijke configuraties niet vatbaar voor de nieuwe aanvalsvariant.

Tegelijkertijd merken de onderzoekers op dat, vergeleken met Intel-processors, de architectuur van AMD-processors de mogelijkheid beperkt om echte aanvallen uit te voeren, maar het gebruik van een nieuwe methode in combinatie met andere microarchitecturale aanvallen om hun effectiviteit te vergroten niet uitsluit. In het bijzonder staat de voorgestelde aanval het niet toe om de inhoud van geheugengebieden van de kernel en andere processen te bepalen, maar is deze beperkt tot de mogelijkheid om toegang te krijgen tot andere threads van hetzelfde programma dat in dezelfde virtuele geheugenruimte draait.

Omdat een programma zonder kwetsbaarheid de mogelijkheid heeft om toegang te krijgen tot zijn threads, is deze methode vanuit praktisch oogpunt van belang voor het omzeilen van sandbox-isolatie en het organiseren van interferentie met het werk van andere threads in programma's die de uitvoering van externe threads mogelijk maken. code, zoals webbrowsers en JIT-engines. Onderzoekers onderzochten de kwetsbaarheid van de SpiderMonkey JavaScript-engine en de Linux-kernel voor aanvallen, maar vonden geen kwetsbare codesequenties die gebruikt konden worden om een ​​aanval uit te voeren. Naast het aanvallen van applicaties kan de methode ook worden gebruikt om onaanvaardbare datastromen tussen microarchitecturale elementen van de processor te forceren, terwijl andere microarchitecturale kwetsbaarheden worden misbruikt.

Bron: opennet.ru

Voeg een reactie