Eine umfassende Anleitung zum Fuzz-Testen
Veröffentlicht: 2021-05-17Sicherheitstests sind einer der wichtigsten Schritte, um sicherzustellen, dass Ihre Software für die offizielle Veröffentlichung bereit ist, sei es für geschäftliche oder kommerzielle Zwecke. Es ermöglicht Ihnen, alle Schwachstellen Ihrer Software zu erkennen und eine Gegenmaßnahme dafür zu entwickeln, falls ein Hacker einen solchen Fehler ausnutzt.
Wenn Sie an Sicherheitstests interessiert sind, können Sie die Fakten jetzt hier erfahren, aber eines müssen Sie wissen: Es gibt alle möglichen Möglichkeiten, Sicherheitstests durchzuführen, wie z. B. Risikobewertung, Penetrationstests und Schwachstellen-Scans. Und wenn Sie mit Sicherheitstests bereits ein wenig vertraut sind, haben Sie wahrscheinlich schon von dem Begriff „Fuzz-Tests“ gehört.
Fuzz-Testing ist heutzutage eine relativ verbreitete Testtechnik in der Branche, zumal Konzerngiganten wie Microsoft und Google sie seit über einem Jahrzehnt einsetzen. Überraschend ist jedoch, dass, obwohl es sich um eine Standardtechnik handelt, nicht viele Menschen darüber Bescheid wissen. Abgesehen davon soll dieser Leitfaden erklären, was Fuzz-Testing ist, beginnend mit seiner Definition.
Was ist Fuzz-Testing?
Fuzz-Tests, oder was andere „Fuzzing“ nennen, beinhalten die Eingabe ungültiger oder zufälliger Daten in ein Programm, um Schwachstellen zu erkennen, die zu ausnutzbaren Fehlern führen können. Diese Eingabe kann in Form einer Datei oder einer direkten Eingabe des Benutzers erfolgen. Wenn Sie beispielsweise ein Rechenprogramm erstellen, müssen Sie normalerweise Zahlen oder mathematische Operationen eingeben. Wenn Sie jedoch Fuzz-Tests durchführen, müssen Sie eine ungültige Eingabe wie Buchstaben oder sogar Sonderzeichen eingeben.
Wenn dies das Programm zum Absturz bringt oder einen anderen Fehler verursacht, geht der Programmierer davon aus, dass es eine Schwachstelle gibt, und kann daher daran arbeiten, die Codierung zu ändern, in der Hoffnung, das Problem zu beheben. Auf den ersten Blick könnte man meinen, dass Fuzz-Tests dasselbe sind wie andere Techniken wie Schwachstellen-Scans oder Penetrationstests, aber es gibt einen Grund für seine Popularität.
Warum verwenden Unternehmen Fuzz-Tests?
Wenn es um Sicherheitstests geht, gibt es keine Einheitslösung. Jede Methode kann Probleme erkennen, die andere nicht können; einige erfordern niedrigere Betriebskosten, während andere einfacher durchzuführen sind. Wie jede Sicherheitstesttechnik ist Fuzz-Testing auf seine Weise einzigartig. Im Folgenden sind einige Vorteile aufgeführt, die Unternehmen dazu bewegen, Fuzz-Tests einzusetzen.
- Einfachheit: Sie wissen bereits, wie Fuzz-Tests funktionieren – es geht darum, ungültige Eingaben in ein Programm einzugeben. Die Einfachheit des Prozesses im Allgemeinen ist ein großer Vorteil für Einzelpersonen oder Organisationen, denen es an Fähigkeiten und Erfahrung in Bezug auf Sicherheitstests mangelt.
- Automatisierung: Sicherheitstests können ein entscheidender Schritt in der Software- und Anwendungsentwicklung sein, aber oft gibt es neben dem ständigen Testen des Programms noch andere Dinge zu tun. Beim Fuzz-Testing ist dies jedoch anders, da Sie den gesamten Prozess mithilfe von Fuzzern automatisieren können.
Fuzzer sind Werkzeuge, die für die automatische Eingabe von Daten in das Programm verantwortlich sind, wenn ihnen die erforderlichen Befehle und Bedingungen gegeben werden. Die Tatsache, dass Fuzz-Testing die Geschäftsautomatisierung ermöglicht, macht es zu einer idealen Testtechnik für Unternehmen.
- Praktisch: Normalerweise muss man beim Testen so viele Tools wie möglich verwenden, um die Wahrscheinlichkeit von Fehlern zu verringern und die Sicherheit des Programms zu maximieren. Da Fuzz-Tests automatisierbar und unkompliziert sind, ist es eine bequeme Möglichkeit, die Sicherheit der Software zu erhöhen.
Fuzzing ist im Allgemeinen einfach und leicht zu implementieren, aber es ist erwähnenswert, dass es alle Arten von Ansätzen für Fuzz-Tests gibt. Je nachdem, welchen Typ Sie verwenden, können die Schwierigkeit und Komplexität des Testprozesses variieren. In diesem Sinne könnte dies ein guter Zeitpunkt sein, um über die verschiedenen Arten von Fuzz-Tests zu sprechen.
Verschiedene Ansätze zum Fuzz-Testen
Obwohl es mehrere Arten von Fuzz-Tests gibt, sind sie sich größtenteils ähnlich, außer dass sie Eingaben unterschiedlich generieren. Unabhängig davon gibt es vier Ansätze für Fuzz-Tests:
- Dumb Fuzzing: Wenn man Eingaben völlig zufällig generieren möchte, verwendet man normalerweise einen Dumb Fuzzer. Ein dummer Fuzzer ist ein Werkzeug, das Eingaben ohne Vorkenntnisse oder Intelligenz des Programms erzeugt, daher der Name.
Wenn Sie beispielsweise ein Programm zur Grammatikprüfung erstellen, kann ein dummer Fuzzer am Ende ein Bild erzeugen, das weit von dem entfernt ist, was das Programm erwartet. Dumb Fuzzing ist der einfachste Ansatz für Fuzz-Tests.
- Smart Fuzzing: Auf der anderen Seite der Medaille steht Smart Fuzzing. Im Gegensatz zu Dumb Fuzzing generiert Smart Fuzzing Eingaben, die wissen, was das Programm zu empfangen erwartet. Außerdem erzeugt ein intelligenter Fuzzer keine Eingaben, die das Programm unweigerlich zum Absturz bringen. Stattdessen werden Eingaben generiert, die zu unerwartetem Verhalten führen können.
Im vorherigen Beispiel könnte ein intelligenter Fuzzer also Sonderzeichen erzeugen, aber niemals ein Bild oder eine andere ungeeignete Eingabe. Obwohl intelligente Fuzzer schwieriger zu implementieren sind als dumme Fuzzer, sind sie die meiste Zeit genauer.
- Mutations-Fuzzing: Beim Mutations-Fuzzing wird eine Eingabe generiert, indem eine vorhandene gültige Eingabe modifiziert oder genauer gesagt „mutiert“ wird. In unserem Beispiel mit dem Rechnerprogramm kann ein Mutations-Fuzzer eine vorhandene gültige Eingabe auswählen.
Angenommen, der ausgewählte Eingang ist „10+9“. Ein Mutations-Fuzzer versucht, diese Eingabe zu modifizieren, indem er einen Teil dieser Eingabe hinzufügt, entfernt oder ändert, z. B. den Wert erhöht und ihn in „180 + 129“ umwandelt oder die Operation so ändert, dass sie „10/9“ ergibt.
- Generational Fuzzing: Schließlich generiert generational Fuzzing Eingaben von Grund auf neu, was das Gegenteil von mutationalem Fuzzing ist, das Eingaben aus bestehenden generiert. Da es keine Referenzen gibt, sind Generations-Fuzzer viel schwieriger zu implementieren als Mutations-Fuzzer, aber sie können zu mehr Daten für den Tester führen.
Was das Fuzz-Testen etwas interessanter als andere Techniken macht, ist, dass Sie verschiedene Typen kombinieren können, um das Testwerkzeug zu verbessern. Sie können beispielsweise einen Smart-Mutational-Fuzzer oder einen Dumb-Generational-Fuzzer erstellen, je nachdem, was Ihr Programm benötigt. Vielleicht sind die unzähligen Kombinationen, die Sie mit Fuzz-Tests durchführen können, ein weiterer Grund, warum Unternehmen Fuzz-Tests anderen Methoden vorziehen.
Einpacken
Sobald Sie mehr über Fuzz-Tests erfahren, ist es leicht zu verstehen, warum es so beliebt geworden ist, wie es jetzt ist. Es ist jedoch auch erwähnenswert, dass Fuzz-Tests, ähnlich wie jede andere Technik, einige Nachteile haben. Daher ist es wichtig festzustellen, ob Fuzz-Tests Ihrer Anwendung oder Software mehr nützen als schaden können. Wie bereits erwähnt, gibt es keine Einheitslösung für Software-Sicherheitstests, und Fuzz-Tests werden mit Sicherheit nicht diese Lösung sein.
Haben Sie irgendwelche Gedanken dazu? Lassen Sie es uns unten in den Kommentaren wissen oder übertragen Sie die Diskussion auf unseren Twitter oder Facebook.