Kernel-Log: Neue Linux-Kernel verbessern Spectre- und Meltdown-Schutz

Neue Linux-Versionen der Stable- und Longterm-Kernel-Serien 4.15 und 4.14 verbessern vor allem den Schutz vor der Prozessorlücke Spectre. Vollständig sind die Gegenmaßnahmen der Kernel-Entwickler aber nach wie vor nicht.

In Pocket speichern vorlesen Druckansicht 91 Kommentare lesen
Kernel-Log: Neue Linux-Kernel verbessern Spectre- und Meltdown-Schutz
Lesezeit: 6 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Die am späten Mittwochabend erschienen Linux-Versionen 4.15.2 und 4.14.18 haben endlich Maßnahmen gegen die erste Variante der Sicherheitslücke Spectre gebracht. Ferner haben die Kernel-Entwickler den Schutz vor der zweiten Spectre-Variante nochmal erheblich verstärkt. Beim Meltdown-Schutz gab es indes nur noch einige Detailverbesserung. Der Schutz vor den Anfang Januar publik gewordenen Prozessorlücken Meltdown und Spectre ist damit zwar nach wie vor nicht komplett, macht dadurch aber einen großen Schritt vorwärts und ist jetzt ziemlich umfassend.

Linux 4.15.2 bringt endlich Kernel-seitigen Schutz vor der Prozessor-Sicherheitslücke Spectre v1.

Zum Schutz vor der ersten Spectre-Variante (Bounds Check Bypass; CVE-2017-5753) haben die Entwickler zuerst nach potenziell für die Lücke anfällige Stellen im Kernel-Code gesucht. Einige solcher haben sie dann geändert, um eine spekulative Ausführung dort zu unterbinden und die Lücke so auszuhebeln. Das gelingt durch den Aufruf des eigens dafür geschaffenen Makros array_index_nospec(). Dieses sowie die darauf aufbauenden Änderungen wurden erst im Hauptentwicklungszweig vorgenommen (u. a. 1, 2, 3, 4, 5, Dokumentation), aus dem wahrscheinlich am Sonntag, den 11. Februar, die erste Vorabversion von Linux 4.16 hervorgehen wird; kurz darauf flossen diese Änderungen auch in Linux 4.15.2 und 4.14.18 zurück.

Die Spectre-v1-Gegenmaßnahmen sind auch in Linux 4.14.18 und die Vorabversion von Linux 4.16 eingeflossen.

Vieles deutet aber darauf hin, dass noch mehr Stellen im Kernel-Code ähnlich geändert werden müssen. Außerdem müssen die Entwickler beim Schreiben neuen Codes darauf achten, das Makro an potenziell anfälligen Stellen einzubauen. Indizien zufolge ist ein neues Tool in Arbeit, das solche Stellen aufzeigt. Bislang greifen einige Entwickler für diese Aufgabe auf das proprietäre Werkzeug Coverity zurück.

Zum Schutz vor der zweiten Spectre-Variante (Branch Target Injection / BTI; CVE-2017-5715) wissen die neuesten Linux-Versionen jetzt auch die Prozessor-Flags IBRS, STIBP und IBPB zu nutzen. Diese hatte Intel mit Microcode-Updates nachgerüstet, damit Betriebssystemhersteller damit einen Spectre-v2-Schutz implementieren können. Aufgrund von Problemen hatte Intel den neuen Microcode dann aber am 22. Januar zurückgezogen und bereitet eine neue Fassung vor.

Für eine ganze Reihe von Linux-Systemen ist das aber ganz egal, denn seit Linux 4.15-rc8, 4.14.14 und 4.9.77 kann der Kernel per Retpoline vor Spectre v2 schützen. Dieser auf der dritten Seite des Kernel-Log zu Linux 4.15 erläuterte Ansatz funktioniert ganz ohne Microcode-Update und hat zugleich auf vielen älteren Prozessoren auch noch viel weniger Performance-Overhead. Doch auch Retpoline hat einen Nachteil, denn der Schutz erfordert Hilfe vom Compiler, die erst das jüngst veröffentlichte GCC 7.3 zu leisten vermag.

