Kwetsbaarheid in het speculatieve uitvoeringsmechanisme van AMD-processors

Het Grsecurity-project heeft details en een demonstratie gepubliceerd van de aanvalsmethode voor een nieuwe kwetsbaarheid (CVE-2021-26341) in AMD-processors met betrekking tot speculatieve uitvoering van instructies na onvoorwaardelijke voorwaartse operaties. Als de aanval succesvol is, maakt de kwetsbaarheid het mogelijk de inhoud van willekeurige geheugengebieden te achterhalen. Onderzoekers hebben bijvoorbeeld een exploit voorbereid waarmee ze de adresindeling kunnen bepalen en het KASLR-beschermingsmechanisme (kernel memory randomization) kunnen omzeilen door onbevoorrechte code uit te voeren in het ePBF-kernelsubsysteem. Andere aanvalsscenario's kunnen niet worden uitgesloten die zouden kunnen leiden tot het lekken van de inhoud van het kernelgeheugen.

Door de kwetsbaarheid kun je omstandigheden creëren waaronder de processor tijdens preventieve uitvoering speculatief de instructie onmiddellijk na de spronginstructie in het geheugen verwerkt (SLS, Straight Line Speculation). Bovendien werkt een dergelijke optimalisatie niet alleen voor operators van voorwaardelijke sprongen, maar ook voor instructies die een directe onvoorwaardelijke sprong impliceren, zoals JMP, RET en CALL. Na onvoorwaardelijke spronginstructies kunnen willekeurige gegevens worden geplaatst die niet bedoeld zijn voor uitvoering. Nadat is vastgesteld dat een vertakking geen uitvoering van de volgende instructie met zich meebrengt, draait de processor eenvoudigweg de status terug en negeert speculatieve uitvoering, maar het spoor van de uitvoering van de instructie blijft in de gedeelde cache en is beschikbaar voor analyse met behulp van side-channel ophaaltechnieken.

Net als bij de exploitatie van de Spectre-v1-kwetsbaarheid vereist de aanval de aanwezigheid van bepaalde reeksen instructies (gadgets) in de kernel die tot speculatieve uitvoering leiden. Het blokkeren van een kwetsbaarheid komt in dit geval neer op het identificeren van dergelijke gadgets in de code en het toevoegen van aanvullende instructies eraan die speculatieve uitvoering blokkeren. Voorwaarden voor speculatieve uitvoering kunnen ook worden gecreëerd door programma's zonder privileges die op de virtuele eBPF-machine draaien. Om de mogelijkheid te blokkeren om gadgets te maken met behulp van eBPF, wordt aanbevolen om niet-bevoorrechte toegang tot eBPF in het systeem uit te schakelen (“sysctl -w kernel.unprivileged_bpf_disabled=1”).

Het beveiligingslek treft processors gebaseerd op de Zen1- en Zen2-microarchitectuur, waaronder de eerste en tweede generatie AMD EPYC- en AMD Ryzen Threadripper-processors, evenals AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper Processoren uit de PRO- en APU-serie A. Om speculatieve uitvoering van instructies te blokkeren, wordt aanbevolen om INT3- of LFENCE-instructies aan te roepen na vertakkingsoperaties (RET, JMP, CALL).

Bron: opennet.ru

Voeg een reactie