Eine Gruppe von Forschern der Vrije Universiteit Amsterdam hat eine neue Angriffstechnik namens SLAM (Spectre Linear Address Masking) vorgestellt, die einen neuen Weg zur Ausnutzung mikroarchitektonischer Schwachstellen der Spectre-Klasse bietet. Bei dieser Technik kommt es zu einem Datenleck bei der Übersetzung nicht-kanonischer Adressen, wobei Erweiterungen in neuen Prozessoren zur Maskierung linearer Adressen genutzt werden, um Kanonizitätsprüfungen zu umgehen. Die Forscher haben ein Toolkit veröffentlicht, das die Methode implementiert, und eine Demonstration vorgeschlagen, die zeigt, wie man aus dem Kernel-Speicher Daten extrahieren kann, die mit einer bestimmten Maske übereinstimmen (es wird gezeigt, wie in wenigen Dutzend Sekunden in Ubuntu ein String mit dem Hash des Root-Passworts aus dem Kernel-Speicher extrahiert werden kann).

Der Angriff kann auf Systemen mit Intel-Prozessoren durchgeführt werden, die die LAM (Linear Address Masking)-Erweiterung unterstützen, auf AMD-Prozessoren mit der UAI (Upper Address Ignore)-Erweiterung und auf ARM-Prozessoren mit der TBI (Top Byte Ignore)-Erweiterung. Diese Erweiterungen ermöglichen die Nutzung eines Teils der Bits von 64-Bit-Zeigern zur Speicherung von mit Adressierung nicht verbundenen Metadaten (für gewöhnliche Programme wird nicht so viel Speicher benötigt, dass sie 64-Bit-Zeiger adressieren können, weshalb die oberen Bits beispielsweise für Sicherheitsprüfungen verwendet werden können). Interessant ist, dass Intel-, AMD- und ARM-Prozessoren mit Unterstützung für LAM, UAI und TBI bisher nur angekündigt, aber noch nicht in großer Stückzahl produziert wurden, was SLAM zum ersten spekulativen Angriff auf zukünftige CPUs macht. Der Angriff kann auch auf älteren AMD Zen+ und Zen 2 CPUs durchgeführt werden, die der Schwachstelle CVE-2020-12965 ausgesetzt sind.
Analog zu den Ausnutzungen von Spectre erfordert der SLAM-Angriff das Vorhandensein bestimmter Befehlsfolgen (Gadgets) im Kernel, die zu spekulativer Ausführung von Befehlen führen. Solche Instruktionen führen zu spekulativem Lesen von Daten aus dem Speicher, abhängig von externen Bedingungen, die vom Angreifer beeinflusst werden können. Nach der Feststellung einer fehlerhaften Vorhersage wird das Ergebnis der spekulativen Ausführung verworfen, doch die bearbeiteten Daten verbleiben im Cache und können später durch Analysen über externe Kanäle extrahiert werden. Zur Extraktion der im Cache verbliebenen Daten haben Forscher die Methode Evict+Reload verwendet, die darauf basiert, Bedingungen zu schaffen, um Daten aus dem Cache zu verdrängen (z. B. wird eine Aktivität erzeugt, die den Cache gleichmäßig mit typischem Inhalt füllt), und Operationen auszuführen, deren Laufzeit darauf hindeutet, ob Daten im Prozessor-Cache vorhanden sind.
Für den SLAM-Angriff werden Gadgets auf Basis von Code verwendet, in dem die vom Angreifer kontrollierten Daten (unten die Variable „secret“) als Zeiger genutzt werden. Beispielsweise: void unmasked_gadget(long **secret) { **secret; }
Es wird angemerkt, dass solche Code-Muster häufig in Programmen verwendet werden. Im Linux-Kernel wurden Zehntausende solcher Gadgets identifiziert, von denen mindestens mehrere Hundert für die Verwendung in Exploits geeignet sind. Die Datenleckage kann durch die Hinzufügung zusätzlicher Instruktionen zu solchen Gadgets, die die spekulative Ausführung blockieren, verhindert werden. Das Unternehmen Intel plant, eine Softwaremethode zur Blockierung von Leckagen vor der Auslieferung von Prozessoren mit Unterstützung für LAM anzubieten. AMD hat empfohlen, bestehende Methoden zur Blockierung von Angriffen der Spectre v2-Klasse zu nutzen. Die Entwickler des Linux-Kernels haben beschlossen, die Unterstützung für LAM standardmäßig zu deaktivieren, bis Intel Empfehlungen zur Blockierung der Schwachstelle veröffentlicht.
Quelle: opennet.ru