Außerdem reicht Retpoline in einigen Situationen nicht. Und genau in solchen können Linux 4.16-rc1, 4.15.2 und 4.14.18 jetzt auf die neuen Flags zurückgreifen, die Intel per Microcode-Updates nachrüstet. Das ist etwa zum sicheren Virtualisieren von Betriebssystemen wichtig: Beim Wechsel von einer Virtual Machine (VM) zurück zum Host oder einer anderen VM greift Linux jetzt auf IBPB zurück (u. a. 1, 2). Außerdem können diese Kernel-Versionen die Prozessor-Flags jetzt handhaben und an virtuelle Maschinen durchreichen – sowohl bei Intel- als auch bei AMD-Prozessoren. Das ist zum sicheren Virtualisieren von Betriebssystemen nötig, die zum Spectre-v2-Schutz auf Intels Prozessor-Flags zurückgreifen. Außerdem versucht der Kernel auch als " non dumpable" deklarierte Programme wie GPG per IBPB zu schützen, das einen signifikanten Performance-Overhead hat. All das klappt so oder so aber nur mit neuen und bald erwarteten Microcode-Updates, denn bei den Problem-behafteten Microcode-Ausführungen ignoriert der Kernel die neuen Prozessor-Flags. [Update 20180209-1515] Für Skylake-Prozessoren, zahlreiche Atoms und damit verwandte Celerons gibt es nun wieder Microcode-Updates – zunächst allerdings nur für OEM-Partner. [/Update]

Die Entwicklung der Spectre-v2-Gegenmaßnahmen für den Linux-Kernel ist keineswegs abgeschlossen. Die Programmierer haben etwa bereits einige Änderungen vorgenommen, damit Retpoline auch auf Intel-Prozessoren der Skylake-Generation funktioniert; möglicherweise sind aber noch mehr Anpassungen nötig, damit der Schutz auf Intels modernen Prozessoren ausreichend funktioniert.

CPU-Sicherheitslücken Meltdown und Spectre

Gegen Meltdown (Rogue Data Cache Load/CVE-2017-5754) schützt der Kernel schon seit den zum Jahreswechsel freigegeben Linux-Versionen 4.15-rc6 und 4.14.11 per PTI (Page Table Isolation). An diesem ebenfalls im Kernel-Log zu Linux 4.15 näher beschriebenem Ansatz haben die Entwickler zwischenzeitlich nur einige Detailverbesserung vorgenommen. Die Mitte Januar erstmals gezeigte PTI-Implementierung für 32-Bit-x86-Systeme ist allerdings noch nicht auf dem Weg in den offiziellen Kernel. [Update 20180210-0745] Wenige Stunden nach Veröffentlichung dieses Textes ist eine neue Fassung der PTI-Patches für 32-Bit-x86-Systeme erschienen, mit der die Patches einen deutlich Entwicklungssprung vorwärts machen. [/Update]

An vorderster Front mitlaufende Distributionen wie Arch Linux, Fedora und OpenSuse Tumbleweed arbeiten bereits daran, Linux 4.15.2 oder 4.14.18 als reguläres Update an die Nutzer auszuliefern. Auf ältere Linux-Versionen setzende Linux-Distributionen dürften die neuesten Gegenmaßnahmen vermutlich in ihre Kernel übernehmen. Manche Distributionen liefern ohnehin schon frühere Fassungen der jetzt in den offiziellen Kernel integrierten Spectre-v1-Gegenmaßnahmen aus. Red Hat Enterprise Linux, Suse Enterprise Linux, Ubuntu und einige andere setzen gegen Spectre v2 indes nach wie vor auf Änderungen, die statt Retpoline komplett auf die neuen Prozessor-Flags von Intel zurückgreifen. [Update 20180209-0915] Suse hat kurz vor Veröffentlichung dieses Textes begonnen, erste Kernel-Updates für Suse Linux Enterprise aufzuliefern, die Retpoline als Specte-v2-Schutz nutzen. [/Update]

Nachdem die Stoßrichtung der Entwickler des offiziellen Linux-Kernels jetzt klar ist, dürfte in den nächsten Wochen eine gewisse Konsolidierung auf die jetzt in Linux eingeflossenen Lösungen erfolgen. Die schlimmste Gefahr ist somit wohl bald gebannt, sobald Intel die verbesserten Microcodes denn irgendwann breit ausliefert.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes Video (Kaltura Inc.) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Kaltura Inc.) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes Video (Kaltura Inc.) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Kaltura Inc.) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes Video (Kaltura Inc.) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Kaltura Inc.) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

(thl)