Informationen über die neue Klasse von Angriffen (Load Value Injection, ) auf den Mechanismus der spekulativen Ausführung in Intel-CPUs, die zur Durchführung von Schlüssel- und Geheimdatenlecks aus Intel SGX-Enclaves und anderen Prozessen verwendet werden können.
Die neue Angriffs-Klasse basiert auf Manipulationen der gleichen mikroarchitektonischen Strukturen wie bei den Angriffen (Microarchitectural Data Sampling), . Dabei werden neue Angriffe nicht durch bestehende Schutzmaßnahmen gegen Meltdown, Spectre, MDS und ähnliche Angriffe blockiert. Um einen effektiven Schutz gegen LVI zu gewährleisten, sind Hardware-Änderungen an der CPU erforderlich. Bei der Absicherung über Software, durch das Hinzufügen der LFENCE-Anweisung nach jeder Speicherladung und das Ersetzen der RET-Anweisung durch POP, LFENCE und JMP, entstehen zu hohe Kosten — Schätzungen von Forschern zufolge würde ein vollständiger Software-Schutz die Leistung zwischen 2-19 mal verringern.
Teilweise wird die Schwierigkeit, das Problem zu blockieren, dadurch ausgeglichen, dass der Angriff derzeit eher theoretischer als praktischer Natur ist (der Angriff ist theoretisch möglich, aber sehr schwer in der Umsetzung und nur in synthetischen Tests reproduzierbar).
Intel-Unternehmen das Problem als mäßig gefährlich (5,6 von 10) und ein Firmware-Update und SDK für die SGX-Umgebung bereitgestellt, um den Angriff zu umgehen. Die vorgeschlagenen Angriffsmethoden sind derzeit nur für Intel-Prozessoren anwendbar, jedoch ist eine Anpassung von LVI für andere Prozessoren, die für Meltdown-Angriffe anfällig sind, nicht ausgeschlossen.
Das Problem wurde im April letzten Jahres von dem Forscher Jo Van Bulck von der Universität Löwen entdeckt, nach dem fünf grundlegende Angriffsstrategien entwickelt wurden, an denen 9 Forscher anderer Universitäten beteiligt waren, von denen jede die Existenz spezifischerer ermöglicht. Unabhängig davon veröffentlichten im Februar dieses Jahres auch Forscher von Bitdefender Ergebnisse. eine der Angriffsmöglichkeiten von LVI und darüber in Intel berichtet. Die Angriffsmöglichkeiten unterscheiden sich durch die Verwendung verschiedener mikroarchitektonischer Strukturen, wie z. B. Store Buffer (SB), Line Fill Buffer (LFB), Kontextwechsel-Puffer der FPU und Level-1-Cache (L1D), die zuvor in Angriffen wie , , , , und .
Das Haupt von LVI im Vergleich zu den MDS-Angriffen besteht darin, dass MDS die Definition des Inhalts mikroarchitektonischer Strukturen manipuliert, die im Cache nach spekulativer Behandlung von Ausnahmen (Fault) oder Load- und Store-Operationen verbleiben, während
LVI-Angriffe es ermöglichen, dass die Daten des Angreifers in mikroarchitektonische Strukturen eingefügt werden, um die nachfolgende spekulative Ausführung des Codes des Opfers zu beeinflussen. Durch solche Manipulationen kann der Angreifer den Inhalt geschützter Datenstrukturen in anderen Prozessen während der Ausführung bestimmter Codes auf dem Ziel-CPU-Kern extrahieren.
Für im Code des Opfers spezielle Code-Sequenzen (Gadgets), in denen ein vom Angreifer kontrollierter Wert geladen wird, und das Laden dieses Wertes führt zur Erzeugung von Ausnahmen (Fault, Abort oder Assist), die das Ergebnis verwerfen und die Anweisung erneut ausführen. Bei der Behandlung der Ausnahme entsteht ein spekulatives Fenster, während dessen die im Gadget verarbeiteten Daten auslaufen. Insbesondere beginnt der Prozessor, einen Abschnitt des Codes (Gadget) im spekulativen Modus auszuführen, stellt dann fest, dass die Vorhersage fehlerhaft war, und setzt die Vorgänge in ihren ursprünglichen Zustand zurück, aber die im Prozess der spekulativen Ausführung verarbeiteten Daten verbleiben im L1D-Cache und in mikroarchitektonischen Puffern und sind für die Extraktion mit bekannten Methoden zur Bestimmung von Restdaten über Seitenkanäle zugänglich.
Die Ausnahme «assist» wird im Gegensatz zu «fault» im Prozessor ohne den Aufruf von Software-Handlern verarbeitet. Assist kann beispielsweise auftreten, wenn das Bit A (Accessed) oder D (Dirty) in der Seitentabelle des Speichers aktualisiert werden muss. Die größte Schwierigkeit bei Angriffen auf andere Prozesse liegt darin, wie man das Auftreten von Assist initiieren kann, indem man den Zielprozess manipuliert. Derzeit gibt es keine zuverlässigen Methoden, dies zu tun, aber in Zukunft könnte dies möglich sein. Die Möglichkeit, einen Angriff durchzuführen, ist derzeit nur für Intel SGX-Enklaven bestätigt; andere Szenarien sind theoretisch oder können unter synthetischen Bedingungen reproduziert werden (es sind bestimmte Gadgets im Code erforderlich).
Mögliche Angriffsvektoren:
- Datenlecks aus Kernelstrukturen in den Benutzerprozess. Der im Linux-Kernel vorhandene Schutz gegen Angriffe der Klasse Spectre 1 sowie der SMAP-Schutzmechanismus (Supervisor Mode Access Prevention) verringern erheblich die Wahrscheinlichkeit eines LVI-Angriffs. Zusätzlicher Schutz im Kernel kann erforderlich sein, falls in Zukunft einfachere Methoden zur Durchführung von LVI-Angriffen entdeckt werden.
- Datenlecks zwischen verschiedenen Prozessen. Für den Angriff sind bestimmte Codefragmente in der Anwendung und die Bestimmung der Methode zur Ausnahmebehandlung im Zielprozess erforderlich.
- Datenlecks aus der Host-Umgebung in das Gastsystem. Der Angriff wird als zu komplex eingestuft und erfordert die Durchführung verschiedener schwer umsetzbarer Schritte und Vorhersagen über die Aktivitäten im System.
- Datenlecks zwischen Prozessen in verschiedenen Gastsystemen. Der Angriffsvektor ähnelt der Organisation eines Datenlecks zwischen verschiedenen Prozessen, erfordert jedoch zusätzlich komplexe Manipulationen, um die Isolierung zwischen den Gastsystemen zu umgehen.
Forschern wurden veröffentlicht mit einer Demonstration der Prinzipien zur Durchführung eines Angriffs, aber sie sind derzeit für tatsächliche Angriffe ungeeignet. Das erste Beispiel ermöglicht die Umleitung der spekulativen Ausführung von Code im Zielprozess anhand des rückorientierten Programmierens., Return-Oriented Programming). In diesem Beispiel tritt ein speziell präparierter Prozess als Ziel auf, der die erforderlichen Gadgets enthält (die Anwendung der Angriffe auf reale externe Prozesse ist erschwert). Das zweite Beispiel ermöglicht es, in die Berechnungen während der AES-Verschlüsselung innerhalb des Intel SGX-Enklaves einzudringen und einen Datenleck während der spekulativen Ausführung von Anweisungen zu organisieren, um den verwendeten Verschlüsselungsschlüssel wiederherzustellen.

Quelle: opennet.ru
