Neue BHI-Angriffsvariante auf Intel-CPUs, die den Schutz im Linux-Kernel umgeht

Eine Gruppe von Forschern der Universität Amsterdam hat eine neue Angriffsmechanik namens "Native BHI" (CVE-2024-2201) identifiziert, die es auf Systemen mit Intel-Prozessoren ermöglicht, den Inhalt des Linux-Kernel-Speichers beim Ausführen eines Exploits im Benutzerspeicher zu bestimmen. Bei der Anwendung des Angriffs auf Virtualisierungssysteme kann der Angreifer aus dem Gastbetriebssystem heraus den Inhalt des Host-Umgebungsspeichers oder anderer Gastbetriebssysteme bestimmen.

Die Methode Native BHI bietet eine andere Technik zur Ausnutzung der BHI-Sicherheitsanfälligkeit (Branch History Injection, CVE-2022-0001), die zuvor implementierte Schutzmechanismen umgeht. Der im Jahr 2022 vorgeschlagene BHI-Angriff basierte auf der Ausnutzung von Schwachstellen innerhalb einer Berechtigungsstufe, wobei der Exploit auf der Ausführung eines vom Benutzer ins Kernel geladenen eBPF-Programms beruhte. Um die Schwachstelle zu blockieren, genügte es, den Zugriff auf die Ausführung von eBPF-Code für normale Benutzer zu beschränken.

Die neue Methode Native BHI erfordert keinen Zugang zu eBPF und ermöglicht einen Angriff durch einen unprivilegierten Benutzer aus dem Benutzerspeicher. Die Methode basiert auf der Ausführung vorhandener Gadgets im Kernel-Code – Befehlsfolgen, die zur spekulativen Ausführung von Anweisungen führen. Um geeignete Gadgets im Kernel zu finden, wurde ein spezielles Werkzeug namens InSpectre Gadget entwickelt, das bei der Analyse des Kernels 6.6-rc4 1511 Spectre-Gadgets und 2105 Hilfs-Gadgets für die Dispatching entdeckte.

Neue BHI-Angriffsvariante auf Intel-CPUs, die den Schutz im Linux-Kernel umgeht

Auf Basis der gefundenen Gadgets haben die Forscher einen Exploit vorbereitet, der es ermöglicht, aus den Kernel-Puffern eine Zeichenkette mit dem Hash des Root-Passworts, das aus der Datei /etc/shadow geladen wurde, zu extrahieren. Die Geschwindigkeit der Datenextraktion aus dem Kernel-Speicher beträgt etwa 3,5 Kb pro Sekunde.

Video abspielen

Die BHI-Methode stellt eine erweiterte Variante des Spectre-v2-Angriffs dar, bei der ein Wert in ein Puffer mit globaler Branch History (Branch History Buffer) eingefügt wird, um die hinzugefügten Schutzmaßnahmen (Intel eIBRS und Arm CSV2) zu umgehen und Datenlecks zu ermöglichen. Dieses Verfahren wird von der CPU verwendet, um die Genauigkeit der Branch-Prediction zu erhöhen, indem die Geschichte der vergangenen Übergänge berücksichtigt wird. Während des Angriffs werden durch Manipulation der Übergangsgeschichte Bedingungen geschaffen, die zu falschen Vorhersagen und spekulativer Ausführung der erforderlichen Anweisungen führen, deren Ergebnisse im Cache gespeichert werden.

Die Unterschiede zum Spectre-v2-Angriff liegen in der Verwendung des Branch History Buffers anstelle des Branch Target Buffers. Um Daten aus dem Speicher zu extrahieren, muss der Angreifer Bedingungen schaffen, unter denen bei der Ausführung einer spekulativen Operation die Adresse aus dem Bereich entnommen wird, der bestimmt werden soll. Nach der Ausführung des spekulativen indirekten Übergangs bleibt die aus dem Speicher gelesene Übergangsadresse im Cache, nach dem möglicherweise eine der Methoden zur Ermittlung des Cache-Inhalts durch Analyse der Zugriffszeit auf zwischengespeicherte und nicht zwischengespeicherte Daten angewendet werden kann.

Der Native BHI-Angriff wird nicht durch die Verwendung von Intel IBT (Indirect Branch Tracking) und den im Linux-Kernel implementierten hybriden Schutzmechanismus FineIBT geschützt, der die Verwendung von Hardware-Befehlen IBT und softwarebasierter Sicherheit kCFI (kernel Control Flow Integrity) kombiniert, um die Verletzung der normalen Ausführungsreihenfolge (control flow) zu blockieren. FineIBT erlaubt die Ausführung eines indirekten Übergangs nur, wenn auf eine ENDBR-Anweisung zugegriffen wird, die zu Beginn der Funktion platziert ist. Zusätzlich wird (analog zum kCFI-Mechanismus) eine Hash-Prüfung durchgeführt, die die Unveränderlichkeit der Zeiger garantiert.

Um sich gegen die neue Angriffsvariante zu schützen, wurde im Linux-Kernel eine Änderung mit der Implementierung eines zusätzlichen Schutzmodus hinzugefügt, der die von Intel vorgeschlagenen Hardware-Schutzmittel (BHI_DIS_S) oder eine alternative Software-Schutzmaßnahme nutzt, die zum Schutz des Hypervisors implementiert wurde. KVM. Die Entwickler des Hypervisors Xen haben auch einen Fix veröffentlicht, der auf dem Modus BHI_DIS_S basiert, der die Vorhersage basierend auf dem Übergangshistorie einschränkt. Die Unterstützung für BHI_DIS_S ist in Prozessoren ab Intel Alder Lake verfügbar, sowie in Server-CPUs ab Intel Sapphire Rapids. Es gibt auch einen Software-Sicherheitsmodus, der auf der Verwendung von Sequenzen zur Bereinigung des Übergangsgeschichts-Puffers basiert, jedoch führt dies zu einem erheblichen Rückgang der Leistung.

Quelle: opennet.ru

60GB SSD 8Gb DDR4