Sicherheitslücke im spekulativen Ausführungsmechanismus von AMD-Prozessoren

Das Grsecurity-Projekt hat Details und eine Demonstration der Angriffsmethode für eine neue Schwachstelle (CVE-2021-26341) in AMD-Prozessoren im Zusammenhang mit der spekulativen Ausführung von Anweisungen nach bedingungslosen Vorwärtsoperationen veröffentlicht. Bei erfolgreichem Angriff ermöglicht die Schwachstelle die Ermittlung des Inhalts beliebiger Speicherbereiche. Forscher haben beispielsweise einen Exploit vorbereitet, der es ihnen ermöglicht, das Adresslayout zu bestimmen und den KASLR-Schutzmechanismus (Kernel Memory Randomization) zu umgehen, indem sie unprivilegierten Code im ePBF-Kernel-Subsystem ausführen. Andere Angriffsszenarien können nicht ausgeschlossen werden, die zu einem Leck von Kernel-Speicherinhalten führen könnten.

Die Sicherheitslücke ermöglicht es Ihnen, Bedingungen zu schaffen, unter denen der Prozessor während der präventiven Ausführung spekulativ die Anweisung verarbeitet, die unmittelbar auf die Sprunganweisung im Speicher folgt (SLS, Straight Line Speculation). Darüber hinaus funktioniert eine solche Optimierung nicht nur für bedingte Sprungoperatoren, sondern auch für Anweisungen, die einen direkten bedingungslosen Sprung implizieren, wie z. B. JMP, RET und CALL. Nach bedingungslosen Sprungbefehlen können beliebige Daten platziert werden, die nicht zur Ausführung vorgesehen sind. Nachdem festgestellt wurde, dass eine Verzweigung nicht die Ausführung des nächsten Befehls beinhaltet, setzt der Prozessor einfach den Status zurück und ignoriert die spekulative Ausführung. Die Spur der Befehlsausführung verbleibt jedoch im gemeinsam genutzten Cache und steht für die Analyse mithilfe von Seitenkanal-Abruftechniken zur Verfügung.

Wie bei der Ausnutzung der Spectre-v1-Schwachstelle erfordert der Angriff das Vorhandensein bestimmter Befehlssequenzen (Gadgets) im Kernel, die zu einer spekulativen Ausführung führen. Um eine Schwachstelle zu blockieren, geht es in diesem Fall darum, solche Gadgets im Code zu identifizieren und ihnen zusätzliche Anweisungen hinzuzufügen, die die spekulative Ausführung blockieren. Bedingungen für die spekulative Ausführung können auch durch unprivilegierte Programme geschaffen werden, die in der virtuellen eBPF-Maschine ausgeführt werden. Um die Möglichkeit zum Erstellen von Gadgets mit eBPF zu blockieren, wird empfohlen, den unprivilegierten Zugriff auf eBPF im System zu deaktivieren („sysctl -w kernel.unprivileged_bpf_disabled=1“).

Die Sicherheitslücke betrifft Prozessoren, die auf der Zen1- und Zen2-Mikroarchitektur basieren, einschließlich der ersten und zweiten Generation der AMD EPYC- und AMD Ryzen Threadripper-Prozessoren sowie AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X und AMD Ryzen Threadripper Prozessoren der PRO- und APU-Serie A. Um die spekulative Ausführung von Anweisungen zu blockieren, wird empfohlen, nach Verzweigungsoperationen (RET, JMP, CALL) INT3- oder LFENCE-Anweisungen aufzurufen.

Source: opennet.ru

Kommentar hinzufügen