Login
Newsletter
Werbung

Do, 4. Mai 2017, 09:24

Software::Kernel

Sicherheits-Verbesserungen im Linux-Kernel 4.11

Die am 1. Mai freigegebene neue Version 4.11 von Linux enthält neben den bereits 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.

Bereits in der Nachricht zu Linux 4.11 wurde der neue Datentyp für Referenzzähler beschrieben, der auch in dem Beitrag von Cook die erste Stelle einnimmt. Der neue Datentyp refcount_t soll unter anderem Angriffe durch überlaufende Zähler verhindern soll. Es gibt zahlreiche Stellen im Kernel, die diesen nutzen können, meist wird für solche Zähler bisher atomic_t verwendet, da das Auslesen und Hochzählen des im Speicher befindlichen Zählers in einer nicht unterbrechbaren Operation erfolgen muss. Die Umstellung, die auch generelle Fehler in der Verwendung von Referenzzählern vermeiden helfen soll, wird sich über einige Monate hinziehen. Laut Cook gab es allein im Jahr 2016 mindestens zwei Sicherheitslücken, die durch die ungeschützte Verwendung von Referenzzählern verursacht wurden. Die neue Implementation ist eine Abwandlung einer Implementation des PAX-Projekts und soll weitere Lücken zukünftig ausschließen.

Die Konfigurationsoption CONFIG_DEBUG_RODATA wurde in CONFIG_STRICT_KERNEL_RWX umbenannt, da sie schon seit zehn Jahren nichts mehr mit Debugging zu tun hat. Die Umbenennung selbst verbessert zwar die Sicherheit nicht, macht aber deutlicher, dass die Option existiert und eingeschaltet werden sollte. Sie macht Speicherseiten mit Code nicht änderbar und Speicherseiten mit Daten nicht ausführbar.

Der Kernel nutzt eine Reihe von externen Programmen, um beispielsweise Firmware zu laden oder Hotplug-Events zu verarbeiten. Welche das sind, wird durch Einträge im /proc-Dateisystem festgelegt, die auch änderbar sind. Um Angriffe über diese Einträge auszuschließen (auch wenn nur Root Änderungen durchführen kann), gibt es nun die Option CONFIG_STATIC_USERMODEHELPER, die alle diese Programme unveränderlich auf /sbin/usermode-helper festlegt. Ein entsprechendes Programm, das die Aufrufe weiter verteilen kann, muss installiert werden.

Bisher hinterließen Programme, die wegen einer seccomp-Verletzung beendet wurden, keinen Coredump. Diese bisher übersehene Funktionalität wurde jetzt hinzugefügt.

Eine weitere Maßnahme zur Verbesserung der Sicherheit ist das von Grsecurity entwickelte GCC-Plugin »structleak«, das nun integriert wurde. Es erzwingt die Initialisierung aller Datenstrukturen, die an Anwenderprozesse übergeben werden, um die ungewollte Preisgabe von Informationen zu vermeiden.

Auf der MIPS-Architektur wurde ein Aufruf implementiert, der die Anzahl der für ASLR verwendeten Bits konfigurierbar macht. Das Minimum entspricht den bisherigen Einstellungen, die Zahl kann jedoch durch Schreiben in /proc erhöht werden. ASLR sorgt dafür, dass Speicherseiten an zufälligen, für Angreifer nicht so leicht bestimmbaren Adressen, platziert werden. Auf der PowerPC-Architektur hingegen wurde die Ausführbarkeit von Seiten, die nur Daten enthalten, aufgehoben.

Auch noch erwähnenswert, aber nicht in Cooks Beitrag aufgeführt, ist SipHash, eine Hash-Funktion, die schneller und sicherer als die bisherige Implementation sein soll.

Werbung
Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung