Abbildung 1: Spectre's Exploit-Möglichkeiten
Meltdown und Spectre sind Sicherheitslücken, die die Rechnerwelt erschüttert haben, und eingebettete Systeme sind nicht immun. Sie offenbaren Konstruktionsfehler, die für sicherheitskritische und sicherheitskritische Systeme potenziell verheerend sein können.
Wenn Ihr Prozessor Out-Of-Order-Ausführung (OoOE) aufweist, müssen Sie über diese neu entdeckten Seitenkanalbedrohungen nachdenken. Meltdown kann besiegt werden, und Patches wurden bereits veröffentlicht - obwohl zum Zeitpunkt des Schreibens einige Patches mehr Probleme verursachen, als sie lösen.
Der Mechanismus von Spectre ist so grundlegend, dass Abschwächung die einzige Hoffnung jenseits der vollständigen Heilung der Vermeidung von CPUs mit Verzweigungsvorhersage und OoOE ist, die gegen die aktuelle "common sense" -Ansicht fliegen würde, dass der damit verbundene Leistungsabfall inakzeptabel ist.
Lynx Software Technologies hat ein Whitepaper zu Spectre veröffentlicht.
Warum sollte Lynx gehört werden? Da es sich auf Hochsicherheitssysteme spezialisiert hat, war der LynxSecure-Kernel ohne Patching immun gegen Meltdown-Angriffe.
"Spectre ist eine größere Sicherheitsherausforderung als Meltdown, die auf nicht autorisierten Speicher im CPU-Cache des Angreifers zugreift, ohne sich auf den direkten Verweis auf Opferspeicher im Angriffscode zu verlassen", sagte Lynx. "Specter ermöglicht es einem Angreifer, nicht autorisierten Speicher sowohl innerhalb eines Anwendungsadressraums - zufälliger Stapel- und Kopfspeicher - als auch über Adressräume, einschließlich Betriebssystem- / Hypervisor-Kernelspeicher, zu extrahieren."
Abbildung 2: LynxSecures Ressourcenallokationskontrolle
Während Meltdown OoOE ausnutzt, kann ein Angreifer indirekt auf den Kernel-Speicher zugreifen, bevor die CPU erkennt, dass der geladene Speicher nicht zum Angriffsprozess gehört. Laut Whitepaper von Lynx greift Specter auf den geschützten Speicher zu, um transiente Codepfade zu untersuchen. Der Angreifer kann nicht direkt auf den Speicher zugreifen, kann ihn jedoch später durch die Cache-Timing-Analyse ableiten.
Spectre zielt auf Codemuster ab, die bedingte Pfade enthalten, die zu nicht autorisiertem Speicherzugriff führen können.
Es wurden zwei verschiedene Methoden zur Nutzung von Verzweigungsvorhersagen identifiziert: "Grenzen-Check-Bypass" und "Verzweigungsziel-Injektion".
Bounds check bypass ist ein Angriff, der den Opfercode mit Begrenzungsschutz für aufrufergesteuerte Indizes auf Speicherfelder abzielt. Durch Trainieren des Verzweigungsprädiktors mit aufeinanderfolgenden Aufrufen der Funktion unter Verwendung 'legaler' (nicht-flüchtiger) Indexwerte versucht der Angreifer die CPU spekulativ anzunehmen, dass der nachfolgende Aufruf sicher in den Speicherarray-Suchcode mit irgendeinem vorübergehenden Indexwert springen kann Adresse im Adressenbereich des Opferprozesses.
Branch Target Injection ist ein Angriff mit Verzweigungsbefehlen, die in variable Zieladressen springen können, die Code ("Gadgets") enthalten, die auf privaten Speicher innerhalb des Adressbereichs des Opfers zugreifen. Durch Trainieren des CPU-Verzweigungsprädiktors kann der Angreifer bewirken, dass der Opfercode in Gadgets springt, die normalerweise nicht zugänglich wären.
In einer zentralen serviceorientierten Architektur muss man hinterfragen, auf welche sensiblen Daten kein Benutzerprozess zugreifen kann, so Lynx. Wie also weiß ein Systementwickler, ob auf Authentifizierungskennwörter und Verschlüsselungsschlüssel so zugegriffen wird, dass keine Informationen zurückverfolgt werden können, die von diesen Daten abhängige Dienste anfordern können, z. B. Benutzeranmeldung?
"Bei Angriffen, die auf spekulative (OoOE) Ausführung beruhen, gibt es sehr wenig, was getan werden kann, um die Mechanik des Angriffs zu korrigieren oder sogar zu erkennen", sagte die Firma. "Der Angriffscode selbst erscheint harmlos, da er einfach immer wieder ganz normale Funktionen ausführt, um einen Verzweigungs-Prädiktor" zu trainieren "sowie Register zu setzen, bevor ein Opferziel aufgerufen wird."
Außerdem, so Lynx, ist es unpraktisch, jedes einzelne Codeelement zu untersuchen, das ein Compiler erstellt, um jedes mögliche Codierungsmuster zu entfernen, das die Umgehung der Grenzkontrolle und die Verzweigung in Gadgets ermöglicht.Ein erster Schritt bei der Reduzierung von Spectre besteht darin, die Möglichkeit auszuschließen, dass kritische Informationen wie administrative Kennwörter und kryptografische Schlüssel durch Code zugänglich sind, der auf demselben CPU-Kern ausgeführt wird.
LynxSecure bietet beispielsweise Steuerelemente für das Systemdesign, mit denen ausgeschlossen werden kann, dass Prozesse durch granulare Zuweisung von Ressourcen Zugriff auf vertrauliche Informationen erhalten. Wenn ein Secret garantiert auf CPU-Ressourcen ausgeführt wird, die völlig unabhängig von einem Benutzerprozess sind, dann gibt es keine Geheimnisse, die Spectre finden kann.
Wenn Sie ein verbundenes sicherheitskritisches oder sicherheitskritisches eingebettetes System betreiben, müssen Sie Meltdown und Spectre in Betracht ziehen. Wenn Sie nichts tun, sind Sie wahrscheinlich anfällig für zukünftige Angriffe.
Behalten Sie Meltdown-Patches im Auge, da einige so schnell wie möglich zurückgezogen werden, und erhalten Sie ein gutes Verständnis von Spectre, um die Geheimnisse Ihres Systems bestmöglich zu schützen.
Lynx Software, Halle 4 - 409.