GhostRace – ein Angriff auf den spekulativen Ausführungsmechanismus in Intel-, AMD-, ARM- und IBM-Prozessoren

Eine Gruppe von Forschern der Vrije Universiteit Amsterdam und IBM hat einen neuen Angriff auf den spekulativen Ausführungsmechanismus in modernen Prozessoren mit dem Codenamen GhostRace (CVE-2024-2193) entwickelt. Das Problem tritt bei Prozessoren der Hersteller Intel, AMD, ARM und IBM auf. Um die Prinzipien des Angriffs zu demonstrieren, wurde ein Exploit-Prototyp veröffentlicht, der das Extrahieren von Daten aus dem Linux-Kernel-Speicher mit einer Leistung von 12 KB pro Sekunde und einem für Spectre-Klasse-Angriffe typischen Zuverlässigkeitsniveau ermöglicht. Bei Angriffen auf Virtualisierungssysteme kann ein Angreifer von einem Gastsystem aus den Speicherinhalt der Hostumgebung oder anderer Gastsysteme ermitteln.

Die vorgeschlagene Angriffsmethode manipuliert das Auftreten spekulativer Race-Bedingungen, die zum Zugriff auf bereits freigegebene Speicherbereiche führen können, wenn der Prozessor Verzweigungen im Code falsch vorhersagt, der bedingte Operationen mit Thread-Synchronisierungsprimitiven wie Mutex und Spinlock ausführt. Spekulative Speicherzugriffe, die auftreten, nachdem eine Fehlvorhersage erkannt wurde, werden vom Prozessor verworfen, Spuren ihrer Ausführung verbleiben jedoch im Prozessor-Cache und können dann mithilfe der Seitenkanalanalyse abgerufen werden.

Analog zur Ausnutzung von Spectre v1-Schwachstellen erfordert der GhostRace-Angriff das Vorhandensein bestimmter Befehlssequenzen (Gadgets) im Kernel, was zu einer spekulativen Codeausführung abhängig von externen Bedingungen führt, die vom Angreifer beeinflusst werden können. Zu Optimierungszwecken beginnt der Prozessor mit der Ausführung solcher Gadgets im spekulativen Modus, stellt dann jedoch fest, dass die Verzweigungsvorhersage nicht gerechtfertigt war, und setzt die Vorgänge auf ihren ursprünglichen Zustand zurück.

Ein Gadget wird beispielsweise aus Codeabschnitten gebildet, in denen der Zustand in einer Endlosschleife überprüft und die Schleife nach Aufheben der Zugriffssperre auf die Ressource verlassen wird. Dementsprechend ist es bei der spekulativen Ausführung von Anweisungen möglich, eine falsche Auslösung eines Übergangs und die Ausführung eines durch eine Sperre geschützten Befehlssatzes zu erreichen, obwohl die Ressourcensperre nicht freigegeben bleibt.

GhostRace – ein Angriff auf den spekulativen Ausführungsmechanismus in Intel-, AMD-, ARM- und IBM-Prozessoren

Bei der Analyse des Codes des Linux 5.15.83-Kernels identifizierten Forscher 1283 Gadgets, die zu spekulativem Zugriff auf bereits freigegebenen Speicher führen (SCUAF – Speculative Concurrent Use-After-Free). Potenziell kann ein Angriff auf Virtualisierungssysteme, alle Betriebssystemkerne und Programme erfolgen, in denen Thread-Synchronisationsprimitive mithilfe von Bedingungsanweisungen überprüft werden und der Code auf Plattformen ausgeführt wird, die die spekulative Ausführung von Verzweigungsoperationen ermöglichen (x86, ARM, RISC-V, usw.) .

Um den Angriff zu blockieren, wird vorgeschlagen, die Serialisierung von Synchronisationsprimitiven zu verwenden, d. h. Hinzufügen einer LFENCE-Prozessoranweisung nach der cmpxchq-Anweisung, die den Sperrstatus überprüft. Die vorgeschlagene Schutzmethode zur Einbindung in den Linux-Kernel führt zu einer Leistungseinbuße von etwa 5 % beim LMBench-Benchmark, da der LFENCE-Aufruf die präventive Ausführung nachfolgender Anweisungen deaktiviert, bevor alle vorherigen Vorgänge festgeschrieben wurden.

Linux-Kernel-Entwickler und CPU-Hersteller wurden Ende 2023 über das Problem informiert. AMD veröffentlichte einen Bericht über das Vorhandensein der Schwachstelle und empfahl darin die Verwendung von Standardtechniken zum Schutz vor Spectre v1-Angriffen. Intel und ARM haben noch nicht geantwortet. Die Linux-Kernel-Entwickler beabsichtigen aufgrund der Leistungseinbußen nicht, die vorgeschlagene Methode zur Serialisierung von Synchronisierungsprimitiven in naher Zukunft zu verwenden, haben jedoch bereits die erforderlichen Einschränkungen zum Schutz vor der damit verbundenen Ausnutzungstechnik IPI Storming (Inter-Process Interrupt Storming) implementiert ( CVE-2024-26602), der in einem Exploit verwendet wird, um einen Prozess im richtigen Moment zu unterbrechen (den CPU-Kern mit Interrupts zu überfluten, die den Abschluss eines Interrupt-Handlers verhindern, der während der Ausführung des Prozesses ausgelöst wurde), um eine Zeit bereitzustellen Fenster für spekulativen Zugriff auf bereits freigegebenen Speicher.

Obwohl die undichten Gadgets im Xen-Hypervisor noch nicht identifiziert wurden, haben die Xen-Entwickler Änderungen vorbereitet, um den geschützten Sperrmechanismus LOCK_HARDEN zu implementieren, ähnlich der zuvor hinzugefügten Schutzmethode BRANCH_HARDEN. Aufgrund möglicher negativer Auswirkungen auf die Leistung sowie fehlender Beweise für die Möglichkeit eines Angriffs auf Xen ist der LOCK_HARDEN-Modus standardmäßig deaktiviert.

Source: opennet.ru

Kommentar hinzufügen