Login
Newsletter
Werbung

Di, 12. April 2016, 13:01

Software::Kernel

Fuzzy-Test für Dateisysteme vorgestellt

Entwickler bei Oracle haben einen Fuzzy-Tester auf einige Linux-Dateisystem-Implementierungen losgelassen. Dabei haben sie zahlreiche Fehler produziert. Ext4 hielt der Belastung am längsten stand, klarer Verlierer war Btrfs.

Larry Ewing

Fuzzing oder Fuzz Testing wird immer populärer unter Entwicklern. Fuzzer konfrontieren Programme mit Eingaben, auf die sie möglicherweise nicht vorbereitet sind, worauf sie fehlerhaft oder mit einem Absturz reagieren. Eines der besten Programme für solche Tests ist AFL. Die Entwickler Quentin Casasnovas und Vegard Nossum haben bei Oracle nun AFL auf den Kernel portiert und auf einige Linux-Dateisystem-Implementierungen angewandt. Ihre Resultate werden sie in einem Vortrag auf der Konferenz für Linux-Speichersysteme »Vault« vorstellen, die in einer Woche stattfindet. Unterlagen zu dem Vortrag sind aber bereits jetzt erhältlich (PDF).

In ihren Unterlagen beschreiben die Entwickler zunächst die Funktionsweise von AFL, dann die Portierung des normalerweise als normaler Prozess laufenden Programms auf den Kernel. Dies war nötig, da AFL mit einer Instrumentierung des Codes arbeitet. Nur so kann es im Detail in Erfahrung bringen, wie der Code arbeitet, und sein Verhalten so anpassen, dass es alle Code-Pfade durchläuft. Mit dieser Methode ist AFL sehr effektiv. Um die Geschwindigkeit der Tests weiter zu erhöhen, wurde statt einer virtuellen Maschine unter KVM ein User Mode Linux eingesetzt. Ein anderes Problem war, dass Dateisysteme teilweise eine Minimalgröße haben müssen, wodurch die Dateisystem-Images in jedem Fall ziemlich groß werden. Um hier den Testaufwand zu reduzieren, wurden Blöcke, die komplett mit Nullen gefüllt waren, ausgespart. Für die Wiederholbarkeit der Ergebnisse wurde außerdem versucht, die Testumgebung so deterministisch wie möglich zu machen.

Die Tests konnten in allen untersuchten Dateisystemen eine Kernel-Panik, Seitenfehler, Deadlocks oder Fehler in der Speicherverwaltung auslösen. Zwar liegen derzeit noch keine Einzelheiten dazu vor, doch konnte mit Hilfe der Tests die Robustheit und Reife der Dateisysteme eingeschätzt werden. Es ergab sich eine Reihenfolge, in der Ext4 an der Spitze steht - das Dateisystem konnte erst nach zwei Stunden Laufzeit zu einem Fehler gebracht werden. XFS hielt eine Stunde und 45 min durch und ist damit Zweiter. Alle anderen liefen maximal acht Minuten fehlerfrei. Den letzten Platz belegte Btrfs, das bereits nach fünf Sekunden eine Panik auslöste. Alle Tests wurden mit Linux 4.3 und drei parallel laufenden AFL-Instanzen durchgeführt.

Inwieweit die festgestellten Fehler auch Sicherheitslücken sind, die beispielsweise durch ein speziell präpariertes Speichermedium oder Dateisystem-Image eine Übernahme des Rechners zur Folge haben könnten, wird noch zu klären sein. Die Entwickler schlagen vor, die von AFL erzeugten Dateisystem-Images für künftige Regressionstests zu verwenden, die Methode für weitere Tests einzusetzen und regelmäßig Berichte zur erreichten Codeabdeckung zu generieren.

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