Login
Newsletter
Werbung

Mo, 18. Juni 2018, 16:08

Software::Kernel

Sicherheits-Verbesserungen im Linux-Kernel 4.17

Die am 3. Juni freigegebene neue Version 4.17 von Linux enthält neben den bereits anderweitig genannten Änderungen auch weitere Maßnahmen zur Erhöhung der Sicherheit. Kees Cook erläutert sie im Detail.

Larry Ewing

Kees Cook ist seit 2011 bei Google und arbeitet dort an der Sicherheit von Chrome OS. Außerdem arbeitet er zusammen mit anderen daran, weitere vorbeugende Sicherheitsmaßnahmen in den Linux-Kernel zu integrieren. Einige der Maßnahmen stammen aus der Chrome OS- und Android-Entwicklung von Google, andere von Grsecurity und von weiteren Personen. Für jede Linux-Version veröffentlicht Cook eine Zusammenfassung der Neuerungen in diesem Bereich.

Eine der Neuerungen in Linux 4.17 ist der Hypervisor Jailhouse, der zuvor mindestens vier Jahre lang außerhalb des Kernels entwickelt wurde. Er ist auf Einfachheit optimiert, nicht auf Funktionsvielfalt, und daher vor allem für eingebettete Systeme interessant.

Neu ist in der SPARC-Architektur die Unterstützung für »Application Data Integrity«, die helfen kann, Speicherüberläufe sowie Zugriffe auf Speicherbereiche außerhalb des vorgesehenen Bereichs zu verhindern.

Neu angelegte Kernel-Stacks werden jetzt mit Nullen initialisiert, um die ungewollte Preisgabe von Informationen, die dort vorher abgelegt sein konnten, zu verhindern. Anders als man denken könnte, macht dies das System nicht langsamer. Im Gegenteil, es könnte laut Cook sogar schneller werden, allerdings ist der Effekt so gering, dass er kaum messbar ist.

Eine vorbeugende Sicherheitsmaßnahme ist die Erweiterung des mmap-Aufrufs um ein Flag MAP_FIXED_NOREPLACE. Es arbeitet wie MAP_FIXED mit der Ausnahme, dass es scheitert, wenn der einzublendende Speicherbereich mit einem zuvor bereits eingeblendeten überlappt. Das Sicherheitsrisiko von MAP_FIXED besteht darin, dass es bestehende Zugriffsrechte abändern könnte. Das neue Flag wird bereits vom ELF-Lader benutzt und sollte auch in Anwendungen bevorzugt verwendet werden.

Während der Ausführung des Systemaufrufs exec ist das Größenlimit des Stacks jetzt nicht mehr änderbar. Diese Maßnahme, von Cook als grobes Werkzeug bezeichnet, verhindert wohl sehr effektiv, dass bösartige Programme das Limit ändern und dadurch das Speicher-Layout beeinflussen, um letztlich Stack-Überläufe zu produzieren.

In Linux 4.17 wurde ferner damit begonnen, Arrays mit variabler Länge zu entfernen. Nachdem Alexander Popov das Stackleak GCC-Plugin zu portieren begann, forderte Linus Torvalds, dass alle Arrays mit variabler Länge aus dem Kernel zu verschwinden haben. Denn sie bieten Angriffspunkte für Stack-Überläufe, die selbst sogenannte Guard-Pages austricksen können. Darüber hinaus erzeugen sie auch längeren und langsameren Code. In Linux 4.17 wurden etwa ein Drittel unter den hunderten von Stellen geändert, die solche Arrays nutzen. Viele weitere werden in Linux 4.18 eliminiert, und in 4.19 dürften diese Arrays schließlich restlos beseitigt sein.

Werbung
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung