Tutorial zum Fuzz-Testen (Fuzzing): Was ist, Typen, Werkzeuge & Beispiel

Inhaltsverzeichnis:

Anonim

Fuzz-Tests

Fuzz Testing oder Fuzzing ist eine Softwaretestmethode, mit der ungültige oder zufällige Daten namens FUZZ in das Softwaresystem eingegeben werden, um Codierungsfehler und Sicherheitslücken zu entdecken. Der Zweck von Fuzz-Tests besteht darin, Daten mithilfe automatisierter oder halbautomatisierter Techniken einzufügen und das System auf verschiedene Ausnahmen wie Systemabsturz oder Ausfall von integriertem Code usw. zu testen.

Fuzz-Tests wurden ursprünglich 1989 von Barton Miller an der Universität von Wisconsin entwickelt. Fuzz-Tests oder Fuzzing sind eine Software-Testtechnik und eine Art von Sicherheitstests .

Warum Fuzz-Tests durchführen?

  • Normalerweise finden Fuzzy-Tests den schwerwiegendsten Sicherheitsfehler oder -fehler.
  • Fuzz-Tests liefern effektivere Ergebnisse, wenn sie mit Black-Box-Tests, Betatests und anderen Debugging-Methoden verwendet werden.
  • Fuzz-Tests werden verwendet, um die Sicherheitsanfälligkeit von Software zu überprüfen. Es ist sehr kostengünstig Testtechniken.
  • Fuzz-Tests sind eine der Black-Box-Testtechniken. Fuzzing ist eine der häufigsten Methoden, mit denen Hacker die Sicherheitslücke des Systems ermitteln.

So führen Sie Fuzz-Tests durch

Die Schritte für das Fuzzy-Testen umfassen die grundlegenden Testschritte:

Schritt 1) Identifizieren Sie das Zielsystem

Schritt 2) Identifizieren Sie die Eingaben

Schritt 3) Generieren Sie unscharfe Daten

Schritt 4) Führen Sie den Test mit Fuzzy-Daten aus

Schritt 5) Überwachen Sie das Systemverhalten

Schritt 6) Fehler protokollieren

Beispiele für Fuzzers

  • Mutationsbasierte Fuzzers ändern vorhandene Datenproben, um neue Testdaten zu erstellen. Dies ist der sehr einfache und unkomplizierte Ansatz. Er beginnt mit gültigen Protokollbeispielen und verwirrt jedes Byte oder jede Datei.

  • Generationsbasierte Fuzzers definieren neue Daten basierend auf der Eingabe des Modells. Es beginnt, basierend auf der Spezifikation Eingaben von Grund auf neu zu generieren.

  • PROTOKOLLBASIERTER Fuzzer , der erfolgreichste Fuzzer besteht darin, detaillierte Kenntnisse über das zu testende Protokollformat zu haben. Das Verständnis hängt von der Spezifikation ab. Es umfasst das Schreiben eines Arrays der Spezifikation in das Tool. Anschließend werden mithilfe der modellbasierten Testgenerierungstechnik die Spezifikation durchgearbeitet und Unregelmäßigkeiten im Dateninhalt, in der Sequenz usw. hinzugefügt. Dies wird auch als Syntaxtest, Grammatiktest, Robustheitstest usw. bezeichnet. usw. Fuzzer kann Testfälle aus einem vorhandenen generieren oder gültige oder ungültige Eingaben verwenden.

Es gibt zwei Einschränkungen beim protokollbasierten Fuzzing:

  1. Der Test kann erst fortgesetzt werden, wenn die Spezifikation ausgereift ist.
  2. Viele nützliche Protokolle sind eine Erweiterung der veröffentlichten Protokolle. Wenn Fuzz-Tests auf veröffentlichten Spezifikationen basieren, ist die Testabdeckung für neue Protokolle begrenzt.

Die einfachste Form der Fuzzing-Technik besteht darin, zufällige Eingaben entweder als Protokollpakete oder als Ereignis an die Software zu senden. Diese Technik zum Übergeben von Zufallseingaben ist sehr leistungsfähig, um Fehler in vielen Anwendungen und Diensten zu finden. Es stehen auch andere Techniken zur Verfügung, die sehr einfach zu implementieren sind. Um diese Techniken zu implementieren, müssen wir nur die vorhandenen Eingaben ändern. Wir können die Eingabe ändern, indem wir einfach die Eingabebits vertauschen.

