Schwachstellen im MMIO-Mechanismus von Intel-Prozessoren

Intel hat Informationen über eine neue Klasse von Datenlecks durch mikroarchitektonische Strukturen von Prozessoren veröffentlicht, die es ermöglichen, durch Manipulation des MMIO-Mechanismus (Memory Mapped Input Output) Informationen zu ermitteln, die auf anderen CPU-Kernen verarbeitet werden. Schwachstellen ermöglichen beispielsweise das Extrahieren von Daten aus anderen Prozessen, Intel SGX-Enklaven oder virtuellen Maschinen. Die Schwachstellen betreffen nur Intel-CPUs; Prozessoren anderer Hersteller sind von den Schwachstellen nicht betroffen.

Die Schwachstellen treten in verschiedenen Intel-CPUs auf, darunter Prozessoren, die auf den Mikroarchitekturen Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake und Rocketlake basieren, sowie in Xeon EP/EX-, Scalable- und einigen Atom-Serverprozessoren. Zur Durchführung eines Angriffs ist ein Zugriff auf MMIO erforderlich, der beispielsweise in Virtualisierungssystemen erlangt werden kann, die den Zugriff auf MMIO für vom Angreifer kontrollierte Gastsysteme ermöglichen. Möglicherweise ist auch ein Fix für Systeme erforderlich, die isolierte Intel SGX-Enklaven (Software Guard Extensions) verwenden.

Das Blockieren der Schwachstelle erfordert sowohl ein Mikrocode-Update als auch die Verwendung zusätzlicher Software-Schutzmethoden, die auf der Verwendung der VERW-Anweisung basieren, um den Inhalt von Mikroarchitekturpuffern zu löschen, wenn vom Kernel in den Benutzerbereich zurückgekehrt wird oder die Kontrolle an das Gastsystem übertragen wird. Ein ähnlicher Schutz wird auch verwendet, um zuvor erkannte Angriffe der Klassen MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) und TAA (Transactional Asynchronous Abort) zu blockieren.

Auf der Mikrocode-Seite wurden die zur Implementierung des Schutzes erforderlichen Änderungen im Mai-Mikrocode-Update für Intel-CPUs (IPU 2022.1) vorgeschlagen. Im Linux-Kernel ist der Schutz vor einer neuen Klasse von Angriffen in den Versionen 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 und 4.9.319 enthalten. Um die Anfälligkeit des Systems gegenüber Schwachstellen in MMIO zu überprüfen und die Aktivität bestimmter Schutzmechanismen zu bewerten, wurde dem Linux-Kernel die Datei „/sys/devices/system/cpu/vulnerabilities/mmio_stale_data“ hinzugefügt. Um die Einbeziehung des Schutzes zu steuern, wurde der Kernel-Boot-Parameter „mmio_stale_data“ implementiert, der die Werte „full“ (ermöglicht die Reinigung von Puffern beim Verschieben in den Benutzerbereich und in der VM), „full,nosmt“ ( als „full“ + deaktiviert zusätzlich SMT/Hyper-Threads) und „off“ (Schutz deaktiviert). Für den Xen-Hypervisor und das Qubes-Betriebssystem werden separate Fixes angeboten.

Der Kern der identifizierten Schwachstellenklasse besteht darin, dass einige Vorgänge dazu führen, dass nach der Ausführung auf anderen CPU-Kernen verbleibende Daten von einem Puffer der Mikroarchitektur in einen anderen kopiert oder verschoben werden. Schwachstellen in MMIO ermöglichen die Übertragung dieser Restdaten von isolierten Puffern der Mikroarchitektur in für die Anwendung sichtbare Register oder CPU-Puffer. Für die Extraktion von Restdaten über MMIO wurden drei Methoden identifiziert:

  • DRPW (Device Register Partial Write, CVE-2022-21166) ist ein Problem mit der falschen Verarbeitung von Schreibvorgängen in einige MMIO-Register. Wenn die Größe der geschriebenen Daten kleiner ist als die Größe des Registers, werden auch die Restinformationen aus den Füllpuffern in das Register kopiert. Infolgedessen kann ein Prozess, der einen unvollständigen Schreibvorgang in das MMIO-Register initiiert, in den Puffern der Mikroarchitektur verbleibende Daten aus Vorgängen erhalten, die auf anderen CPU-Kernen ausgeführt werden.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) ist ein Leck von Restdaten aus einem Kernel-gebundenen Füllpuffer, der aus der Bewegung von Zwischenpuffern resultiert, die allen Kerneln gemeinsam sind.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) – das Problem ähnelt SBDS, unterscheidet sich jedoch darin, dass Restdaten in für Anwendungen sichtbaren CPU-Strukturen landen können. SBDS- und SBDR-Probleme treten nur auf Prozessoren für Clientsysteme und auf der Intel Xeon E3-Serverfamilie auf.

Schwachstellen im MMIO-Mechanismus von Intel-Prozessoren


Source: opennet.ru

Kommentar hinzufügen