Die Neuerungen von Linux 4.16

Seite 7: Sicherheit & Infrastruktur

Inhaltsverzeichnis

Neben der Arbeit an den Maßnahmen gegen Meltdown und Spectre gab es noch andere Umbauten, um die Sicherheit von Linux zu verbessern.

Beim Erzeugen einer Konfigurationsdatei zum Kernel-Bau wird jetzt auch bei ARM64- und x86-Systemen standardmäßig die Option STRICT_DEVMEM aktiviert, die einen Zugriff auf den gesamten Arbeitsspeicher via /dev/mem unterbindet. Das empfiehlt sich aus Sicherheitsgründen schon lange; daher setzen Linux-Distributionen die Option bereits seit Jahren. Dass die Standardkonfiguration erst jetzt geändert wurde, zeigt eine der Gefahren, die beim unbedarften Konfigurieren eigener Kernel-Images lauern. Hier setzt auch eine andere Änderung an: Der Stack Protector wird automatisch aktiviert, sofern der Compiler die Funktion beherrscht.

Ein Schwung von Änderungen verspricht den per HARDENED_USERCOPY aktivierten Schutz zu verbessern, der den Datenaustausch zwischen Kernel und Userspace absichert; Details hierzu liefert ein LWN.net-Artikel (u. a. 1, 2, 3).

Das Crypto-Subsystem bringt jetzt einen Treiber für den Platform Security Processor (PSP) mit, der Teil der AMD Secure Processor (AMD-SP) genannten Prozessor-Features von AMD ist (u. a. 1, 2, 3). Dieser Treiber ist beim individuellen Verschlüsseln des Arbeitsspeichers von virtuellen Maschinen mit AMD SEV involviert, das KVM mit Linux 4.16 lernt.

Der Kernel unterstützt jetzt die ARMv8 Crypto Extensions für Hash-Erzeugung mit SHA-512 und SHA3, die die ARMv8-Standards 8.0 respektive 8.2 definieren.

Auch der Powerpc-Code unterstützt jetzt die bei Linux 4.9 eingeführten "Memory Protection Keys" (Pkeys), mit denen Prozesse die im Arbeitsspeicher hinterlegten Daten effizienter vor unerwünschten Zugriffen schützen können. Durch diese seit GNU C Library (glibc) 2.27 unterstützte Funktion kann ein Verschlüsselungsprogramm beispielsweise sicherstellen, dass nur der Thread den Chiffrierungsschlüssel lesen kann, der ihn auch braucht.

Einige weitere Neuerungen rund um Sicherheit nennen die Kommentare einiger Merges der Subsysteme Crypto, GCC-Plugins, Integrity, Seccomp, TPM und User Namespaces.

Die Kernel-Dokumentation erläutert jetzt, wie die SPDX-Lizenz-Auszeichnungen zu setzen und zu interpretieren sind.

(Bild: kernel.org: process/license-rules )

Ein zur Kernel-Dokumentation gestoßenes Dokument erläutert, wie die SPDX License Identifier zu verwenden sind. Diese seit Linux 4.14 verstärkt integrierte Kennzeichnung ermöglicht eine skriptgestützte und unmissverständliche Abfrage der Lizenz der Dateien, die den Quellcode enthalten. Mittlerweile tragen rund ein Viertel der Dateien von Linux eine solche Auszeichnung. Um mittelfristig auch Lizenztexte und -Hinweise aus den Quellcodedateien entfernen zu können, haben die Kernel-Entwickler die Lizenztexte jetzt im neu geschaffenen Verzeichnis LICENSES/ zentral hinterlegt.

Die Kernel-Dokumentation erläutert Kernel-Entwicklern jetzt in einem eigenen Dokument, wie sie PGP bei der Entwicklung nutzen sollten, um zur Aufnahme eingesandten Code vor Manipulation zu schützen.

Umbauten am Printk-Mechanismus sollen Situationen verhindern, bei denen ein unbestimmter CPU-Kern letztlich vollauf damit beschäftigt wird, per Dmesg abrufbare Meldungen zu verarbeiten. Das passiert vornehmlich auf Systemen mit vielen CPU-Kernen und lässt dem Kernel keine Zeit mehr, die ihm eigentlich aufgetragenen Arbeiten zu erledigen. Details zu dieser Problematik in dieser grundlegenden Infrastruktur erläutert LWN.net.

Durch Eingabe von "make snap-pkg" kann man aus den Kernel-Quellen nun auch direkt ein Snap-Paket mit einem eigenen Kernel bauen. Kernel-Snaps kommen derzeit bei Ubuntu Core zum Einsatz; Snap unterstützende Distributionen außerhalb der Ubuntu-Welt kommen mit Kernel-Snaps derzeit meist nicht richtig zurecht.

Der Entwickler Mel Gorman hat eine Reihe von Detailverbesserungen am Scheduler vorgenommen, die die Performance in bestimmten Situationen ein wenig verbessern können (u. a. 1, 2, 3).

Weitere Änderungen an der Infrastruktur nennen die Merge Commits der Subsysteme Dokumentation (1, 2), Kbuild (1, 2), KConfig, Kernel Live Patching (KLP), Printk, Scheduler (1, 2).

Das Kommando "perf stat --per-thread" kann die Ausgaben jetzt sortieren, um die größten Ressourcenverbraucher deutlicher hervor zu heben.

(Bild: git.kernel.org – d8b91dde38f4 )

Haufenweise Änderungen gab es auch wieder beim Performance-Analyse-Tool Perf und der von ihr genutzten Kernel-Infrastruktur. Einige von ihnen verbessern beispielsweise die Unterstützung für verschiedene Prozessordesigns von Intel und ARM. Bei Ftrace gab es diesmal nur kleinere Änderungen.

Der ARM64-Code kann dank 52-Bit-Adress-Supports jetzt bis zu 4 Petabyte (4096 Terabyte) Arbeitsspeicher adressieren, sofern der verwendete ARM-Kern diese bei ARMv8.2 spezifische Funktion denn implementiert; bislang gelang maximal 48-Bit-Adressierung, daher war bei 256 TByte Schluss.

Die Hardware-Monitoring-Treiber lesen jetzt auch die Temperatur des AMD Ryzen Threadripper 1900X korrekt aus.

Einige weitere Änderungen rund um Hardware-nahe Infrastruktur nennen die Kommentare in den wichtigsten Merge-Commits der Codebereiche ACPI (1, 2), RCU Core, DeviceTree (DT), DMA Mapping, IOMMU, Power Management aka PM (1), 2), RAS, Timer, Vhost. Informationen zu den Architektur-spezifischen Änderungen liefern die wichtigsten Merge-Commits am Code für ARM (Core, SoC, SoC Driver, SoC DT), ARM64  (12), MIPS, PPC, RISC-V, S390, x86 (Cache, Platform) und Xtensa. Das sind übrigens nur jene Merges dieser Bereiche, die der Autor aus dem ein oder anderen Grund für erwähnenswert hielt; einige Dutzend andere haben diese Hürde nicht geschafft. Das gleiche gilt auch für andere Aufzählungen dieser Art, die dieser Text enthält.