Eine Forschergruppe der Technischen Universität Graz (Österreich), die zuvor für die Entwicklung der Angriffe MDS, NetSpectre, Throwhammer und ZombieLoad bekannt war, hat eine neue Angriffsmethode (CVE-2021-3714) über Seitenkanäle auf den Mechanismus der Speicherdeduplication veröffentlicht, die es ermöglicht, das Vorhandensein bestimmter Daten im Speicher zu erkennen, byteweise Speicherinhalte zu leaken oder das Speicherlayout zur Umgehung von Adressrandomisierungsschutz (ASLR) zu bestimmen. Im Gegensatz zu früheren Angriffsmethoden auf den Deduplication-Mechanismus unterscheidet sich diese neue Methode dadurch, dass die Angriffe von einem externen Host aus durchgeführt werden, wobei die Änderung der Antwortzeiten auf die vom Angreifer gesendeten Anfragen über die Protokolle HTTP/1 und HTTP/2 als Kriterium verwendet wird. Die Möglichkeit zur Durchführung des Angriffs wurde für Server auf Basis von Linux und Windows demonstriert.
Angriffe auf den Mechanismus der Speicherdeduplication nutzen die Zeitdifferenz bei der Verarbeitung von Schreiboperationen als Kanal zum Leaken von Informationen, wenn die Änderung der Daten zu einer Klonierung der deduplizierten Speicherseite mithilfe des Copy-On-Write (COW)-Mechanismus führt. Während des Betriebs erkennt der Kernel identische Speicherseiten von verschiedenen Prozessen und kombiniert sie, indem er identische Speicherseiten in einen Bereich des physischen Speichers zusammenführt, um nur eine Kopie zu speichern. Wenn ein Prozess versucht, Daten, die mit den deduplizierten Seiten verbunden sind, zu ändern, tritt eine Ausnahme (page fault) auf, und mithilfe des Copy-On-Write-Mechanismus wird automatisch eine separate Kopie der Speicherseite erstellt, die dem Prozess zugeordnet wird. Das Kopieren erfordert zusätzliche Zeit, was ein Hinweis auf die Änderung von Daten ist, die sich mit einem anderen Prozess überschneiden.
Die Forscher zeigten, dass die durch den COW-Mechanismus verursachten Verzögerungen nicht nur lokal erfasst werden können, sondern auch durch die Analyse der Änderung der Netzwerkantwortzeiten. Es wurden mehrere Methoden zur Erkennung von Speicherinhalten von einem entfernten Host durch die Analyse der Ausführungszeiten von Anfragen über die Protokolle HTTP/1 und HTTP/2 vorgeschlagen. Zur Aufrechterhaltung der generierten Muster werden typische Web-Anwendungen verwendet, die Informationen aus den eingehenden Anfragen im Speicher speichern.
Das allgemeine Prinzip des Angriffs besteht darin, die Server Infolge von Dekodierung von Seiten im Arbeitsspeicher können potenziell bereits vorhandene Inhalte auf dem Server wiederholt werden. Der Angreifer wartet dann die Zeit ab, die das Kernelsystem benötigt, um die Dekodierung zu bewerkstelligen und die Seiten im Arbeitsspeicher zu verschmelzen, um danach die kontrollierte Duplikate der Daten zu ändern und die Reaktionszeit zu bewerten, um den Erfolg des Angriffs zu bestimmen.

In den durchgeführten Experimenten betrug die maximale Geschwindigkeit des Informationslecks 34,41 Bytes pro Stunde bei einem Angriff über das globale Netzwerk und 302,16 Bytes pro Stunde bei einem Angriff über das lokale Netzwerk, was schneller ist als andere Methoden zur Datenextraktion über externe Kanäle (zum Beispiel beträgt die Datenübertragungsrate bei einem NetSpectre-Angriff 7,5 Bytes pro Stunde).
Drei funktionierende Angriffsvarianten wurden vorgeschlagen. Die erste Variante ermöglicht die Bestimmung von Daten im Arbeitsspeicher Webserver, bei der Memcached genutzt wird. Der Angriff besteht darin, bestimmte Datensätze in den Memcached-Speicher zu laden, den deduplizierten Block zu löschen, dasselbe Element erneut zu schreiben und Bedingungen für die Entstehung von COW-Kopien zu schaffen, indem der Inhalt des Blocks verändert wird. Im Verlauf des Experiments mit Memcached konnte innerhalb von 166,51 Sekunden die version von libc bestimmt werden, die im System einer virtuellen Maschine installiert war.
Die zweite Variante ermöglichte es, den Inhalt von Datensätzen in der Datenbank MariaDB zu erfahren, indem der Inhalt Byte für Byte im InnoDB-Speicher rekonstruiert wurde. Der Angriff erfolgt durch das Senden speziell modifizierter Anfragen, die zu einbyteigen Abweichungen in den Arbeitsspeicherseiten führen und die Reaktionszeit analysieren, um festzustellen, ob die Vermutung zum Inhalt des Bytes korrekt war. Die Geschwindigkeit eines solchen Lecks ist gering und beträgt 1,5 Bytes pro Stunde bei einem Angriff aus dem lokalen Netzwerk. Ein Vorteil der Methode ist, dass sie verwendet werden kann, um unbekannte Inhalte des Arbeitsspeichers wiederherzustellen.
Die dritte Variante ermöglichte es, innerhalb von 4 Minuten den KASLR-Schutzmechanismus vollständig zu umgehen und Informationen über die Offsetposition im Arbeitsspeicher des Kernel-Images der virtuellen Maschine zu erhalten, wenn die Offset-Adresse sich in einer Seite im Arbeitsspeicher befindet, deren andere Daten unverändert bleiben. Der Angriff wurde von einem Host aus durchgeführt, der sich 14 Sprüngen (Hops) von dem angegriffenen System entfernt befindet. Beispiele für den Code zur Durchführung der vorgestellten Angriffe sollen auf GitHub veröffentlicht werden.
Quelle: opennet.ru
