openapi-fuzzer
Our great sponsors
bachelor-thesis | openapi-fuzzer | |
---|---|---|
2 | 4 | |
1 | 513 | |
- | - | |
0.0 | 6.8 | |
over 2 years ago | 3 months ago | |
TeX | Rust | |
- | GNU Affero General Public License v3.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
bachelor-thesis
-
Show HN: OpenAPI fuzzer – fuzzing APIs based on OpenAPI specification
Yes, we looked into it. There is a chapter in my thesis[0] about RESTler and comparison with OpenAPI fuzzer. The main difference between those two fuzzer is that RESTler is a statefull fuzzer and OpenAPI fuzzer is a stateless fuzzer.
Thanks to being statefull, RESTler is able to analyze a dependencies between a requests. For example, it will not call and endpoint to get user details before calling endpoint to create a user. This should make it more efficient because it does not waste requests to calling endpoint that will return 404.
On the other hand, fuzzing is all about trying to supply unexpected input to the software. Therefore, OpenAPI fuzzer makes those requests, since it may cause some undefined behavior when we try to get user before creating one.
So while RESTler tries to check some invariant (for example if deleted user cannot be accessed) OpenAPI fuzzer tries to cause the service to crash by invalid input. RESTler is usually not able to crash the service by providing invalid input, because it needs to keep the fuzzing dictionary small (bigger dictionary would make the dependency finding slow). So I think, they complements each other nicely.
Another difference it in reporting error. RESTler considers only status code 500 as an error. However, OpenAPI specification states all possible status codes that we can get from an endpoint. OpenAPI fuzzer utilizes this and reports every time it receives and unexpected status code.
0: https://github.com/matusf/bachelor-thesis/releases/download/...
openapi-fuzzer
-
Hey Rustaceans! Got a question? Ask here! (32/2022)!
Hi, I'm working on a fuzzer, that fuzzes APIs based on OpenAPI specification. I'd like to implement shrinking. It means that when an interesting input (for the API) is found, I'd like to create the smallest possible input that still causes the same behaviour of the API. I'd like to implement a payload generation via proptest, because it already has the shrinking ability. I'm having issues implementing the JSON object as a proptest strategy. Here is what I tried so far. I explained it in a detail in stackoverflow question but it did not reach many people. Thanks for your help!
-
Show HN: OpenAPI fuzzer – fuzzing APIs based on OpenAPI specification
Thanks for the report. However, without more information I'm not able to help you. What is your setup? How did you run it? could you please share the specification file? Also, let's probably move this discussion to GitHub issues: https://github.com/matusf/openapi-fuzzer/issues
What are some alternatives?
restler-fuzzer - RESTler is the first stateful REST API fuzzing tool for automatically testing cloud services through their REST APIs and finding security and reliability bugs in these services.
cats - CATS is a REST API Fuzzer and negative testing tool for OpenAPI endpoints. CATS automatically generates, runs and reports tests with minimum configuration and no coding effort. Tests are self-healing and do not require maintenance.
fuzzcheck-rs - Modular, structure-aware, and feedback-driven fuzzing engine for Rust functions
MeiliSearch - A lightning-fast search API that fits effortlessly into your apps, websites, and workflow
openapiv3 - Rust Open API v3 Structs and Enums for easy deserialization with serde
benchling-rs - benchling client, generated from the OpenAPI spec
openapi-yup-generator - CLI tool for generating yup definitions from openapi3.yaml
bananafzz - Banana Fuzzer ~ modulable, loop based, poc gen, code cov, platform agnostic, race oriented