In AMD-Prozessoren wurde eine weitere Schwachstelle identifiziert, die Meltdown-Angriffe ermöglicht

Ein Forscherteam der Technischen Universität Graz (Österreich) und des Helmholtz-Zentrums für Informationssicherheit (CISPA) hat Informationen über eine Schwachstelle (CVE-2021-26318) in allen AMD-Prozessoren veröffentlicht, die die Durchführung der Meltdown-Klasse ermöglicht Seitenkanalangriffe (ursprünglich ging man davon aus, dass AMD-Prozessoren nicht von der Meltdown-Schwachstelle betroffen sind). In der Praxis kann der Angriff dazu verwendet werden, verdeckte Kommunikationskanäle einzurichten, Aktivitäten im Kernel zu überwachen oder Informationen über Adressen im Kernel-Speicher zu erhalten, um den KASLR-Schutz zu umgehen und gleichzeitig Schwachstellen im Kernel auszunutzen.

AMD hält es für unangemessen, besondere Maßnahmen zur Blockierung des Problems zu ergreifen, da die Schwachstelle, wie ein ähnlicher im August entdeckter Angriff, unter realen Bedingungen von geringem Nutzen ist, durch die aktuellen Grenzen des Prozessadressraums begrenzt ist und das Vorhandensein bestimmter vorgefertigte Befehlssequenzen (Gadgets) im Kernel. Um den Angriff zu demonstrieren, luden die Forscher ihr eigenes Kernel-Modul mit einem künstlich hinzugefügten Gadget. Unter realen Bedingungen können Angreifer beispielsweise regelmäßig auftauchende Schwachstellen im eBPF-Subsystem nutzen, um die erforderlichen Sequenzen zu ersetzen.

Um sich vor dieser neuen Art von Angriffen zu schützen, empfiehlt AMD die Verwendung sicherer Codierungstechniken, die dabei helfen, Meltdown-Angriffe zu blockieren, beispielsweise die Verwendung von LFENCE-Anweisungen. Die Forscher, die das Problem identifiziert haben, empfehlen die Aktivierung einer strengeren Memory Page Table Isolation (KPTI), die bisher nur für Intel-Prozessoren verwendet wurde.

Während des Experiments gelang es den Forschern, Informationen vom Kernel mit einer Geschwindigkeit von 52 Bytes pro Sekunde an einen Prozess im Benutzerbereich weiterzugeben, da im Kernel ein Gadget vorhanden war, das die Operation „if (offset < data_len) tmp = LUT[Daten[Offset] * 4096];“. Es wurden mehrere Methoden zum Abrufen von Informationen über Seitenkanäle vorgeschlagen, die während der spekulativen Ausführung im Cache landen. Die erste Methode basiert auf der Analyse von Abweichungen in der Ausführungszeit des Prozessorbefehls „PREFETCH“ (Prefetch+Time), die zweite auf der Änderung der Änderung des Energieverbrauchs bei der Ausführung von „PREFETCH“ (Prefetch+Power).

Denken Sie daran, dass die klassische Meltdown-Schwachstelle auf der Tatsache beruht, dass der Prozessor während der spekulativen Ausführung von Anweisungen auf einen privaten Datenbereich zugreifen und das Ergebnis dann verwerfen kann, da die festgelegten Berechtigungen einen solchen Zugriff durch den Benutzerprozess verhindern. Im Programm ist der spekulativ ausgeführte Block durch einen bedingten Zweig vom Hauptcode getrennt, der unter realen Bedingungen immer ausgelöst wird, aber aufgrund der Tatsache, dass die bedingte Anweisung einen berechneten Wert verwendet, den der Prozessor während der präventiven Ausführung nicht kennt Im Code werden alle Verzweigungsoptionen spekulativ ausgeführt.

Da spekulativ ausgeführte Operationen denselben Cache verwenden wie normal ausgeführte Anweisungen, ist es bei der spekulativen Ausführung möglich, Markierungen im Cache zu setzen, die den Inhalt einzelner Bits in einem privaten Speicherbereich widerspiegeln, und dann im normal ausgeführten Code ihren Wert durch Timing zu bestimmen Analysezugriffe auf zwischengespeicherte und nicht zwischengespeicherte Daten.

Source: opennet.ru

Kommentar hinzufügen