
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.
Si estás interesado en usar RESTler a escala como parte de tu canalización CI/CD, consulta el servicio autoalojado de pruebas de fuzzing de API REST.
Si tienes una solicitud/sugerencia/pregunta, por favor crea un issue. Consulta Contributing.md para instrucciones.
Este proyecto acepta contribuciones y sugerencias. La mayoría de las contribuciones requieren que aceptes un Acuerdo de Licencia para Contribuyentes (CLA) que declare que tienes el derecho, y de hecho lo haces, de otorgarnos los derechos para usar tu contribución. Para más detalles, visita https://cla.microsoft.com.
Cuando envías una solicitud de extracción (pull request), un CLA-bot determinará automáticamente si necesitas proporcionar un CLA y decorará el PR adecuadamente (por ejemplo, etiqueta, comentario). Simplemente sigue las instrucciones proporcionadas por el bot. Solo necesitarás hacer esto una vez en todos los repositorios que usen nuestro CLA.
Este proyecto ha adoptado el Código de Conducta de Código Abierto de Microsoft. Para obtener más información, consulta las Preguntas frecuentes sobre el Código de Conducta o contacta a [email protected] con cualquier pregunta o comentario adicional.
Para más información, consulta Contributing.md.
Este proyecto puede contener marcas comerciales o logotipos de proyectos, productos o servicios. El uso autorizado de marcas comerciales o logotipos de Microsoft está sujeto y debe seguir las Directrices de Marcas Comerciales y Marca de Microsoft. El uso de marcas comerciales o logotipos de Microsoft en versiones modificadas de este proyecto no debe causar confusión ni implicar patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de esos terceros.
El software puede recopilar información sobre ti y sobre tu uso del software y enviarla a Microsoft. Microsoft puede usar esta información para proporcionar servicios y mejorar nuestros productos y servicios. Puedes desactivar la telemetría como se describe en el repositorio. También hay algunas características en el software que pueden permitirte a ti y a Microsoft recopilar datos de los usuarios de tus aplicaciones. Si usas estas características, debes cumplir con la ley aplicable, incluida la provisión de avisos apropiados a los usuarios de tus aplicaciones junto con una copia de la declaración de privacidad de Microsoft. Nuestra declaración de privacidad se encuentra en https://go.microsoft.com/fwlink/?LinkID=824704. Puedes obtener más información sobre la recopilación y el uso de datos en la documentación de ayuda y en nuestra declaración de privacidad. Tu uso del software constituye tu consentimiento a estas prácticas.
Para más información, consulta Telemetry.md.
Los problemas de seguridad y los errores deben informarse de forma privada, por correo electrónico, al Centro de Respuesta de Seguridad de Microsoft (MSRC) en [email protected]. Deberías recibir una respuesta dentro de las 24 horas. Si por alguna razón no lo haces, por favor haz un seguimiento por correo electrónico para asegurarte de que recibimos tu mensaje original. Más información, incluida la clave MSRC PGP, se puede encontrar en el Security TechCenter.
Para más detalles, consulta Security.md.