
RESTler ist das erste zustandsbehaftete REST-API-Fuzzing-Tool zum automatischen Testen von Cloud-Diensten über ihre REST-APIs und zum Auffinden von Sicherheits- und Zuverlässigkeitsfehlern in diesen Diensten.
RESTler ist das erste stateful REST-API-Fuzzing-Tool zum automatischen Testen von Cloud-Diensten über deren REST-APIs und zum Auffinden von Sicherheits- und Zuverlässigkeitsfehlern in diesen Diensten. Für einen gegebenen Cloud-Dienst mit einer OpenAPI-Spezifikation (ehemals Swagger) analysiert RESTler dessen gesamte Spezifikation und generiert und führt dann Tests aus, die den Dienst über seine REST-API testen.
RESTler leitet intelligent Producer-Consumer-Abhängigkeiten zwischen Anfragetypen aus der OpenAPI-Definition ab. Während des Testens prüft es auf spezifische Fehlerklassen und lernt dynamisch aus früheren Dienstantworten, wie sich der Dienst verhält. Diese Intelligenz ermöglicht es RESTler, tiefere Dienstzustände zu erkunden, die nur durch bestimmte Anfragesequenzen erreichbar sind, und mehr Fehler zu finden.
RESTler wird in diesen begutachteten Forschungspapieren beschrieben:
Wenn Sie RESTler in Ihrer Forschung verwenden, zitieren Sie bitte das (Standard-)ICSE'2019-Papier (BibTeX).
RESTler enthält mehrere Testgenerierungsstrategien. Um eine umfassende vergleichende Sichtweise hinsichtlich (i) Effizienz (d.h., wie schnell kann RESTler Abstürze finden) und (ii) Effektivität (d.h., wie viele Abstürze kann RESTler in einem bestimmten Zeitrahmen finden) zu erhalten, empfehlen wir, gegen alle dokumentierten fuzzing_mode(s) zu vergleichen, da jeder einen anderen Kompromiss zwischen Breite und Tiefe der Zustandsraumexploration bietet. Wir empfehlen auch, den test-Modus vor jedem Fuzzing auszuführen, wie unten beschrieben, um Einrichtungsprobleme zu entdecken und zu beheben (z.B. Hinzufügen erforderlicher Voraussetzungsparameterwerte zum Wörterbuch) vor dem Fuzzing.
RESTler wurde bei Microsoft Research entwickelt und wird noch aktiv weiterentwickelt.
Für einen Überblick und eine Demo zum Einstieg siehe Webinar - Fuzzing zur Verbesserung der Sicherheit und Zuverlässigkeit von Cloud-Diensten.

RESTler wurde für den Betrieb auf 64-Bit-Maschinen mit Windows oder Linux entwickelt. Experimentelle Unterstützung für macOS ist ebenfalls aktiviert.
Führen Sie im Stammverzeichnis dieses Repos Folgendes aus:
docker build -t restler .
Der resultierende Docker-Container wird RESTler im Verzeichnis /RESTler/restler mit der Hauptbinärdatei Restler enthalten.
Sie können dieses Docker-Image dann als Basis verwenden, um die zu testende Anwendung hinzuzufügen und Fuzzing in isolierten Docker-Containern auszuführen.
Voraussetzungen: Installieren Sie Python 3.12.8 und .NET 8.0 für Ihr entsprechendes Betriebssystem.
Erstellen Sie ein Verzeichnis, in dem Sie die RESTler-Binärdateien ablegen möchten:
mkdir restler_bin
Wechseln Sie in das Stammverzeichnis des Repos und führen Sie das folgende Python-Skript aus:
python ./build-restler.py --dest_dir <full path to restler_bin above>
Hinweis: Wenn Sie beim Erstellen den Nuget-Fehler NU1403 erhalten, besteht eine schnelle Problemumgehung darin, Ihren Cache mit diesem Befehl zu leeren:
dotnet nuget locals all --clear
RESTler läuft in 4 Hauptmodi (in der Reihenfolge):
Für eine kurze Einführung mit einfachen Beispielen siehe dieses Tutorial.
Um RESTler schnell auf Ihrer API auszuprobieren, siehe Schnellstart.
Es gibt derzeit zwei Kategorien von Fehlern, die von RESTler gefunden werden.
500 („Interner Serverfehler“) empfangen wird.Wenn ein Fehler gefunden wird, meldet RESTler die in Bug-Buckets triagierten Fehler und stellt ein Wiederholungsprotokoll zur Verfügung, das zur Reproduktion des Fehlers verwendet werden kann (siehe Replay).
Tipps zur effektiven Nutzung von RESTler finden Sie unter Best Practices und Verbesserung der API-Abdeckung.
Siehe auch diese Häufig gestellten Fragen.
Wenn Sie daran interessiert sind, RESTler in großem Umfang als Teil Ihrer CI/CD-Pipeline zu verwenden, werfen Sie einen Blick auf den REST API Fuzz Testing self-hosted service.