
RESTler est le premier outil de fuzzing d'API REST stateful pour tester automatiquement les services cloud via leurs API REST et trouver des bugs de sécurité et de fiabilité dans ces services.
RESTler est le premier outil de fuzzing d'API REST stateful pour tester automatiquement les services cloud via leurs API REST et trouver des bugs de sécurité et de fiabilité dans ces services. Pour un service cloud donné avec une spécification OpenAPI (anciennement Swagger), RESTler analyse l'intégralité de sa spécification, puis génère et exécute des tests qui sollicitent le service via son API REST.
RESTler déduit intelligemment les dépendances producteur-consommateur entre les types de requêtes à partir de la définition OpenAPI. Pendant les tests, il vérifie des classes spécifiques de bugs et apprend dynamiquement comment le service se comporte à partir des réponses précédentes du service. Cette intelligence permet à RESTler d'explorer des états de service plus profonds accessibles uniquement via des séquences de requêtes spécifiques et de trouver plus de bugs.
RESTler est décrit dans ces articles de recherche évalués par des pairs :
Si vous utilisez RESTler dans vos recherches, veuillez citer l'article ICSE'2019 (par défaut) (BibTeX).
RESTler inclut plusieurs stratégies de génération de tests. Afin d'obtenir une vue comparative complète concernant (i) l'efficacité (c'est-à-dire la rapidité avec laquelle RESTler trouve des crashs) et (ii) l'efficience (c'est-à-dire le nombre de crashs que RESTler peut trouver dans un laps de temps donné), nous recommandons de comparer tous les fuzzing_mode(s) documentés car chacun offre un compromis différent entre la largeur et la profondeur de l'exploration de l'espace d'états. Nous recommandons également d'exécuter le mode test avant tout fuzzing, comme décrit ci-dessous, pour découvrir et corriger les problèmes de configuration (par exemple, ajouter les valeurs de paramètres prérequis nécessaires au dictionnaire) avant le fuzzing.
RESTler a été créé chez Microsoft Research et est toujours en développement actif.
Pour un aperçu et une démonstration sur la façon de commencer, consultez Webinaire - Fuzzing pour améliorer la sécurité et la fiabilité des services cloud.

RESTler a été conçu pour fonctionner sur des machines 64 bits sous Windows ou Linux. Le support expérimental pour macOS est également activé.
À la racine de ce dépôt, exécutez
docker build -t restler .
Le conteneur docker résultant aura RESTler disponible dans le répertoire /RESTler/restler avec le binaire principal Restler.
Vous pouvez ensuite utiliser cette image docker comme base pour ajouter l'application testée afin d'exécuter le fuzzing dans des conteneurs docker isolés.
Prérequis : Installez Python 3.12.8 et .NET 8.0, pour votre système d'exploitation approprié.
Créez un répertoire où vous souhaitez placer les binaires RESTler :
mkdir restler_bin
Placez-vous à la racine du dépôt et exécutez le script Python suivant :
python ./build-restler.py --dest_dir <full path to restler_bin above>
Remarque : si vous obtenez l'erreur nuget NU1403 lors de la compilation, une solution rapide consiste à vider votre cache avec cette commande
dotnet nuget locals all --clear
RESTler s'exécute en 4 modes principaux (dans l'ordre) :
Pour une introduction rapide avec des exemples simples, consultez ce Tutoriel.
Pour essayer rapidement RESTler sur votre API, voir Démarrage rapide.
Il existe actuellement deux catégories de bugs trouvés par RESTler.
500 ("Erreur interne du serveur") est reçue, un bug est signalé.Lorsqu'un bug est trouvé, RESTler rapporte les bugs triés dans des buckets de bugs et fournit un journal de rejeu qui peut être utilisé pour reproduire le bug (voir Rejeu).
Pour des conseils sur l'utilisation efficace de RESTler, veuillez consulter Bonnes pratiques et Amélioration de la couverture API.
Voir aussi ces Questions fréquemment posées.