Giter Club home page Giter Club logo

stishkin / rest-api-fuzz-testing-pub Goto Github PK

View Code? Open in Web Editor NEW

This project forked from microsoft/rest-api-fuzz-testing

0.0 0.0 0.0 4.07 MB

REST API Fuzz Testing (RAFT): Source code for self-hosted service developed for Azure, including the API, orchestration engine, and default set of security tools (including MSR's RESTler), that enables developers to embed security tooling into their CI/CD workflows

License: MIT License

Python 28.46% F# 65.85% Dockerfile 0.34% C# 2.47% JavaScript 2.89%

rest-api-fuzz-testing-pub's Introduction

REST API Fuzz Testing (RAFT)

A self hosted REST API Fuzzing-As-A-Service platform

RAFT enables painless fuzzing of REST API's using multiple fuzzers in parallel. Using a single command line baked into your CI/CD pipeline developers can launch fuzz jobs against their services.

Following Swagger/OpenAPI tools are currently supported by RAFT

Tool Description
RESTler RAFT has first class integration with this Microsoft Research tool - the first stateful fuzzing tool designed to automatically test your REST API's driven by your swagger/OpenApi specification.
ZAP RAFT supports Swagger/OpenAPI scanning functionality provided by ZAP
Dredd RAFT supports Swagger/OpenAPI scanning functionality provided by Dredd
Schemathesis RAFT supports Swagger/OpenAPI scanning functionality provided by Schemathesis
RAFT key features
  • Secret management via Azure Keyvault
  • Webhook notifications: JobStatus (Job Created, Job Completed, Job Error) and BugFound for tools that produce bugs during run
  • Ability to deploy RAFT jobs into a pre-provisioned Azure VNET
  • Consistent Job Definition that works across all test tools
  • Consistent Authentication mechanism for service under test across all test tools
  • Long-term job results and logs storage via Azure Storage
  • Ability to use the same RAFT job definitions locally using Docker as in the Azure
  • Ability to deploy dockerized service under test as well as any companion dockerized services part of a RAFT job definition for fully encapsulated testing
RAFT RESTler value add:
  • Real Time RESTler fuzzing progress: HTTP Status code totals, number of bugs found
  • Conversion of bugs found by RESTler to Postman collections
  • RESTler run definitions to Compile, Test and Fuzz in a single run definition
  • Multi-step run definitions, to allow multiple parallel Test/Fuzz runs consume output of single Compile step
  • Pre-populating RESTler fuzzing dictionary based on mutationSeed
  • Avoid triggering BugFound events for bug hashes via ignoreBugHashes configured by user

As a platform, RAFT is designed to host any API fuzzers that are packaged into a docker container. These can be configured and used in the system via configuration files and require no code changes to integrate.

Getting Started

This project is designed to run on Azure. See https://azure.com/free to create a free subscription and receive $200 in credits. You can run this service (and much more!) free for 30 days!

To deploy the service download the CLI release and run python raft.py service deploy. See the documentation for more details and the video tutorials linked below.

Once deployed, read about how to submit a job and use the samples to try out the service and fuzzers!

Documentation

Swagger Documentation

Once the service is created, you can examine the REST interface of the service by browsing to the swagger page at https://<deploymentName>-raft-apiservice.azurewebsites.net/swagger

Interesting in native code fuzzing?

Take a look at our sibling project OneFuzz

Microsoft Open Source Code of Conduct

https://opensource.microsoft.com/codeofconduct

Trademarks

Trademarks This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.

Preferred Languages

We prefer all communications to be in English.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.