Arten von Fehlern, die durch Fuzz-Tests erkannt wurden

  • Assertionsfehler und Speicherlecks Diese Methode wird häufig für große Anwendungen verwendet, bei denen Fehler die Sicherheit des Speichers beeinträchtigen, was eine schwerwiegende Sicherheitsanfälligkeit darstellt.

  • Ungültige Eingabe

    Beim Fuzz-Testen werden Fuzzer verwendet, um eine ungültige Eingabe zu generieren, die zum Testen von Fehlerbehandlungsroutinen verwendet wird. Dies ist wichtig für die Software, die ihre Eingabe nicht steuert. Einfaches Fuzzing kann als eine Möglichkeit zur Automatisierung negativer Tests bekannt sein.

  • Korrektheitsfehler

    Fuzzing kann auch verwendet werden, um einige Arten von "Korrektheits" -Fehlern zu erkennen. Wie eine beschädigte Datenbank, schlechte Suchergebnisse usw.

    Fuzz-Test-Tools

    Tools, die in der Websicherheit verwendet werden, können häufig in Fuzz-Tests wie Burp Suite, Peach Fuzzer usw. verwendet werden.

  • Pfirsich-Fuzzer

    Peach Fuzzer bietet eine robustere und sicherere Abdeckung als ein Scanner. Andere Testtools können nur nach bekannten Threads suchen, während Peach Fuzzer es Benutzern ermöglicht, bekannte und unbekannte Threads zu finden.

  • Spike-Proxy

    Es ist ein professionelles Tool, das nach Schwachstellen auf Anwendungsebene in Webanwendungen sucht. SPIKE Proxy behandelt die Grundlagen wie SQL Injection und Cross-Site-Scripting, ist jedoch eine vollständig offene Python-Infrastruktur. SPIKE Proxy ist für Linux und Windows verfügbar.

  • Webscarab

    Webscarab ist in Java geschrieben und somit auf viele Plattformen portierbar. Zur Analyse der Anwendung wird das Webscarab-Framework verwendet, das über HTTP- und HTTPS-Protokolle kommuniziert.

    Beispiel: Webscarab fungiert als abfangender Proxy. Es ermöglicht dem Bediener, vom Browser erstellte Anforderungen zu überprüfen und zu ändern, bevor sie vom Server empfangen werden. Ermöglichen Sie das Überprüfen und Aktualisieren der vom Server generierten Antwort, bevor sie vom Browser empfangen wird. Auf diese Weise wird die Liste der gemeldeten Probleme erstellt, wenn der Web-Skarabäus eine Lücke findet.

  • OWASP WSFuzzer

    WSFuzzer ist ein GPL-Programm, das in Python geschrieben wurde. Die GPL eines Programms zielt derzeit auf Webdienste ab. In der aktuellen Version von OWASPWSFuzzer sind HTTP-basierte SOAP-Dienste das Hauptziel.

Vorteile von Fuzz-Tests

  • Fuzz-Tests verbessern die Software-Sicherheitstests.
  • Fehler beim Fuzzing sind manchmal schwerwiegend und werden meistens von Hackern verwendet, einschließlich Abstürzen, Speicherverlust, nicht behandelten Ausnahmen usw.
  • Wenn einer der Fehler von den Testern aufgrund der begrenzten Zeit und Ressourcen nicht bemerkt wird, werden diese Fehler auch beim Fuzz-Testen gefunden.

Nachteile des Fuzz-Testens

  • Fuzz-Tests allein können kein vollständiges Bild einer allgemeinen Sicherheitsbedrohung oder von Sicherheitsfehlern liefern.
  • Fuzz-Tests sind weniger effektiv für den Umgang mit Sicherheitsbedrohungen, die keine Programmabstürze verursachen, wie z. B. einige Viren, Würmer, Trojaner usw.
  • Fuzz-Tests können nur einfache Fehler oder Bedrohungen erkennen.
  • Um effektiv zu arbeiten, wird es viel Zeit erfordern.
  • Das Festlegen einer Randwertbedingung mit zufälligen Eingaben ist sehr problematisch, aber jetzt lösen deterministische Algorithmen, die auf Benutzereingaben basieren, die meisten Tester dieses Problem.

Zusammenfassung:

In der Softwareentwicklung zeigen Fuzz-Tests das Vorhandensein von Fehlern in einer Anwendung. Fuzzing kann die vollständige Erkennung von Fehlern in einer Anwendung nicht garantieren. Durch die Verwendung der Fuzz-Technik wird jedoch sichergestellt, dass die Anwendung robust und sicher ist, da diese Technik dazu beiträgt, die meisten der häufigsten Schwachstellen aufzudecken.

Dieser Artikel wurde von Priyanka Kothe verfasst