Login
Newsletter
Werbung

Fr, 15. März 2019, 15:59

Software::Kernel

Sicherheitsverbesserungen im Linux-Kernel 5.0

Die am 3. März freigegebene neue Version 5.0 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.

Linux 5.0 ist am 3. März erschienen, worin eine der größten sicherheitsrelevanten Änderungen die Aufnahme der in Russland entwickelten Hash-Funktion Streebog war. Außerdem kam Adiantum als Ersatz für die verdächtige Verschlüsselung Speck hinzu, zusammen mit den Algorithmen XChaCha12 und XChaCha20. Dies soll eine schnelle und sichere Verschlüsselung auch auf Geräten mit weniger Leistung ermöglichen. Auch dass der Kernel jetzt die Sicherheits-Funktionen von NVME unterstützt, lässt sich noch in diesen Bereich einordnen.

Kees Cook weist in seinem neuen Beitrag auf weitere Änderungen hin. Es handelt sich um weniger sichtbare Maßnahmen, die die Robustheit des Kernels erhöhen und Angreifern das Leben schwerer machen. So erhielt die ARM64-Architektur jetzt die Möglichkeit, Speicherbereiche schreibgeschützt einzublenden, auch wenn diese Einblendung linear erfolgt. In der x86-Architektur existierte diese Funktionalität schon länger.

In beiden Varianten der ARM-Architektur (32 und 64 Bit) wurde ferner der Wert, der das Ende des Stacks anzeigt und das Erkennen von Stacküberläufen ermöglichen soll, prozessspezifisch gemacht, bisher wurde an jeder Stelle derselbe Wert verwendet. Auch dies war unter x86 schon früher implementiert worden. Damit soll verhindert werden, dass ein Angreifer herausbekommen kann, welcher Wert verwendet wird. Denn mit dem korrekten Wert an der passenden Stelle könnte er einen absichtlich herbeigeführten Stacküberlauf verschleiern.

Eine andere Arbeit dient zur Unterstützung der Pointer Authentication (PAC) von ARM64 und ermöglicht es, die entsprechenden Bits künftig auch für andere Zwecke zu nutzen. Bei diesen Bits handelt es sich um die höchsten Bits einer 64-Bit-Adresse, die normalerweise 0 sein müssten, da so viel adressierbares RAM nicht existiert. Sie können daher anderweitig verwendet werden. Diese Arbeit ist noch nicht vollständig.

Ebenso noch in Arbeit sind zum einen die Bestrebung, das implizite Durchfallen von einem Fall einer case-Anweisung in den nächsten aus dem gesamten Kernel-Code zu beseitigen, zum anderen die Konvertierung von Referenzzählern vom Typ atomic_t nach refcount_t. Die case-Anweisung in C hat die Eigenheit, dass das Ende jedes Falles mit einer break-Anweisung abgeschlossen werden kann, aber nicht muss. Programmierer können dies in cleverer Weise nutzen, um ein paar Bytes Code zu sparen - heutzutage ist die Ersparnis fraglich, da der Compiler den Code eventuell selbst besser anordnen kann. Die meisten Fälle, in denen das break fehlt, sind allerdings schlichtweg Fehler, wo die Anweisung vergessen wurde. Die Compiler-Option -Wimplicit fall-through kann alle diese Fälle finden. Um allerdings keine falschen Warnungen zu erhalten, soll der Kernel von allen Stellen gesäubert werden, wo das break bewusst weggelassen wurde. Auch bei der zweiten Änderung ist Handarbeit angesagt, da sich nicht einfach überall atomic_t durch refcount_t ersetzen lässt. Jede Stelle muss überprüft werden.

Die oben erwähnte PAC-Funktionalität von ARM64 kann jetzt nicht nur vom Kernel, sondern auch von Programmen verwendet werden. Als letzte Neuerung erwähnt Cook schließlich den Trusted Platform Keyring, ein Schlüsselbund, der sich von Programmen nicht ändern lässt. Er kann zur Verifikation von Plattformobjekten oder Bootcode, zum Beispiel Firmware oder Initial Ramdisk, verwendet werden.

Werbung
Kommentare (Insgesamt: 16 || Alle anzeigen || Kommentieren )
Re: Sicherheitsverbesserungen (Moinsen, Mi, 20. März 2019)
Re: Sicherheitsverbesserungen (Seelsorger, Mi, 20. März 2019)
Kein DKMS Nvidia VBox Gastgerweiterungen (Andi123, So, 17. März 2019)
Re[3]: Zukunftsfähigkeit von Binaries? (glasen, So, 17. März 2019)
Re[5]: break (pointer, So, 17. März 2019)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung