A fuzzing approach for finding edge inputs by first mutating grammars and then using grammar-based fuzzing on the mutated grammars.
Gmutator is a tool that performs mutations on an input grammar and leverages the Grammarinator fuzzer to produce inputs conforming to the mutated grammars. Gmutator can be leveraged to find inputs that do not conform to the original grammar but are (wrongly) accepted by an SUT. Additionally, the inputs that Gmutator yields may achieve higher SUT code coverage compared with standard grammar-based fuzzing.
We are currently evaluation Gmutator over four different input formats—JSON, XML, URL and Lua—and 12 SUTs (3 per input format).
Gmutator is available here, where you will find all the instructions necessary to run the tool and replicate the experiments.
The artifact is available as a Docker image in Zenodo.