
RESTler è il primo strumento di fuzzing stateful per API REST per testare automaticamente i servizi cloud attraverso le loro API REST e trovare bug di sicurezza e affidabilità in questi servizi.
RESTler è il primo strumento di fuzzing per API REST stateful per testare automaticamente i servizi cloud attraverso le loro API REST e trovare bug di sicurezza e affidabilità in questi servizi. Per un dato servizio cloud con una specifica OpenAPI (precedentemente Swagger), RESTler analizza l'intera specifica, e poi genera ed esegue test che esercitano il servizio attraverso la sua API REST.
RESTler deduce intelligentemente le dipendenze produttore-consumatore tra i tipi di richiesta dalla definizione OpenAPI. Durante il test, controlla specifiche classi di bug e impara dinamicamente come si comporta il servizio dalle risposte precedenti del servizio. Questa intelligenza permette a RESTler di esplorare stati del servizio più profondi raggiungibili solo attraverso sequenze di richieste specifiche e di trovare più bug.
RESTler è descritto in questi articoli di ricerca sottoposti a revisione paritaria:
Se usi RESTler nella tua ricerca, cita l'articolo (predefinito) ICSE'2019 (BibTeX).
RESTler include molteplici strategie di generazione di test. Per ottenere una visione comparativa completa riguardo a (i) efficienza (cioè quanto velocemente RESTler può trovare crash) e (ii) efficacia (cioè quanti crash RESTler può trovare in un dato intervallo di tempo), raccomandiamo di confrontare tutte le fuzzing_mode(s) documentate, poiché ciascuna fornisce un diverso compromesso tra ampiezza e profondità dell'esplorazione dello spazio degli stati. Raccomandiamo anche di eseguire la modalità test prima di qualsiasi fuzzing, come descritto di seguito, per scoprire e risolvere problemi di configurazione (ad esempio aggiungendo valori di parametri prerequisiti necessari al dizionario) prima del fuzzing.
RESTler è stato creato presso Microsoft Research ed è ancora in fase di sviluppo attivo.
Per una panoramica e una demo su come iniziare, vedi Webinar - Fuzzing per migliorare la sicurezza e l'affidabilità dei servizi cloud.

RESTler è stato progettato per funzionare su macchine a 64 bit con Windows o Linux. Il supporto sperimentale per macOS è anche abilitato.
Nella radice di questo repository, esegui
docker build -t restler .
Il contenitore docker risultante avrà RESTler disponibile nella directory /RESTler/restler con il binario principale Restler.
Puoi quindi utilizzare questa immagine docker come base per aggiungere l'applicazione sotto test per eseguire il fuzzing all'interno di contenitori docker isolati.
Prerequisiti: Installa Python 3.12.8 e .NET 8.0, per il tuo sistema operativo appropriato.
Crea una directory dove vuoi posizionare i binari di RESTler:
mkdir restler_bin
Passa alla directory radice del repository ed esegui il seguente script Python:
python ./build-restler.py --dest_dir <full path to restler_bin above>
Nota: se ottieni l'errore nuget NU1403 durante la build, una soluzione rapida è svuotare la cache con questo comando
dotnet nuget locals all --clear
RESTler funziona in 4 modalità principali (in ordine):
Per una rapida introduzione con esempi semplici, vedi questo Tutorial.
Per provare rapidamente RESTler sulla tua API, vedi Avvio rapido.
Ci sono attualmente due categorie di bug trovati da RESTler.
500 ("Internal Server Error"), viene segnalato un bug.Quando viene trovato un bug, RESTler segnala i bug triati in bucket di bug e fornisce un log di replay che può essere utilizzato per riprodurre il bug (vedi Replay).
Per consigli su come utilizzare RESTler efficacemente, vedi Best Practices e Migliorare la copertura API.
Vedi anche queste Domande frequenti.
Se sei interessato a utilizzare RESTler su larga scala come parte della tua pipeline CI/CD, dai un'occhiata al servizio self-hosted di fuzz testing per API REST.
Se hai una richiesta/suggerimento/domanda, per favore apri un issue. Vedi Contributing.md per le istruzioni.
Questo progetto accoglie contributi e suggerimenti. La maggior parte dei contributi richiede di accettare un Contributor License Agreement (CLA) che dichiara che hai il diritto, e effettivamente lo fai, di concederci i diritti di utilizzare il tuo contributo. Per dettagli, visita https://cla.microsoft.com.
Quando invii una pull request, un CLA-bot determinerà automaticamente se devi fornire un CLA e decorerà la PR appropriatamente (ad esempio, etichetta, commento). Segui semplicemente le istruzioni fornite dal bot. Dovrai farlo solo una volta per tutti i repository che utilizzano il nostro CLA.
Questo progetto ha adottato il Microsoft Open Source Code of Conduct. Per maggiori informazioni vedi le FAQ sul Code of Conduct o contatta [email protected] per qualsiasi domanda o commento aggiuntivo.
Per maggiori informazioni, vedi Contributing.md.
Questo progetto può contenere marchi o loghi per progetti, prodotti o servizi. L'uso autorizzato dei marchi o loghi Microsoft è soggetto e deve seguire le linee guida sui marchi e sul marchio di Microsoft. L'uso di marchi o loghi Microsoft in versioni modificate di questo progetto non deve causare confusione o implicare il patrocinio di Microsoft. Qualsiasi uso di marchi o loghi di terze parti è soggetto alle politiche di tali terze parti.
Il software può raccogliere informazioni su di te e sul tuo utilizzo del software e inviarle a Microsoft. Microsoft può utilizzare queste informazioni per fornire servizi e migliorare i nostri prodotti e servizi. Puoi disattivare la telemetria come descritto nel repository. Ci sono anche alcune funzionalità nel software che possono consentire a te e a Microsoft di raccogliere dati dagli utenti delle tue applicazioni. Se utilizzi queste funzionalità, devi rispettare la legge applicabile, inclusa la fornitura di notifiche appropriate agli utenti delle tue applicazioni insieme a una copia della dichiarazione sulla privacy di Microsoft. La nostra dichiarazione sulla privacy si trova all'indirizzo https://go.microsoft.com/fwlink/?LinkID=824704. Puoi saperne di più sulla raccolta e l'uso dei dati nella documentazione di aiuto e nella nostra dichiarazione sulla privacy. L'utilizzo del software costituisce il tuo consenso a queste pratiche.
Per maggiori informazioni, vedi Telemetry.md.
I problemi di sicurezza e i bug devono essere segnalati privatamente, via email, al Microsoft Security Response Center (MSRC) all'indirizzo [email protected]. Dovresti ricevere una risposta entro 24 ore. Se per qualche motivo non la ricevi, per favore contatta via email per assicurarti di aver ricevuto il tuo messaggio originale. Ulteriori informazioni, inclusa la chiave MSRC PGP, si trovano nel Security TechCenter.
Per ulteriori dettagli, vedi Security.md.