
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.
Si vous êtes intéressé par l'utilisation de RESTler à grande échelle dans le cadre de votre pipeline CI/CD, découvrez le service auto-hébergé de test de fuzzing d'API REST.
Si vous avez une demande/suggestion/question, veuillez soumettre un problème. Voir Contributing.md pour les instructions.
Ce projet accepte les contributions et les suggestions. La plupart des contributions vous obligent à accepter un Contrat de Licence de Contributeur (CLA) déclarant que vous avez le droit, et que vous accordez effectivement, les droits d'utiliser votre contribution. Pour plus de détails, visitez https://cla.microsoft.com.
Lorsque vous soumettez une pull request, un CLA-bot déterminera automatiquement si vous devez fournir un CLA et décorera la PR de manière appropriée (par exemple, étiquette, commentaire). Suivez simplement les instructions fournies par le bot. Vous n'aurez besoin de le faire qu'une seule fois pour tous les dépôts utilisant notre CLA.
Ce projet a adopté le Code de conduite open source de Microsoft. Pour plus d'informations, consultez la FAQ du Code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.
Pour plus d'informations, voir Contributing.md.
Ce projet peut contenir des marques déposées ou des logos pour des projets, produits ou services. L'utilisation autorisée des marques ou logos de Microsoft est soumise et doit suivre les directives sur les marques et la marque de Microsoft. L'utilisation de marques ou logos de Microsoft dans des versions modifiées de ce projet ne doit pas créer de confusion ni impliquer un parrainage de Microsoft. Toute utilisation de marques ou logos tiers est soumise aux politiques de ces tiers.
Le logiciel peut collecter des informations vous concernant et concernant votre utilisation du logiciel et les envoyer à Microsoft. Microsoft peut utiliser ces informations pour fournir des services et améliorer nos produits et services. Vous pouvez désactiver la télémétrie comme décrit dans le dépôt. Il existe également certaines fonctionnalités du logiciel qui peuvent vous permettre, ainsi qu'à Microsoft, de collecter des données auprès des utilisateurs de vos applications. Si vous utilisez ces fonctionnalités, vous devez respecter la loi applicable, notamment en fournissant des avis appropriés aux utilisateurs de vos applications ainsi qu'une copie de la déclaration de confidentialité de Microsoft. Notre déclaration de confidentialité se trouve à l'adresse https://go.microsoft.com/fwlink/?LinkID=824704. Vous pouvez en savoir plus sur la collecte et l'utilisation des données dans la documentation d'aide et notre déclaration de confidentialité. Votre utilisation du logiciel constitue votre consentement à ces pratiques.
Pour plus d'informations, voir Telemetry.md.
Les problèmes de sécurité et les bugs doivent être signalés en privé, par courriel, au Microsoft Security Response Center (MSRC) à [email protected]. Vous devriez recevoir une réponse sous 24 heures. Si pour une raison quelconque ce n'est pas le cas, veuillez envoyer un courriel de suivi pour nous assurer que nous avons reçu votre message original. Des informations supplémentaires, y compris la clé MSRC PGP, se trouvent dans le Security TechCenter.
Pour plus de détails, voir Security.md.