Zum Hauptinhalt Zur Navigation

Betriebssysteme: Linux 4.16 schließt weitere Spectre- und Meltdown-Lücken

Spectre und Meltdown dominieren weiterhin die Arbeit der Kernel-Hacker. Mit der Freigabe der ersten Testversion des kommenden Linux-Kernels 4.16 gibt es zusätzliche Patches gegen die Schwachstellen, die auch in Kernel-Versionen 4.15.2 und 4.14.18 eingeflossen sind.
/ Jörg Thoma
1 Kommentare News folgen (öffnet im neuen Fenster)
Linux 4.16 wappnet sich weiter gegen Spectre und Meltdown. (Bild: Jerzy Strzelecki)
Linux 4.16 wappnet sich weiter gegen Spectre und Meltdown. Bild: Jerzy Strzelecki / CC-BY 3.0

Die Absicherung gegen die jüngst bekanntgewordenen Sicherheitslücken Spectre und Meltdown schreitet voran, ist aber noch nicht ganz abgeschlossen. Einerseits muss noch weiterer Code im Kernel überprüft werden, andererseits warten auch die Kernel-Entwickler auf Microcode-Updates von Intel. Es gibt aber auch Neuerungen in Linux 4.16rc1, die nichts mit den Schwachstellen zu tun haben.

Daniel Gruß über Meltdown und Spectre - Interview
Daniel Gruß über Meltdown und Spectre - Interview (16:35)

Zu den Änderungen, die bereits in die Kernel-Versionen 4.15.2 und 4.14.18 zurückportiert wurden, gehören vor allem die bislang fehlenden Patches für Spectre v1. Dazu haben die Entwickler zunächst Code im Linux-Kernel durchsucht und geändert, um die spekulative Ausführung zu unterbinden. Sie bedienten sich eines eigens dafür entwickelten Makros(öffnet im neuen Fenster) array_lindex_nospec() . Es gibt aber wohl noch einige Stellen im Linux-Code, die bearbeitet werden müssen(öffnet im neuen Fenster) .

Um den Linux-Kernel gegen Spectre v2 zu schützen, fahren die Hacker zweigleisig. Einerseits verwenden sie die selbst entwickelte Lösung Retpoline, die vor allem auf älteren CPUs weniger Ressourcen verlangt als die von Intel in seinen Microcode-Updates integrierten Prozessor-Flags IBRS (Indirect Branch Restricted Speculation), STIBP (Single Thread Indirect Branch Predictors) und IBPB (Indirect Branch Prediction Barrier), die von Linux-Hauptentwickler kritisiert wurden . Damit Retpoline aber auch richtig funktioniert, muss der zuständige Compiler die entsprechenden Optionen mitbringen. GCC in Version 7.3 vom 24. Januar 2018(öffnet im neuen Fenster) unterstützt inzwischen die Schalter -mindirect-branch , -mindirect-branch-loop , -mfunction-return und -mindirect-branch-register , um die spekulative Ausführung zu deaktivieren.

Intels Microcode gebraucht

Retpoline funktioniert aber nicht in allen Fällen. Besonders beim Wechsel zwischen virtuellen Maschinen müssen stattdessen die von Intel bereitgestellten Flags verwendet werden, etwa IBPB, die nicht nur von Linux 4.16rc1, sondern auch von 4.15.2 und 4.14.18 genutzt werden, sofern Intel einen funktionierenden Microcode bereitstellt. Seit dem 8. Februar 2018 gibt es Microcode-Updates für Skylake-Prozessoren, nachdem Intel zuvor fehlerhafte Aktualisierungen wieder zurückgezogen hatte. Für CPUs der Haswell- und Broadwell-Reihe sind Updates laut Intel in Arbeit .

Gegen Meltdown gibt es bereits seit Anfang des Jahres die Patches namens Page Table Isolation (PTI), die zwischenzeitlich aber noch verfeinert worden sind und inzwischen auch für x86-Systeme in der 32-Bit-Version umgesetzt wurden. Bis alle Distributionen diese Patches einpflegen und zur Verfügung stellen, wird aber noch einige Zeit vergehen. Nach wie vor kann mit den Befehlen cat /sys/devices/system/cpu/vulnerabilities/spectre_v1 , cat /sys/devices/system/cpu/vulnerabilities/spectre_v2 und cat /sys/devices/system/cpu/vulnerabilities/meltdown geprüft werden, ob ein System sicher ist oder nicht. Nebenbei haben die Entwickler Process Context Identifiers (PCID) für Gastsysteme in Microsofts Virtualisierungslösung Hyper-V umgesetzt und damit die Leistungseinbußen durch die Meltdown-Patches zumindest teilweise aufgefangen.

Für IBMs Systeme Z s390 gibt es mit Expolines ebenfalls Patches gegen Spectre v2 und die Funktion array_index_mask_nospec , die gegen Spectre v1 schützen soll. Und auch für ARMs 64-Bit-Systeme gibt es inzwischen Patches für alle drei Schwachstellen.

Jenseits von Spectre und Meltdown

Jenseits der Patches für Spectre und Meltdown haben die Kernel-Hacker an zahlreichen neue Funktionen gearbeitet. Nach der umfangreichen Code-Einreichung für den freien Treiber für Grafikkarten von AMD im letzten Linux-Kernel ist es in der aktuellen Fassung etwas ruhiger geworden. Der Display-Code wurde um die Unterstützung mehrerer Bildschirme erweitert. Außerdem wird das Fehlerkorrekturverfahren (Error Correcting Code, ECC) den Arbeitsspeicher der Vega-Karten unterstützen, die diesen nutzen.

Nach wie vor arbeiten die Kernel-Hacker an dem AMDKFD HSA genannten Treiber, der unter anderem das Mining auf AMDs Grafikkarten unter Linux verbessert. Die Heterogenous-System-Architektur ermöglicht GPUs und CPUs beispielsweise, auf einen gemeinsamen Adressraum im Arbeitsspeicher zuzugreifen und so die Leistung der Accelerated Processing Units (APUs) der Grafikkarte zu optimieren. Die jetzt eingereichten Patches schaffen die Grundlage für AMDKFD HSA, der voraussichtlich in den nächsten Linux-Kernel 4.17 Einzug hält. Darüber hinaus haben die Entwickler den nach wie vor umfangreichen Code weiter optimiert und aufgeräumt.

Nouveau unterstützt Geforce GT 1030

Der freie Nouveau-Treiber für Grafikkarten von Nvidia kann jetzt mit signierter Firmware für Secure Boot die Hardwarebeschleunigung von Grafikkarten der Geforce-GT-1030er-Reihe nutzen. Für die Kepler-Chips der Geforce-600er- und 700er-Reihe gibt es per Clock-Gating die Möglichkeit, das Taktsignal der GPUs besser zu beeinflussen. In den nächsten Versionen des Linux-Kernels soll das auch für weitere Nvidia-Chips funktionieren. Außerdem wurden weitere Arbeiten am Intel-Treiber vorgenommen, die die Unterstützung für Intels integrierte Grafikchips in Cannondale-CPUs verbessern.

Eine kleine Änderung in der Art und Weise, wie der Linux-Kernel die Inode-Verwaltung in Dateisystemen verwaltet, soll einen großen Leistungszuwachs nach sich ziehen, besonders bei Lese- und Schreibzugriffen mit kleinen Dateien. Zuvor wurde bei jedem Zugriff auf Inodes und Metadaten das Feld i_version inkrementell aktualisiert. Es stellte sich jedoch heraus, dass i_version nur ganz selten ausgelesen wird. Jetzt wurde das API so angepasst, dass lediglich relevante Änderungen festgehalten werden. Laut dem Entwickler Jeff Layton soll etwa bei dem Dateisystem XFS per DAX eine Leistungssteigerung von 240 Prozent bei 4 KByte Schreibzugriffen erzielt worden sein(öffnet im neuen Fenster) . Diese Änderung soll die Leistungseinbrüche etwas auffangen, die durch die Retpoline-Patches verursacht worden sind.

Leistungsschub für SD-Karten

Ansonsten blieb es bei den Dateisystemen vergleichsweise ruhig: Für XFS, Ext4 und F2FS gab es nur einige Verbesserungen. Auch im Block-Subsystem gab es nur wenige Verbesserungen, unter anderem bei NVMe und dem BCache. Bemerkenswert ist jedoch der Patch, der dem Multimediacard-Subsystem die Nutzung des Multiqueue-Block-API erlaubt. Damit dürften die Zugriffe etwa auf SD-Karten deutlich beschleunigt werden.

Das Netzwerkdateisystem CIFS (Common Internet File System) für Zugriff auf Windows-Server bekommt eine noch experimentelle Unterstützung für SMB Direct (Server Message Block). Damit kann ein Client den Speicherdirektzugriff (DMA) des Servers beim Übertragen von SMB-Pakten nutzen. Das Network File System (NFS) kann per statx() lokal verfügbare Informationen abfragen, statt sie vom Server anzufordern.

Gasttreiber für Virtualbox

Seit einiger Zeit arbeitet der Red-Hat-Angestellte Hans de Goede daran, die unter der Ägide von Oracle entwickelte Virtualisierungslösung Virtualbox an den Linux-Kernel anzupassen - zumindest die Treiber, die für den Betrieb von Linux als Gastsystem benötigt werden. In den aktuellen Kernel hat es jetzt das Modul vboxguest geschafft. Damit werden beispielsweise OpenGL-Fähigkeiten der Grafikkarte an das Gastsystem durchgereicht, aber auch Copy and Paste ist zwischen Gast und Host ebenso möglich wie das Darstellen einzelner virtueller Anwendungen im einzelnen Fenster - dem sogenannten Seamless Modus. Im nächsten Schritt will de Goede noch die Unterstützung für Shared Folders umsetzen, das den Datentausch zwischen Gast und Host erleichtert. Der Videotreiber vboxvideo bleibt aber vorerst im Staging-Bereich des Kernels, offenbar überzeugte die Qualität des Codes die Kernel-Hacker immer noch nicht vollends.

Netwares IPX fliegt raus, Eckelmanns Siox kommt rein

Im Staging-Bereich gelandet ist auch der Code für Netwares IPX- und NCPFS-Netzwerkprotokolle. Von dort soll er aber bald ausgemustert werden, denn er ist alt, wird nicht mehr gepflegt und vor allem nicht mehr genutzt. Bemerkenswert ist auch das neue Subsystem für das Bus-System Siox. Siox wird von dem Unternehmen Eckelmann(öffnet im neuen Fenster) für seine Gebäude- und Kältetechnik verwendet.

Von Siemens stammt der Jailhouse Hypervisor(öffnet im neuen Fenster) , der schlanker ausfallen soll als die Linux-eigene Kernel Virtual Machine (KVM) und vor allem auf Realtime und Security ausgerichtet ist. Mit dem aktuellen Kernel gibt es jetzt die Möglichkeit, Linux als Gastsystem in den sogenannten Jailhouse-Cells ohne Root-Rechte laufen zu lassen.

Diese und weitere Änderungen können mit Linux 4.16rc1 getestet werden, dessen Quellcode unter kernel.org(öffnet im neuen Fenster) zum Download bereitsteht. Bleibt es diesmal bei der üblichen sechswöchigen Testphase, erscheint die finale Version voraussichtlich Anfang April 2018.


Relevante Themen