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
