
RESTler é a primeira ferramenta de fuzzing de API REST stateful para testar automaticamente serviços em nuvem através de suas APIs REST e encontrar bugs de segurança e confiabilidade nesses serviços.
RESTler é a primeira ferramenta de fuzzing de API REST stateful para testar automaticamente serviços de nuvem através de suas APIs REST e encontrar bugs de segurança e confiabilidade nesses serviços. Para um determinado serviço de nuvem com uma especificação OpenAPI (antigo Swagger), o RESTler analisa toda a sua especificação e, em seguida, gera e executa testes que exercitam o serviço através de sua API REST.
O RESTler infere inteligentemente dependências produtor-consumidor entre tipos de requisição a partir da definição OpenAPI. Durante o teste, ele verifica classes específicas de bugs e aprende dinamicamente como o serviço se comporta a partir de respostas anteriores do serviço. Essa inteligência permite que o RESTler explore estados de serviço mais profundos, acessíveis apenas através de sequências de requisição específicas, e encontre mais bugs.
O RESTler é descrito nestes artigos de pesquisa revisados por pares:
Se você usa o RESTler em sua pesquisa, por favor cite o artigo (padrão) ICSE'2019 (BibTeX).
O RESTler inclui múltiplas estratégias de geração de testes. Para obter uma visão comparativa abrangente em relação a (i) eficiência (isto é, quão rapidamente o RESTler pode encontrar falhas) e (ii) eficácia (isto é, quantas falhas o RESTler pode encontrar em um determinado período de tempo), recomendamos comparar contra todos os documentados, porque cada um oferece um trade-off diferente entre amplitude e profundidade da exploração do espaço de estados. Também recomendamos executar o modo antes de qualquer fuzzing, conforme descrito abaixo, para descobrir e corrigir problemas de configuração (por exemplo, adicionar valores de parâmetros pré-requisitos necessários ao dicionário) antes do fuzzing.
fuzzing_mode(s)testO RESTler foi criado na Microsoft Research e ainda está em desenvolvimento ativo.
Para uma visão geral e demonstração de como começar, veja Webinar - Fuzzing para Melhorar a Segurança e Confiabilidade de Serviços de Nuvem.

O RESTler foi projetado para rodar em máquinas de 64 bits com Windows ou Linux. O suporte experimental para macOS também está habilitado.
Na raiz deste repositório, execute
docker build -t restler .
O container docker resultante terá o RESTler disponível no diretório /RESTler/restler com o binário principal Restler.
Você pode então usar esta imagem docker como base para adicionar o aplicativo sob teste para executar fuzzing dentro de containers docker isolados.
Pré-requisitos: Instale Python 3.12.8 e .NET 8.0, para seu sistema operacional apropriado.
Crie um diretório onde você gostaria de colocar os binários do RESTler:
mkdir restler_bin
Mude para o diretório raiz do repositório e execute o seguinte script Python:
python ./build-restler.py --dest_dir <full path to restler_bin above>
Nota: se você obtiver o erro nuget NU1403 ao construir, uma solução rápida é limpar seu cache com este comando
dotnet nuget locals all --clear
O RESTler é executado em 4 modos principais (em ordem):
Para uma introdução rápida com exemplos simples, veja este Tutorial.
Para experimentar rapidamente o RESTler em sua API, veja Início Rápido.
Atualmente existem duas categorias de bugs encontrados pelo RESTler.
500 ("Erro Interno do Servidor") é recebida, um bug é reportado.Quando um bug é encontrado, o RESTler reporta bugs triados em buckets de bugs e fornece um log de replay que pode ser usado para reproduzir o bug (veja Replay).
Para dicas sobre como usar o RESTler efetivamente, veja Melhores Práticas e Melhorando a Cobertura da API.
Veja também estas Perguntas Frequentes.
Se você está interessado em usar o RESTler em escala como parte do seu pipeline CI/CD, confira o serviço auto-hospedado de Teste de Fuzz de API REST.
Se você tem uma solicitação/sugestão/pergunta, por favor registre uma issue. Veja Contributing.md para instruções.
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Contribuidor (CLA) declarando que você tem o direito e, de fato, nos concede os direitos de usar sua contribuição. Para detalhes, visite https://cla.microsoft.com.
Quando você enviar um pull request, um CLA-bot determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, etiqueta, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios que usam nosso CLA.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para mais informações, veja as FAQ do Código de Conduta ou entre em contato com [email protected] para quaisquer perguntas ou comentários adicionais.
Para mais informações, veja Contributing.md.
Este projeto pode conter marcas registradas ou logotipos de projetos, produtos ou serviços. O uso autorizado de marcas registradas ou logotipos da Microsoft está sujeito e deve seguir as Diretrizes de Marcas Registradas e Marca da Microsoft. O uso de marcas registradas ou logotipos da Microsoft em versões modificadas deste projeto não deve causar confusão ou implicar patrocínio da Microsoft. Qualquer uso de marcas registradas ou logotipos de terceiros está sujeito às políticas desses terceiros.
O software pode coletar informações sobre você e seu uso do software e enviá-las para a Microsoft. A Microsoft pode usar essas informações para fornecer serviços e melhorar nossos produtos e serviços. Você pode desligar a telemetria conforme descrito no repositório. Há também alguns recursos no software que podem permitir que você e a Microsoft coletem dados de usuários de suas aplicações. Se você usar esses recursos, deve cumprir a lei aplicável, incluindo o fornecimento de avisos apropriados aos usuários de suas aplicações juntamente com uma cópia da declaração de privacidade da Microsoft. Nossa declaração de privacidade está localizada em https://go.microsoft.com/fwlink/?LinkID=824704. Você pode aprender mais sobre coleta e uso de dados na documentação de ajuda e em nossa declaração de privacidade. Seu uso do software opera como seu consentimento para essas práticas.
Para mais informações, veja Telemetry.md.
Problemas de segurança e bugs devem ser reportados de forma privada, por e-mail, para o Microsoft Security Response Center (MSRC) em [email protected]. Você deve receber uma resposta dentro de 24 horas. Se por algum motivo não receber, por favor, faça um acompanhamento por e-mail para garantir que recebemos sua mensagem original. Mais informações, incluindo a chave MSRC PGP, podem ser encontradas no Security TechCenter.
Para detalhes adicionais, veja Security.md.