BHI ist eine neue Schwachstelle der Spectre-Klasse in Intel- und ARM-Prozessoren

Eine Gruppe von Forschern der Vrije Universiteit Amsterdam hat eine neue Schwachstelle in den Mikroarchitekturstrukturen von Intel- und ARM-Prozessoren identifiziert, bei der es sich um eine erweiterte Version der Spectre-v2-Schwachstelle handelt, die es ermöglicht, die den Prozessoren hinzugefügten eIBRS- und CSV2-Schutzmechanismen zu umgehen . Der Schwachstelle wurden mehrere Namen gegeben: BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) und Spectre-BHB (CVE-2022-23960), die verschiedene Erscheinungsformen beschreiben das gleiche Problem (BHI – ein Angriff, der unterschiedliche Berechtigungsebenen betrifft, zum Beispiel den Benutzerprozess und den Kernel, BHB – ein Angriff auf derselben Berechtigungsebene, zum Beispiel eBPF JIT und den Kernel).

Forscher haben einen funktionierenden Exploit demonstriert, der es ermöglicht, beliebige Daten aus dem Kernel-Speicher aus dem Benutzerbereich zu extrahieren. Beispielsweise wird gezeigt, wie es mithilfe eines vorbereiteten Exploits möglich ist, aus den Kernel-Puffer einen String mit einem Hash des aus der Datei /etc/shadow geladenen Root-Benutzerkennworts zu extrahieren. Der Exploit demonstriert die Möglichkeit, eine Schwachstelle innerhalb einer Berechtigungsstufe (Kernel-zu-Kernel-Angriff) mithilfe eines vom Benutzer geladenen eBPF-Programms auszunutzen. Es ist auch möglich, anstelle von eBPF vorhandene Spectre-Gadgets im Kernel-Code zu verwenden, Befehlssequenzen, die zur spekulativen Ausführung von Anweisungen führen.

Die Schwachstelle tritt bei den meisten aktuellen Intel-Prozessoren auf, mit Ausnahme der Prozessoren der Atom-Familie. Unter den ARM-Prozessoren sind Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 und möglicherweise einige Cortex-R-Chips von dem Problem betroffen. Recherchen zufolge tritt die Schwachstelle bei AMD-Prozessoren nicht auf. Um das Problem zu beheben, wurden mehrere Softwaremethoden zum Blockieren der Schwachstelle vorgeschlagen, die vor dem Erscheinen eines Hardwareschutzes in zukünftigen CPU-Modellen eingesetzt werden können.

Um Angriffe über das eBPF-Subsystem zu blockieren, wird empfohlen, die Möglichkeit für unprivilegierte Benutzer, eBPF-Programme herunterzuladen, standardmäßig zu deaktivieren, indem Sie 1 in die Datei „/proc/sys/kernel/unprivileged_bpf_disabled“ schreiben oder den Befehl „sysctl -w kernel“ ausführen. unprivileged_bpf_disabled=1“. Um Gadget-Angriffe zu blockieren, wird empfohlen, die LFENCE-Anweisung in Codebereichen zu verwenden, die möglicherweise zu einer spekulativen Ausführung führen. Bemerkenswert ist, dass die Standardkonfiguration der meisten Linux-Distributionen bereits die notwendigen Schutzmaßnahmen enthält, die ausreichen, um den von den Forschern nachgewiesenen eBPF-Angriff zu blockieren. Intels Empfehlungen zur Deaktivierung des unprivilegierten Zugriffs auf eBPF gelten seit Linux-Kernel 5.16 ebenfalls als Standard und werden auf frühere Zweige zurückportiert.

Konzeptionell ist BHI eine erweiterte Version des Spectre-v2-Angriffs, bei dem zur Umgehung des zusätzlichen Schutzes (Intel eIBRS und Arm CSV2) und zur Organisation von Datenlecks eine Wertesubstitution im Branch History Buffer verwendet wird, der in der CPU zur Verbesserung der Vorhersage verwendet wird Genauigkeit der Verzweigung durch Berücksichtigung der Geschichte vergangener Übergänge. Während des Angriffs werden durch Manipulationen an der Übergangshistorie Bedingungen für eine falsche Vorhersage des Übergangs und die spekulative Ausführung der erforderlichen Anweisungen geschaffen, deren Ergebnis im Cache landet.

Abgesehen von der Verwendung eines Branch History Buffers anstelle eines Branch Target Buffers ist der neue Angriff identisch mit Spectre-v2. Die Aufgabe des Angreifers besteht darin, Bedingungen zu schaffen, damit die Adresse bei einer spekulativen Operation aus dem Bereich der definierten Daten entnommen wird. Nach der Durchführung eines spekulativen indirekten Sprungs verbleibt die aus dem Speicher gelesene Sprungadresse im Cache. Anschließend kann eine der Methoden zur Bestimmung des Cache-Inhalts verwendet werden, um ihn basierend auf einer Analyse der Änderungen in der Zugriffszeit auf zwischengespeicherte und nicht zwischengespeicherte Caches abzurufen Daten.

Source: opennet.ru

Kommentar hinzufügen