Original-URL des Artikels: https://www.golem.de/news/kernel-defekte-dateisysteme-bringen-linux-zum-stolpern-1908-143323.html    Veröffentlicht: 20.08.2019 16:04    Kurz-URL: https://glm.io/143323

Kernel

Defekte Dateisysteme bringen Linux zum Stolpern

In einer Diskussion um die Aufnahme eines neuen Dateisystems in den Linux-Kernel wird klar, dass viele Dateisystemtreiber mit defekten Daten nicht klarkommen. Das kann nicht nur zu Abstürzen führen, sondern auch zu Sicherheitslücken.

Die Aufnahme des Dateisystems EROFS in den Linux-Kernel führt zu einer Diskussion darüber, wie robust die Dateisystemtreiber im Kernel sein sollen. Darüber berichtet Linux Weekly News. In vielen Dateisystemtreibern gibt es bekannte, ungefixte Sicherheitslücken. Insbesondere XFS ist problematisch.

EROFS ist ein komprimiertes Read-Only-Dateisystem, das von Huawei entwickelt wurde. Es ist seit Version 4.19 Teil des sogenannten Staging-Bereichs des Linux-Kernels, in dem Treiber zu finden sind, die noch getestet werden. Gao Xiang, einer der Entwickler von EROFS, hat zuletzt darum gebeten, das Dateisystem künftig als normalen Kernel-Dateisystemtreiber auszuliefern.

Wie robust müssen Kernel-Dateisystemtreiber sein?

Kernel-Entwickler Richard Weinberger wies in der Diskussion darauf hin, dass der Code offenbar erwarte, dass das eingelesen Dateisystem korrekt sei und keine fehlerhaften Daten enthalte. So sei es ihm mit wenig Aufwand gelungen, ein fehlerhaftes Dateisystemimage zu erzeugen, das im Code von EROFS zu einer Endlosschleife geführt habe. Das führte zu einer Grundsatzdiskussion darüber, ob man von Linux-Dateisystemtreibern erwarten kann, dass sie auch mit fehlerhaften Dateisystemen klarkommen.

Theodore Ts'o, der das Ext4-Dateisystem im Kernel betreut, wies darauf hin, dass auch andere Dateisysteme, die schon lange Teil von Linux sind, solche Probleme hätten. Er versuche zwar, solche Fehler in Ext4 zu beheben, aber es habe für ihn keine hohe Priorität. Es sei unfair, von neuen Dateisystemen etwas zu erwarten, was schon bestehende Dateisysteme nicht erfüllen könnten.

Fuzzing findet viele Bugs in Dateisystemtreibern

Es gab in der Vergangenheit mehrfach Bemühungen, mittels Fuzzing solche Fehler in Dateisystemtreibern zu finden. Hierbei erzeugt ein Fuzzing-Tool defekte Eingabedaten und testet, ob diese zu Abstürzen oder anderen Fehlern führen.

2016 nutzten Entwickler von Oracle eine modifizierte Version von American Fuzzy Lop (AFL), um Fehler in Dateisystemtreibern zu finden. Auf der Usenix-Konferenz 2017 wurde ein weiterer Ansatz namens kAFL, ebenfalls basierend auf AFL, vorgestellt. Auch Googles Syzkaller-Projekt findet teilweise Fehler in Dateisystemtreibern und meldet diese automatisch.

Fuzzing schädlich?

Wen Xu vom Georgia Institute of Technology erweiterte diesen Ansatz und stellte im Mai diesen Jahres eine Fuzzing-Methode vor, bei der nicht nur das Einlesen eines defekten Dateisystems getestet wurde, sondern anschließend auch Zugriffe darauf. Im Rahmen dieser Forschung wurde eine ganze Reihe von Fehlern an die Kernel-Entwickler gemeldet, darunter mehrere Memory-Corruption-Bugs. In den Dateisystemtreibern für XFS, ReiserFS, HFS und GFS2 wurden viele der Bugs nicht gefixt. Auch für Ext4 findet man drei Bugs. Diese wurden aber gefixt, es wurde wohl nur vergessen, die entsprechenden Bugreports auch zu schließen.

XFS-Entwickler findet Fuzzing schädlich

In mehreren Onlinediskussionen in der Vergangenheit haben die Entwickler des XFS-Dateisystems geschrieben, dass sie derartige Fehler nicht fixen möchten. Als Antwort auf einen Fehlerbericht eines kAFL-Entwicklers antwortete ein Entwickler des XFS-Dateisystems, dass er solches Fuzzing für schädlich halte.

Mehrfach verwiesen Entwickler von XFS in diesen Diskussionen darauf, dass die aktuelle Version von XFS CRC32-Checksummen enthalte. Doch diese können zwar zufällige Bitfehler erkennen, sie verhindern aber keine böswillig manipulierten Dateisysteme. Das Erkennen von Bugs durch Fuzzing wird hingegen durch solche Checksummenmechanismen erschwert.

Angriffe über USB-Sticks und Automount

Wenn fehlerhafte Dateisystemtreiber Memory-Corruption-Fehler enthalten, kann das ein Sicherheitsproblem sein. Manche Linux-Distributionen mounten externe Laufwerke wie USB-Sticks automatisch, wenn diese angeschlossen werden. Doch auch ohne Automount besteht ein Sicherheitsrisiko, so könnte man etwa Nutzern einen USB-Stick mit einem Dateisystem geben, das eine solche Sicherheitslücke ausnutzt.

Das Mounten von fremden Dateisystemen ist aber unter den gegebenen Umständen riskant. Wie die Diskussion zeigt, kann man sich nicht darauf verlassen, dass Linux-Dateisystemtreiber mit bösartigen Eingabedaten klarkommen. Und einige Kernelentwickler sagen offen, dass das auch nicht ihr Ziel sei.

 (hab)


Verwandte Artikel:
AI-Station und AI-Laptop: Schenker bietet konfigurierbare Linux-Workstations an   
(20.08.2019, https://glm.io/143312 )
Linux: Patches für Kernel-Lockdown in Testing-Zweig aufgenommen   
(13.08.2019, https://glm.io/143175 )
Canonical: Ubuntu 19.10 soll ZFS auf Root-Partition unterstützten   
(08.08.2019, https://glm.io/143069 )
Betriebssysteme: Linux 5.2 erscheint mit freiem Mali-Treiber   
(08.07.2019, https://glm.io/142392 )
Red Hat: Stratis 1.0 bringt XFS etwas näher an Btrfs und ZFS   
(08.10.2018, https://glm.io/136992 )

© 1997–2019 Golem.de, https://www.golem.de/