Original-URL des Artikels: https://www.golem.de/news/betriebssysteme-linux-4-16-bringt-spectre-und-meltdown-patches-und-mehr-1804-133608.html    Veröffentlicht: 02.04.2018 06:19    Kurz-URL: https://glm.io/133608

Betriebssysteme

Linux 4.16 bringt Spectre- und Meltdown-Patches und mehr

Während Spectre und Meltdown weiterhin die Arbeit der Kernel-Hacker dominieren, kehrt langsam wieder der Alltag ein. Mit der Freigabe des Linux-Kernels 4.16 gibt es zusätzliche Patches gegen die Schwachstellen aber auch wieder zahlreiche Neuerungen, vor allem beim quelloffenen Treiber für Grafikkarten von AMD.

Die Absicherung gegen die jüngst bekanntgewordenen Sicherheitslücken Spectre und Meltdown schreitet voran, ist aber noch nicht ganz abgeschlossen. Vor allem muss noch weiterer Code im Kernel überprüft werden. Inzwischen nutzen die Kernel-Entwickler ein eigenes Makro, das bei den gefundenen Stellen die spekulative Ausführung abschaltet. Um diese Stellen zu finden, verwenden die Entwickler das proprietäre Werkzeug Coverity. Parallel dazu arbeiten sie an einem eigenen Werkzeug. Jenseits der Arbeiten zur Absicherung gegen Spectre und Meltdown gibt es aber auch weitere Neuerungen in Linux 4.16, insbesondere beim quelloffenen Treiber Amdgpu für Grafikkarten von AMD.

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 array_index_nospec(). Es gibt aber wohl noch einige Stellen im Linux-Code, die bearbeitet werden müssen.

Um den Linux-Kernel gegen Spectre v2 zu schützen, fuhren die Kernel-Hacker bislang zweigleisig. Einerseits verwendeten sie die selbst entwickelte Lösung Retpoline, die vor allem auf älteren CPUs weniger Ressourcen verlangt als die von Intel in seinen Microcode-Updates unter dem Oberbegriff IBC (Indirect Branch Control) integrierten Prozessor-Flags IBRS (Indirect Branch Restricted Speculation), STIBP (Single Thread Indirect Branch Predictors) und IBPB (Indirect Branch Prediction Barrier), die von Linux-Hauptentwicklern kritisiert wurden. Inzwischen setzten die Entwickler um Torvalds fast ausschließlich auf Retpoline, weil diese Lösung weniger Ressourcen benötigt.

Microcode kommt von Intel

Damit Retpoline aber auch richtig funktioniert, muss der zuständige Compiler die entsprechenden Optionen mitbringen. GCC in Version 7.3 vom 24. Januar 2018 unterstützt inzwischen die Schalter -mindirect-branch, -mindirect-branch-loop, -mfunction-return und -mindirect-branch-register, um die spekulative Ausführung zu deaktivieren.

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 Sky-Lake-Prozessoren, nachdem Intel zuvor fehlerhafte Aktualisierungen wieder zurückgezogen hatte. Für CPUs der Haswell- und Broadwell-Reihe gibt es inzwischen ebenfalls Microcode von Intel.

Kernel warnt vor fehlerhaftem Ladevorgang von Microcode

Der Microcode sollte aber bereits geladen werden, bevor der Linux-Kernel startet, sonst könnte unter Umständen IBC nicht korrekt implementiert werden. Ist das der Fall, gibt der Kernel jetzt in den Startmeldungen Dmesg eine entsprechende Warnung aus. Zudem darf der Microcode nicht auf der schwarzen Liste stehen, auf der als problematisch eingestufte Versionen landen. Diese Liste hat in den vergangenen Wochen mehrere Änderungen erfahren, weil Intel teils unzureichende oder widersprüchliche Informationen lieferte.

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 neuen 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 beispielsweise GPUs und CPUs 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. 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), die es seit SMB3 gibt. 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.

Unterstützung für AMDs neuer Verschlüsselung

Die KVM-Hypervisor in Linux 4.16 kann Secure Memory Encryption und Secure Encrypted Virtualization aktueller AMD-Prozessoren nutzen, um Arbeitsspeicher und virtuelle Maschinen zu verschlüsseln. Damit ist das Host-System besser vor Lecks in virtuellen Gastsystemen geschützt, denn auch wenn es einem Angreifer gelingt, aus der virtuellen Maschine auszubrechen, findet er lediglich verschlüsselte Inhalte vor. Auch andere virtuellen Maschinen sind so vor dem Angreifer weitgehend sicher, sofern AMDs Technik auch wirklich so funktioniert wie versprochen.

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 für seine Gebäude- und Kältetechnik verwendet.

Von Siemens stammt der Jailhouse Hypervisor, 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.

Der Compiler des Berkley Packet Filter (BPF) kann jetzt auch mit Funktionsaufrufen umgehen. Damit lassen sich nicht nur künftig Bibliotheken erstellen, auf die der BPF zugreifen kann, diese Bibliotheken können auch von Anwendungen genutzt werden, die etwa Seccomp in der virtuellen Maschine des Paketfilters ausführen.

Bluetooth legt sich schlafen

Bislang mussten Laptop-Besitzer manuell festlegen, dass ein per USB eingebundener Bluetooth-Chip automatisch in den Stromsparmodus wechselt, etwa per Zusatzsoftware wie TLP oder Powertop. Das kann jetzt im Kernel selbst festgelegt werden. Damit sinkt die Leistungsaufnahme um durchschnittlich 0,4 Watt und dürfte die Akkulaufzeit etwa bei Ultrabooks merklich verlängern. Denn mit aktiviertem USB Autosuspend kann auch der Prozessor in einigen Fällen in einen tieferen Schlafmodus versetzt werden.

Diese und weitere Änderungen können mit der finalen Version von Linux 4.16 getestet werden, dessen Quellcode unter kernel.org zum Download bereitsteht.  (jt)


Verwandte Artikel:
Betriebssysteme: Linux 4.16 schließt weitere Spectre- und Meltdown-Lücken   
(13.02.2018, https://glm.io/132729 )
Rdrand: AMD will kaputte Zufallszahlen auf alten CPUs verstecken   
(16.08.2019, https://glm.io/143255 )
Harmony OS: Die große Luftnummer von Huawei   
(15.08.2019, https://glm.io/143184 )
Optimus: Nvidia unterstützt Linux-Technik für Hybridgrafik   
(14.08.2019, https://glm.io/143206 )
Freier CPU-Befehlssatz: Red Hat tritt Risc-V-Foundation bei   
(12.08.2019, https://glm.io/143145 )

© 1997–2019 Golem.de, https://www.golem.de/