Software-Design zum Schutz kritischer Systeme vor Meltdown und Spectre
Anbieter zum Thema
Viele kritische Systeme sind anfällig für Meltdown und Spectre, müssen es aber nicht zwangsläufig sein. Die hier beschriebenen Tools und Entwurfsmethoden befähigen Systementwickler dazu, in Hinblick auf diese (und andere) Software- und Hardware-Schwachstellen ein hochgradiges Maß an Leistung und Sicherheit aufrechtzuerhalten.

Meltdown und Spectre geben Aufschluss darüber, wie sich widerstandsfähigere Systeme aufbauen lassen. Weniger ausführlich in der Presse behandelt als die Schwachstellen selbst, die Patch-Probleme oder die “Timelines bis zur Entdeckung”, war jedoch, dass einige Systeme tatsächlich vorbereitet waren und verschont blieben— ohne gepatcht, rekompiliert oder neu designet werden zu müssen [1]. Ihr Unterscheidungsmerkmal? Eine Separation-Kernel-Technologie, die auf der Arbeit von John Rushby [2] basiert und Systementwicklern durch eine gesteigerte Hardwaresteuerung in noch stärkerem Maße dazu befähigt, kritische von nicht-kritischen Rechenumgebungen zu trennen.
Trennung ist ein fundamentales Konzept bei der funktionalen und der Datensicherheit und wird bei High-Assurance-Systemdesigns seit Jahrzehnten eingesetzt. In Bezug auf funktionale Sicherheit stützt sich die Partitionierung von Flugverkehrsystemen auf die Trennung von Komponenten, um deren Schutz zu gewährleisten [3] [4] [5].
Was die Security der Daten betrifft, so baut das US-amerikanische Verteidigungsministerium zur Sicherung von Informationen in höchstgefährdeten Umgebungen auf eine modulare Trennung des Systemdesigns und des kontrollierten Informationsflusses [6] [7].
Innerhalb dieser kritischen Kontexte bedeuten Trennungsfehler geradezu zwangsläufig Safety- und Security-Sicherheitsmängel. Somit fungiert Meltdown praktischer Lackmustest, der aufzeigt, wo sichere Trennungen hinsichtlich Safety und Security erreicht wurden und wo nicht.
Zudem sei hier auch nochmal angemerkt, dass auch vor Meltdown und Spectre Angriffe auf CPUs nichts Unbekanntes waren. Zwei bekannte Beispiele hierfür sind etwa Side-Channel-Angriffe und die sogenannte Out-of-Order-Ausführung. Als Side-Channel-Angriff wird jede Art von Attacke bezeichnet, die auf Informationen basiert, die durch ein physikalisch implementiertes Computersystems generiert werden, im Gegensatz zu Schwächen innerhalb des implementierten Algorithmus selbst. [13].
Bei der Out-Of-Order-Ausführung handelt es sich um ein Optimierungsverfahren, das die maximale Nutzung aller Ausführungseinheiten eines CPU-Kerns so ausgiebig wie möglich erlaubt. Anstatt die Instruktionen genau in der Reihenfolge des Ablaufprogramms auszuführen, führt die CPU diese aus, sobald alle erforderlichen Ressourcen verfügbar sind. Während der Ausführungsbereich für den augenblicklichen Vorgang besetzt ist, können andere Ausführungen schon vorauseilen. [8] Auch vor solchen Schwachstellen ist also ein effizienter Schutz notwendig, der durch gutes Design umgesetzt werden kann.
:quality(80)/p7i.vogel.de/wcms/2d/ce/2dcebfb879ed35ca18f24cf325d4fa46/68983297.jpeg)
So reagieren Sie angemessen auf kritische Sicherheitslücken in Prozessoren
Meltdown – eine Zusammenfassung
Meltdown [8] erlaubt nichtprivilegierten Angreifern, den gesamten physischen Speicher eines Betriebssystems (OS) oder Hypervisors durch das Ausnutzen von Out-Order Execution (OoOE) auszulesen, ein verbreitetes CPU-Performancefeature fast alles Kernel-Designs. OoOE stellt die Berechtigungsauflösung zwischen Benutzer- oder Kernel-Adress-Lookups zurück und profitiert somit vom Adresskonvertierungs-Caching, während Kernel Daten zu und vom Anwendungsspeicher überträgt. Weil sowohl die virtuelle Benutzerprozess- als auch die Kernel-Adresskonvertierungen in den gleichen Lookup-Tabellen gespeichert werden, erlaubt es die durch OoOE zurückgestellte Berechtigungsauflösung Angreiferanwendungen, direkt auf unautorisierte virtuelle Kernel-Adressen in ihrem Programm zuzugreifen, um unautorisierten Speicher im CPU-Cache zu laden. Die CPU gibt letztlich einen Speicherzugriffsausnahmefehler für die Speicherreferenz des Angreifers auf Kernel-Adressen aus, stellt jedoch nicht den Zustand des Cache wieder her. Daraufhin verwendet der Angreifer eine fortgeschrittene subversive Methode (Cache-Timing-Analyse) [16], um den Zustand des Cache zu untersuchen und dabei die Werte des temporär referenzierten Kernel-Speichers abzuleiten.
Die Lösung für Meltdown
Eine einfache, sofwareseitig handhabbare Lösung für Meltdown sind Seitentabellenisolation und Least-Privilege-Speicherzugriff - im LynxSecure Separation Kernel bereits integrierte Methoden. Das sogenannte Least-Leverage-Prinzip erfordert, dass in einem bestimmten Abstraction Layer einer Rechenumgebung jedes Modul (das kann je nach Gegenstand ein Prozess, ein Nutzer oder ein Programm sein) nur auf die Informationen und Ressourcen zugreifen darf, die für seine rechtmäßige Aufgabe notwendig sind.
In LynxSecure werden alle Kernel-zu-physischen-Adressen in einer komplett anderen Seitentabelle anstatt in Anwendungs-/Gast-OS-Seitentabellen gespeichert. Alternativ zu herkömmlichen zentralisierten ressourcen- und dienstorientierten Designs sind, ist LynxSecure sowohl aus Kernel-Konstruktions- als auch aus Benutzermodell-Perspektive tief in einem Least-Privilege-Design verwurzelt. LynxSecure erzwingt einen dezentralisierten Designansatz, bei dem jede Gast-Computing-Umgebung unabhängig ist. Durch die Autonomie jeder Gastumgebung wird vermieden, dass der Kernel globale Dienste bereitstellen muss.
(ID:45228203)