
RESTler es la primera herramienta de fuzzing de API REST con estado para probar automáticamente servicios en la nube a través de sus API REST y encontrar fallos de seguridad y fiabilidad en estos servicios.
RESTler es la primera herramienta de fuzzing de API REST con estado para probar automáticamente servicios en la nube a través de sus API REST y encontrar errores de seguridad y confiabilidad en estos servicios. Para un servicio en la nube dado con una especificación OpenAPI (anteriormente Swagger), RESTler analiza toda su especificación y luego genera y ejecuta pruebas que ejercitan el servicio a través de su API REST.
RESTler infiere inteligentemente dependencias productor-consumidor entre tipos de solicitudes a partir de la definición OpenAPI. Durante las pruebas, verifica clases específicas de errores y aprende dinámicamente cómo se comporta el servicio a partir de respuestas anteriores del servicio. Esta inteligencia permite a RESTler explorar estados de servicio más profundos alcanzables solo a través de secuencias de solicitudes específicas y encontrar más errores.
RESTler está descrito en estos artículos de investigación revisados por pares:
Si usas RESTler en tu investigación, por favor cita el artículo (por defecto) de ICSE'2019 (BibTeX).
RESTler incluye múltiples estrategias de generación de pruebas. Para obtener una visión comparativa completa con respecto a (i) eficiencia (es decir, qué tan rápido puede RESTler encontrar fallos) y (ii) efectividad (es decir, cuántos fallos puede encontrar RESTler en un período de tiempo dado), recomendamos comparar todos los fuzzing_mode(s) documentados, ya que cada uno proporciona un equilibrio diferente entre amplitud y profundidad de exploración del espacio de estados. También recomendamos ejecutar el modo test antes de cualquier fuzzing, como se describe a continuación, para descubrir y solucionar problemas de configuración (por ejemplo, agregar valores de parámetros de requisitos previos al diccionario) antes del fuzzing.
RESTler fue creado en Microsoft Research y aún está en desarrollo activo.
Para una visión general y demostración sobre cómo comenzar, consulta Webinar - Fuzzing para Mejorar la Seguridad y Confiabilidad de los Servicios en la Nube.

RESTler fue diseñado para ejecutarse en máquinas de 64 bits con Windows o Linux. También se ha habilitado soporte experimental para macOS.
En la raíz de este repositorio, ejecuta
docker build -t restler .
El contenedor docker resultante tendrá RESTler disponible en el directorio /RESTler/restler con el binario principal Restler.
Luego puedes usar esta imagen docker como base para agregar la aplicación bajo prueba y ejecutar fuzzing dentro de contenedores docker aislados.
Requisitos previos: Instala Python 3.12.8 y .NET 8.0, para tu sistema operativo correspondiente.
Crea un directorio donde quieras colocar los binarios de RESTler:
mkdir restler_bin
Cambia al directorio raíz del repositorio y ejecuta el siguiente script de Python:
python ./build-restler.py --dest_dir <full path to restler_bin above>
Nota: si obtienes el error de nuget NU1403 al compilar, una solución rápida es limpiar tu caché con este comando
dotnet nuget locals all --clear
RESTler se ejecuta en 4 modos principales (en orden):
Para una introducción rápida con ejemplos simples, consulta este Tutorial.
Para probar rápidamente RESTler en tu API, consulta Inicio rápido.
Actualmente hay dos categorías de errores encontrados por RESTler.
500 ("Error interno del servidor"), se reporta un error.Cuando se encuentra un error, RESTler reporta los errores clasificados en cubos de errores (bug buckets) y proporciona un registro de reproducción que se puede usar para reproducir el error (consulta Reproducción).
Para consejos sobre cómo usar RESTler de manera efectiva, consulta Mejores prácticas y Mejora de la cobertura de API.
Consulta también estas Preguntas frecuentes.