Was ist Fuzz Testing?
Fuzz Testing oder Fuzzing ist eine Methode, mit der überprüft wird, wie ein Computerprogramm oder -system auf verschiedene, manchmal zufällige Eingaben und Informationen reagiert. Der Prozess umfasst das Generieren eines Datentyps, entweder völlig zufällig oder zufällig unter bestimmten Bedingungen, und das anschließende Einspeisen dieser Daten in das Programm, um zu testen, wie es mit unerwarteten Informationen umgeht. Die grundlegendste Form des Fuzz-Tests besteht darin, eine zufällige Folge von Tastendrücken oder Zeichen an das Programm zu senden und zu überprüfen, ob es diese korrekt verarbeitet. Eine komplexere Version des Fuzz-Testens verwendet strukturierte Daten, die dann nach dem Zufallsprinzip bearbeitet und an das Programm gesendet werden. Die Daten können als Systemereignisse, Tastatureingaben, falsche Netzwerksignale oder auch als zu ladende Dateien in das Programm gelangen.
Es gibt verschiedene Teile eines Computerprogramms, die mit einem Fuzz-Generator getestet werden können. Die grafische Benutzeroberfläche (GUI) kann getestet werden, indem eine Folge von zufälligen Maus- und Tastaturereignissen erstellt wird und überprüft wird, ob die GUI die Eingaben verarbeiten kann, ohne abzustürzen, einzufrieren oder eine unerwartete Aufgabe auszuführen. Netzwerkprotokolle können getestet werden, indem der Fuzz-Generator Teile eines gültigen Datenpakets nach dem Zufallsprinzip ändert und dann sicherstellt, dass das Protokoll nach dem Empfang fehlerhafter Daten weiterhin funktioniert. Die grundlegenden Eingabeelemente nahezu jedes Programms können auf ihre Fähigkeit hin überprüft werden, Fehlern zu widerstehen, z. B. Eingaben, die für den Speichertyp viel zu lang sind, Eingaben, die von einem anderen als dem erwarteten Typ sind, und Eingaben, die auf irgendeine Weise unvollständig oder falsch sind.
Die Computersicherheitsbranche kann mithilfe von Fuzz-Tests sicherstellen, dass in bestimmten Systemen keine offensichtlichen Sicherheitslücken bestehen. Dies kann mithilfe eines Fuzz-Generators erfolgen, der zum Testen der Computersicherheit entwickelt wurde. Diese Programme versuchen, Systemschlüsselwörter, bekannte Standardadministratorkennwörter, Funktionen in den vom Programm verwendeten Bibliotheken und zufällige Aufrufe von Systemfunktionen zu verwenden, um zu sehen, wie das Programm reagiert.
Die verschiedenen Arten von Fuzz-Tests können so angepasst werden, dass sie innerhalb bestimmter Bereiche liegen oder sogar nur bestimmte Arten von Eingaben testen. Dies bedeutet, dass an ein Programm nur gültige Befehle gesendet werden können, jedoch in einer unsinnigen Reihenfolge. Es gibt komplexere Fuzz-Testprogramme, die Elemente des Zielprogramms aufnehmen und manipulieren können, um Situationen zu erzeugen, die böswillig ausgenutzt werden könnten. Dies kann das Ändern der Reihenfolge von Prozessen, die erzeugt werden, das Ändern von Berechtigungen oder das Ändern von Kerndaten und Bibliotheksdateien umfassen.
Das Endergebnis von Fuzz-Tests besteht darin, festzustellen, ob ein Programm sicher ist und sich in einer unerwarteten Situation so verhält, wie es sollte. In Verbindung mit der Profilerstellungs- und Analysesoftware können außerdem Speicherverluste in Bereichen des Programms wie Fehlerbehandlung oder Leistungsengpässe erkannt werden. In Fällen von Computersicherheit können gefährliche Probleme wie Überläufe, die ein System gefährden können, mit der richtigen Einrichtung abgefangen werden. Fuzz-Tests können jedoch nicht als einzige Methode für Softwaretests verwendet werden und müssen Teil eines umfassenderen Prozesses zur Qualitätssicherung und Softwareinspektion sein.