
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.
Wenn Sie eine Anfrage/einen Vorschlag/eine Frage haben, erstellen Sie bitte ein Issue. Anweisungen finden Sie in Contributing.md.
Dieses Projekt begrüßt Beiträge und Vorschläge. Die meisten Beiträge erfordern, dass Sie einer Contributor License Agreement (CLA) zustimmen, die bestätigt, dass Sie das Recht haben und tatsächlich erteilen, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren. Einzelheiten finden Sie unter https://cla.microsoft.com.
Wenn Sie einen Pull-Request einreichen, wird ein CLA-Bot automatisch feststellen, ob Sie eine CLA bereitstellen müssen, und den PR entsprechend kennzeichnen (z.B. Label, Kommentar). Befolgen Sie einfach die Anweisungen des Bots. Sie müssen dies nur einmal für alle Repositories tun, die unsere CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Code of Conduct übernommen. Weitere Informationen finden Sie in den Code of Conduct FAQ oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
Weitere Informationen finden Sie in Contributing.md.
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienste enthalten. Die autorisierte Verwendung von Microsoft-Marken oder -Logos unterliegt den Microsoft-Richtlinien für Marken und Markenauftritt und muss diesen entsprechen. Die Verwendung von Microsoft-Marken oder -Logos in modifizierten Versionen dieses Projekts darf keine Verwirrung stiften oder eine Microsoft-Sponsoring vermuten lassen. Jegliche Verwendung von Marken oder Logos Dritter unterliegt den Richtlinien dieser Dritten.
Die Software kann Informationen über Sie und Ihre Nutzung der Software sammeln und an Microsoft senden. Microsoft kann diese Informationen verwenden, um Dienste bereitzustellen und unsere Produkte und Dienstleistungen zu verbessern. Sie können die Telemetrie wie im Repository beschrieben deaktivieren. Es gibt auch einige Funktionen in der Software, die es Ihnen und Microsoft ermöglichen, Daten von Benutzern Ihrer Anwendungen zu sammeln. Wenn Sie diese Funktionen nutzen, müssen Sie geltendes Recht einhalten, einschließlich der Bereitstellung entsprechender Hinweise an die Benutzer Ihrer Anwendungen zusammen mit einer Kopie der Microsoft-Datenschutzerklärung. Unsere Datenschutzerklärung befindet sich unter https://go.microsoft.com/fwlink/?LinkID=824704. Weitere Informationen zur Datenerfassung und -nutzung finden Sie in der Hilfedokumentation und unserer Datenschutzerklärung. Ihre Nutzung der Software gilt als Ihre Zustimmung zu diesen Praktiken.
Weitere Informationen finden Sie in Telemetry.md.
Sicherheitsprobleme und Fehler sollten vertraulich per E-Mail an das Microsoft Security Response Center (MSRC) unter [email protected] gemeldet werden. Sie sollten innerhalb von 24 Stunden eine Antwort erhalten. Falls Sie aus irgendeinem Grund keine Antwort erhalten, setzen Sie sich bitte per E-Mail mit uns in Verbindung, um sicherzustellen, dass wir Ihre ursprüngliche Nachricht erhalten haben. Weitere Informationen, einschließlich des MSRC PGP-Schlüssels, finden Sie im Security TechCenter.
Weitere Einzelheiten finden Sie in Security.md.