Linux 5.11: Support für Intel SGX, neue Treiber und kleinere Verbesserungen

Das erste Linux-Kernel-Update in diesem Jahr zeichnet sich vor allem durch neue Treiber aus. Als Feature kommen Intels Software Guard Extensions (SGX) hinzu.

In Pocket speichern vorlesen Druckansicht 12 Kommentare lesen

(Bild: Wikimedia Commons / W. Bulach / CC BY-SA 4.0)

Lesezeit: 14 Min.
Von
  • Oliver Müller
Inhaltsverzeichnis

Der erste neue Kernel in diesem Jahr ist im Großen und Ganzen ein Standard-Release: Neue Treiber wurden eingeführt und bestehende Features ausgeweitet. Neu in Linux 5.11 ist die Unterstützung für Intels Sicherheitsfunktion Software Guard Extensions (SGX).

Wir fassen in diesem Artikel die wichtigsten Neuerungen zusammen und werfen außerdem einen Blick auf rege Community-Diskussionen, die sich im Zuge des vorangegangenen LTS-Releases 5.10 entsponnen haben. Eine vollständige Übersicht über alle Änderungen liefert das Changelog zu Linux 5.11.

Nach nunmehr fünf Jahren Entwicklungszeit und über 40 Reviews sind Intels Software Guard Extensions (SGX) im Linux-Kernel angekommen. Mittels SGX lassen sich kryptographisch abgeschottete Bereiche, sogenannte Enklaven, erstellen. Der Zugriff auf die Speicherbereiche dieser Enklaven ist aus dem Rest des Systems und auch aus anderen Enklaven heraus nicht möglich – dies ist nur Code gestattet, der innerhalb der Enklave läuft. Der Aufruf von Programmcode in den Enklaven von außen darf ausschließlich in kontrollierter Form erfolgen. Anwendungsentwicklern soll SGX die Möglichkeit bieten, ihre Software und insbesondere sensible Daten selbst dann vor unbefugten Zugriffen und Manipulationen zu schützen, wenn das Hostsystem kompromittiert wurde.

Diskussionen rund um die Sicherheit von SGX und die Ansätze zur Umsetzung im Linux-Kernel verzögerten die Integration. Nachvollziehbarerweise, wenn man bedenkt, dass die Entdecker von Meltdown und Spectre Anfang 2019 in einer wissenschaftlichen Veröffentlichung erläutert hatten, wie sich SGX-Enklaven mittels der Angriffstechniken "knacken" ließen. Zwischenzeitlich hat Intel jedoch bei der Sicherheitsfunktion nachgebessert, so dass SGX unter Linux hoffentlich unbeeinträchtigt zur Sicherheit beiträgt.

Der Kernel Address Sanitizer (KASAN) ist eine ausgefeilte Technologie zum frühzeitigen und dynamischen Aufspüren von fehlerhaften Speicherzugriffen des Kernels. Im Zusammenspiel mit der Gnu Compiler Collection (GCC) zum Instrumentalisieren von Speicherzugriffen und "Shadow-Memory" zum Tracking von legitimen Speicherbereichen lassen sich Bugs einfacher aufspüren. Da KASAN bereits beim Compile-Vorgang ansetzt, ist die Technik deutlich schneller als reine Runtime-Ansätze wie beispielsweise kmemcheck.

KASAN wurde ursprünglich für x86_64 eingeführt und ist heute auf einigen, aber nicht auf allen Architekturen verfügbar. Mit Linux 5.11 ist KASAN jetzt auch für 32-Bit-ARM implementiert. Eine Verbesserung erfährt die Technologie zudem auf 64-Bit-ARM. Dort kommt statt des Software-Taggings und Shadow-Memory jetzt die "Memory Tagging Extension" fürs Tracking zum Einsatz. Statt eine Karte der legitimen Speicherbereiche zu zeichnen, nutzt KASAN auf ARM64 die oberen nicht genutzten Bits der 64-Bit-Speicheradresse, um legitimen Speicher zu markieren.

Auf ARM64-Systemen erweitert Linux 5.11 die Zugriffsmöglichkeiten auf die Memory Type Extension. Die oberen nicht genutzten Bits lassen sich nun auch in Signal-Handlern nutzen, um so beispielsweise auf die Markierungen von Zeigern zuzugreifen. sigaction() erhält hierfür die Option SA_EXPOSE_TAGBITS.

Der Zugriff aus dem Userspace auf MSRs (model-specific registers) auf x86-Systemen wurde weiter reduziert. So ist jetzt der schreibende Zugriff auf MSR_IA32_ENERGY_PERF_BIAS nicht mehr erlaubt. Stattdessen sollen Tools geschaffen werden, die den Zugriff auf die MSRs zentralisieren und – so die Hoffnung – in der Zukunft bessere Lösungen gefunden werden. Ein Dokument auf git.kernel.org bietet einen Überblick über den aktuellen Stand.

Der Re-Export von Dateisystemen über NFS (Network File System) wird mit der neuen Kernel-Version nun offiziell unterstützt. Somit können bereits gemountete NFS-Dateisysteme über den Kernel-NFS-Server an andere Systeme erneut freigegeben werden.

XFS führt ein neues Flag ein, das eine notwendige Reparatur des Dateisystems anzeigt. Ist das betreffende Bit gesetzt, ist es nicht möglich, das Dateisystem zu mounten, bis mittels xfs_repair eine Reparatur angestoßen wurde, im Zuge derer das Flag wieder zurückgesetzt wird. Durch diese Vorgehensweise soll vermieden werden, dass ein beschädigtes Dateisystem den Betrieb aufnehmen kann.

F2FS erhält einen neuen ioctl()-Call. Über diesen kann aus dem Userspace heraus gesteuert werden, welche Dateien komprimiert werden sollen. btrfs hat neue Mount-Optionen erhalten, die bei der Datenrettung auf einem defekten Dateisystem helfen sollen. rescue=ignorebadroots versucht, trotz eines defekten Root das Dateisystem zu mounten. resuce=ignoredatacsums schaltet das Prüfen von Checksummen aus. Zudem erfährt btrfs einen Performance-Schub.