Kernel 5.13 dürfte vor allem Apple-Fans gefallen, erhöht aber auch die Sicherheit mit einem neuen Security-Modul. Zugleich erhalten erstmals externe Programme über eBPF Zugriff auf interne Kernel-Funktionen – ein potenzielles Security-Problem?
Einen nicht unwesentlichen Teil der Aufmerksamkeit bekam in diesem Linux-Entwicklungszyklus Apple. Das hatte weniger mit dem neu eingeführten Support für Apples Magic Mouse 2 von John Chen zu tun, sondern vielmehr mit einem neuen ARM-SoC namens Apple M1, den das Unternehmen in seinen neuesten Produkten verwendet.

Abbildung 1: Linux bringt ersten Support für den M1-SoC von Apple mit. Quelle: Henriok, CC0, Wikimedia.org
Es gibt seit Kernel 5.13 einen ersten, noch rudimentären Linux-Support für die ARM-basierte Plattform. Details liefert das Asahi-Linux-Projekt [1] in seinem Pull Request [2]. Demnach arbeitet das Team an einem initialen Bootloader namens m1n1 [3], Grub und U-Boot sollen folgen. Derzeit kann Linux die M1-Plattform booten und den Framebuffer sowie – über ein spezielles USB-Kabel – die serielle Konsole verwenden. Für Interessierte liefert das Projekt einen Quickstart Guide [4] und eine Hardwaredokumentation [5].
Anwendungen absichern
Landlock [6] erinnert nicht ohne Grund an den Landlord, also einen Vermieter, und ist gewissermaßen eine fiese Variante desselben. Grob vereinfacht sperrt es die Mieter in ihre Wohnungen ein, natürlich im übertragenen Sinne. Als neues Linux Security Module richtet sich Landlock an Anwendungsentwickler und limitiert die Zugriffsrechte unprivilegierter Anwendungen wie etwa den Zugriff auf das globale Dateisystem. Es will so die systemweiten Zugriffskontrollen ergänzen und unerwartetem oder bösartigem Verhalten von Userspace-Anwendungen einen Riegel vorschieben.
Laut der Release-Mitteilung lässt sich Landlock dabei von Seccomp BPF inspirieren. Es filtert allerdings nicht die System Calls und ihre Argumente, sondern reguliert den Zugriff auf Kernel-Objekte wie Dateihierarchien. Dabei orientiert sich die Software an XNU Sandbox (Apple), Capsicum (FreeBSD) und Pledge/Unveil (OpenBSD) und füllt so quasi blinde Flecken von Seccomp. Noch fehlen der Software einige Features zur Zugriffskontrolle, auch, um die Review zu erleichtern. Doch schon jetzt deckt Landlock laut Release-Mitteilung eine Reihe von Anwendungsszenarien ab [7].
Kurven und Hashes
In Sachen Sicherheit ist Landlock aber nicht die einzige Neuerung von Linux 5.13. So beherrscht der neue Kernel laut Herbert Xu den Elliptic Curve Digital Signature Algorithm (ECDSA), eine DSA-Variante, die Elliptische-Kurven-Kryptografie verwendet.
Ebenfalls um Sicherheit geht es bei den Patches für SELinux [8]: Ein Messen des SELinux-Zustands und der Richtlinienfähigkeiten ist neuerdings über die Integrity Measurement Architecture (IMA [9]) möglich. Dieses Linux-Subsystem erzeugt Hashes von Dateien und Programmen, um deren Integrität im Auge zu behalten. Zugleich lässt sich der SELinux-Zustand eines Mounts mithilfe einer Reihe von Mount-Optionen abgleichen, was bei sogenannten Kontext-Mounts von NFS und SELinux hilft.
Verschlüsselte VMs
Ebenfalls in den Security-Bereich fällt ein größeres Update, das Paolo Bonzini für KVM ankündigt. Es betrifft AMDs Platform Security Processor (PSP), auch bekannt als AMD Secure Technology [10]. Bei PSP handelt es sich um ein Trusted-Execution-Environment-Subsystem (TEE), das seit 2013 in AMD-Chips steckt. Kritiker halten es, ähnlich wie Intels Management Engine, für eine potenzielle Backdoor der NSA, zumindest aber für ein Sicherheitsrisiko [11].
Die Änderungen an PSP betreffen den Treiber und den Umgang mit AMDs Secure Encryption Virtualization (SEV [12]), die den Betrieb verschlüsselter VMs ermöglicht. SEV erlaubt es zum Beispiel, bestimmte Speicher-Pages sowie alle CPU-Register zu verschlüsseln, sobald eine VM stoppt (SEV ES).
Eine weitere KVM-Baustelle: ARMs Coresight erhält Support für die Embedded Trace Extension (ETE), eine Trace Unit für CPUs, sowie für die Trace Buffer Extension (TRBE), die einen Trace Buffer pro CPU bereitstellt, den Entwickler über die Systemregister erreichen.
Dateien mit System
CIFS, die Erweiterung des Netzwerkdateisystems Samba, bringt im neuen Kernel Shutdown-Support mit und kommt besser mit Zugriffen auf Dateien zurecht, etwa auf solche, die verzögert schließen [13].
Das Flash-Dateisystem F2FS hingegen erhält mit »checkpoint merge« eine neue Mount-Option, die bewirkt, dass sich ein Kernel-Thread um die F2FS-Checkpoints kümmert und gegebenenfalls deren Priorität im Prozesskontext senkt. Die Checkpoints kennen sämtliche Dateisystemoperationen und sollen die Dateisystemintegrität von F2FS bewahren [14].
Ext4 kommt jetzt mit Encrypted Casefolding zurecht [15], macht also auch bei verschlüsselten Dateien keinen Unterschied mehr zwischen “Dateiname” und “DateiNAME”. Das Casefold-Feature hilft unter anderem beim Portieren von Windows-Spielen auf Linux [16]. Zugleich überschreibt Ext4 in den Directory Blocks die Einträge für gelöschte oder verschobene Verzeichnisse mit Nullen.
Darrick Wong beschreibt neben einigen Performance-Optimierungen vor allem die Fähigkeit, Platz von einer Allocation Group zu entfernen, als auffälligste Neuerung für das Dateisystem XFS in dieser Entwicklungsrunde [17]. Das sei der erste Schritt auf dem Weg dahin, ein vollständig verkleinerbares Dateisystem zu erzeugen, brauche aber eben noch eine Reihe weiterer Änderungen.
Hilfreich ist auch ein neues Feature für den ARM64-Kernel. Darin landete endlich der Support für den Bau von Kerneln mit Clangs aktivierter Control Flow Integrity [18]. Laut Kees Cook kommt das Compiler-Flag in der Praxis bereits seit drei Jahren für Android-Kernel zum Einsatz. Es ergänzt Programme um einige Mechanismen, die den Einsatz von Malware erschweren. Die Idee dahinter: Ein Programm stellt seine Arbeit ein, sobald bestimmte Formen undefinierten Verhaltens auftreten, die den Control Flow des Programms untergraben könnten.
Auch Programme auf x86-Systemen sollen künftig von dieser ARM64-Entwicklung profitieren und sich mit der Clang-Option übersetzen lassen. Das Feature sei zwar noch in Entwicklung, aber schon ziemlich weit fortgeschritten, lässt die Release-Mitteilung wissen.
Neues rund um BPF
In Sachen BPF gibt es eine viel beachtete Neuerung: BPF-Programme können nun bestimmte Kernel-Funktionen direkt aufrufen, etwa »tcp_slow_start()«, was zuvor nicht möglich war.
Trotz der derzeitigen Beschränkung auf die TCP-Congestion-Control-Algorithmen sieht LWN.net-Autor und Kernel-Dokumentierer Jonathan Corbet dadurch auch neue Probleme [19] entstehen: Was passiert eigentlich, wenn ein wichtiges BPF-Programm auf eine Kernel-Funktion vertraut, die sich plötzlich ändert? Die neue Funktionalität gehört ja nicht zur Kernel-ABI. Zudem sind die BPF Helper dafür vorgesehen, von außen aufgerufen zu werden. Das BPF-Subsystem prüft BPF-Programme laut Corbet zwar intensiv; er bezweifelt aber, dass das Subsystem die inneren Mechanismen sämtlicher Kernel-Funktionen kennt und alle Angriffsvektoren absehen kann. Die Relevanz solcher Spekulationen kann nur die Praxis zeigen.
Rein und raus
Dass Dinge im Kernel kommen und gehen, ist auch keine Neuigkeit. Im Hardware-Monitoring-Bereich fehlt seit Kernel 5.13 der Treiber »amd_energy«. Er wurde nach einer Security-bedingten Änderung unbrauchbar, eine vorgeschlagene Lösung lehnte AMD ab, schreibt Guenter Roeck. Künftig müsse man einfach dafür sorgen, dass keine Treiber mehr im Hwmon-Subsystem landen, die nur einen privilegierten Zugriff erlauben [20].
Auch für die Power-PC-Fraktion bringt Linux immer wieder Neues: So aktiviert Linux 5.13 Kfence und implementiert eBPF für 32-Bit-Systeme. Außerdem unterstützt der Kernel auf dieser Plattform neuerdings Time Namespaces (»CONFIG_TIME_NS«).
Ebenfalls in den Hardwarebereich fallen einige von Greg Kroah-Hartmans Ankündigungen. Für Thunderbolt gab es Updates und einige Neuerungen, zugleich entfernte der Maintainer die WiMAX- sowie die Gasket-Treiber auf Betreiben von Google aus dem Kernel. Kleiner Fun Fact: Nach knapp 15 Jahren wanderte der »comedi«-Treiber von Staging nach »drivers/comedi«. Laut Greg Kroah-Hartman [21] war er einer der ersten Treiber für den damals noch jungen Staging-Bereich und hätte schon längst dort weg sein sollen.
Hypervisoren
Ein Feature wurde bereits erwähnt (AMD PSP), doch im Hypervisor-Bereich passierte im aktuellen Turnus noch mehr. KVM bringt zum Beispiel auf der ARM-Plattform eine Stage-2-Isolation für den Host-Kernel mit, wenn er im geschützten Modus läuft [22]. KVM-Gäste dürfen seit Kernel 5.13 die ARM Scalable Vector Extension (SVE) verwenden, wenn sie im nVHE-Modus laufen. Dieser Modus erlaubt es, den Hypervisor auf einer CPU zu installieren, bevor der Host selbst darauf läuft.
Die Xen-Entwickler reparierten mehrere Fehler und entfernten kaputten Hotplug-Code. Am Hyper-V-Code gab es eine VMBus-Verbesserung und Patches, damit Linux als ARM64-Gast laufen kann.
Sonstiges
Die Grafikentwickler werden offenbar auch nicht müde, selbst wenn die ganz großen Innovationen in dieser Runde ausblieben: Intels i915-Treiber bringt ersten Code für die “Alderlake”-Platform und die Allzweck-GPU Intel XE mit. Ganz ähnlich klingt die Sache für den AMDGPU-Treiber: Der unterstützt jetzt “Aldebaran” (eine neue GPU) sowie Freesync HDMI.
Daneben gab es wieder viele feine, aber über die Systeme verteilte Nachbesserungen – zu viele, um sie alle aufzuzählen. Zum Beispiel bietet Fanotify nicht privilegierten Anwendern einen beschränkten Funktionsumfang an. Neben dem Aggregator Module für Microsofts Surface-Geräte gibt es neuerdings Support für die anfangs erwähnte Magic Mouse 2 von Apple sowie das Thinkpad X1 Tablet Keyboard [23]. Das Tool »perf stat« führt eine »–iostat«-Option ein, die jetzt auf Intel-Hardware funktioniert.
Um die Änderungen auszuprobieren, laden Sie den neuen Kernel direkt von Kernel.org oder Github [24] herunter und übersetzen ihn. Mit dem Release von Kernel 5.13 beginnt dann auch direkt die Arbeit an der kommenden Version 5.14. (uba)
Infos
- Asahi-Linux: https://github.com/AsahiLinux
- M1-SoC: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1bb2fd3880d479a7a1bf833baee731ae69f09060
- m1n1: https://github.com/AsahiLinux/m1n1/
- Asahi-Quickstart-Guide: https://github.com/AsahiLinux/docs/wiki/Developer-Quickstart
- Asahi-Hardwaredokumentation: https://github.com/AsahiLinux/docs/wiki
- Landlock: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=17ae69aba89dbfa2139b7f8024b757ab3cc42f59
- Landlock-Anwendungsszenarien: https://lore.kernel.org/lkml/f646e1c7-33cf-333f-070c-0a40ad0468cd@digikod.net/
- SELinux und IMA: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f1c921fb70de06c7eda59104470134aecc7a07c4
- Integrity Measurement Architecture: https://sourceforge.net/p/linux-ima/wiki/Home/
- KVM-Update: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=152d32aa846835987966fd20ee1143b0e05036a0
- AMD PSP: https://de.wikipedia.org/wiki/AMD_Security_Processor
- Secure Encryption Virtualization: https://developer.amd.com/sev/
- CIFS-Neuerungen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7c9e41e0ef7d44a0818a3beec30634f3f588a23d
- F2FS-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d0195c7d7af6a456c37f4b4b2df5528f10714482
- Ext4-Casefolding: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9f67672a817ec046f7554a885f0fe0d60e1bf99f
- Casefolding im Einsatz: https://www.collabora.com/news-and-blog/blog/2020/08/27/using-the-linux-kernel-case-insensitive-feature-in-ext4/
- XFS in Linux 5.13: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d2b6f8a179194de0ffc4886ffc2c4358d86047b8
- CFI für ARM: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=57fa2369ab17d67e6232f85b868652fbf4407206
- Jonathan Corbet über BPF Helper: https://lwn.net/Articles/856005/
- Hwmon-Änderung: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=47080f2286110c371b9cf75ac7b34a6f2f1cf4ba
- Comedi-Treiber: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8900d92fd666d936a7bfb4c567ac26736a414fb4
- Mehr KVM-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=152d32aa846835987966fd20ee1143b0e05036a0
- Neu unterstützte Hardware: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=efd8929b9eec1cde120abb36d76dd00ff6711023
- Linux auf Github: https://github.com/torvalds/linux






