Software-Design zum Schutz kritischer Systeme vor Meltdown und Spectre

Will Keegan *

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.

Bild 3: Exploit-Möglichkeiten von Spectre.
Bild 3: Exploit-Möglichkeiten von Spectre.
(Bild: Lynx Software)

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.

Bildergalerie

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.

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.

Jetzt Newsletter abonnieren

Verpassen Sie nicht unsere besten Inhalte

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

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)