Programmi hacker: RESTler, lo strumento di fuzzing per le API Cloud.

Aggiornato il: lug 8


Per la serie "programmi hacker", oggi parleremo di RESTler.


Quante volte abbiamo parlato di quanto sia importante una corretta progettazione, gestione e controllo sulle API, visto anche che stiamo andando sempre più verso il cloud?


I servizi cloud sono diventati l'infrastruttura critica che ha trasformato il modo in cui eroghiamo i servizi, lavorano gli sviluppatori e anche i tester di sicurezza. Il numero di servizi cloud critici per le aziende continuano a crescere ogni giorno, senza limiti e l'era del software in scatola chiusa sembra sia giunta al termine.


Gli sviluppatori sono ora responsabili della fornitura continua di nuove funzionalità sui servizi live, pur mantenendo la loro sicurezza, scalabilità e disponibilità.



Oggi, per la maggior parte dei servizi cloud e Web, ci si accede in modo programmatico tramite API REST (RE presentational S tate T ransfer). Tuttavia, gli strumenti per l'analisi statica e di fuzz-test che sono comuni nello sviluppo nativo non sono adeguati o sufficienti per gli sviluppatori di servizi web.


Ora più che mai, questi sviluppatori necessitano di approcci automatizzati per scoprire problemi che possono compromettere i servizi attraverso le loro API. Per soddisfare questa esigenza, i ricercatori Microsoft hanno sviluppato e reso open source dei nuovi strumenti per aiutare gli sviluppatori a trovare problemi di sicurezza e affidabilità nei loro servizi cloud testando automaticamente le loro API REST.


RESTler è un nuovissimo strumento di Microsoft per eseguire test fuzz in una determinata API REST. È stato rilasciato il 16 novembre del 2020, quindi perché non provarlo?


Lo strumento richiede che l'API venga specificata utilizzando OpenAPI, precedentemente noto come Swagger, in modo che possa analizzare la "grammatica" che descrive le strutture delle richieste. Successivamente, questa "grammatica" può essere utilizzata per formare richieste HTTP valide che possono essere inviate all'API e, monitorando le risposte, trovare bug e testare efficacemente il servizio. Dopo aver eseguito il comando fuzz test, RESTler genererà molti log, che dovranno poi essere analizzati


RESTler è descritto in questi documenti di ricerca peer-reviewed:


RESTler è stato creato presso Microsoft Research ed è opensource, anche se è ancora in fase di sviluppo, ma è disponibile su su macchine a 64 bit con Windows o Linux supportato da:

  • Python 3.8.2

  • NET core SDK 3.1.

Assicurati di avere installato il modulo libssl-dev e la versione di .NET SDK versione 3.1.

Con le dipendenze installate, procediamo con l'installazione del software effettivo.



Per prima cosa copiamo il file di restler da Github : https://github.com/microsoft/restler-fuzzer

Procediamo quindi a creare una cartella Bins

mkdir bins/

Lanciamo il modulo Python

python ./build-restler.py --dest_dir ./bins

Se tutto funziona a dovere, la directory bins dovrò essere riempita con file binari per eseguire RESTler. Ora configuriamo QRI, per prima cosa scaricandolo dal sito https://github.com/qri-io/qri


Poiché QRI ha un'immagine Docker, eseguire la sua API è estremamente semplice:

docker build . -t qri

Ora esegui:

docker run qri

Conclusioni

RESTler sembra essere uno strumento di fuzzing estremamente utile. Potremmo facilmente individuare i problemi su una base di codice ampia e importante riducendo di molto le tempistiche di analisi attraverso un test manuale.


D'altra parte, il fuzzing nasce proprio per questo, per consentirci di avere un "puntatore" per poi svolgere delle ulteriori analisi e visto che il software è opensource, perchè non provare?



Fonti

https://github.com/microsoft/restler-fuzzer

https://medium.com/swlh/fuzz-testing-with-microsofts-restler-6a3420fffe31