-
Notifications
You must be signed in to change notification settings - Fork 307
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RESTler's body schema parameter fuzzing approach #927
Comments
Ok, I see that the method with "Drop", "Single" etc. is actually used in the PayloadBodyChecker. However, the question still stands how this is handled by RESTler since checkers are applied afterwards. Does RESTler just try to generate valid sequences and then applies checkers like the PayloadBodyChecker? |
Hello @hidingturtle, Correct, RESTler runs a "main algorithm" which has different strategies for what sequences of requests to generate, and orthogonally RESTler applies one or more checkers after each executed sequence (as applicable - not all checkers apply after every sequence). The checkers are designed to run independently from each other and not affect subsequent execution of the main algorithm (which may or may not be successful, depending on the service behavior / how well RESTler understands the service). See Thanks, Marina |
RE: parameter fuzzing specifically - there are 3 different ways parameters may be fuzzed:
These are either We recommend keeping the fuzzing dictionary small. For example, if the goal is to test many invalid values for the entire API (e.g. run through a large list of malformed data for some parameter type), it is recommended to use the more recently added
This checker works as described in this paper. There is a specific recipe for both fuzzing the schema and payloads of json bodies only. These parameters are fuzzed independently, i.e. the payload body checker does not combine body fuzzing with query/path parameter fuzzing - this checker takes a request sequence and fuzzes the body of the last request only.
This is a newer checker that enables fuzzing each parameter independently with a specified set of values one by one. It has a separate dictionary and separate limit for the number of values to try. Thanks, Marina |
Description
Hello,
I wanted to ask about the current approach of how RESTler fuzzes the request bodies or rather its concrete workflow. In this paper it says this:
However, in another paper (with a new approach) it says that Schema Fuzzing Rules like "Drop", "Single" etc. are used. I can see this in the file restler/checkers/body_schema_fuzzer.py. However, it's implemented as a checker and checkers are usually applied later than the requests themselves as far as I understand. In addition, this checker is not a default checker I think.
So I wanted to ask how exactly parameter fuzzing works currently in RESTler since two approaches are listed in papers but it's not clear to me which exactly is used by default. I understand that for values a dictionary is used but it's not clear how the parameters are chosen.
The text was updated successfully, but these errors were encountered: