Grizzly is a general purpose browser fuzzing harness made up of multiple modules. The intention is to create a platform that can be extended by the creation of adapters and target platforms to support different fuzzers that target browsers. An adapter is used to wrap an existing fuzzer to allow it to be run via Grizzly. Adapters take the content output by fuzzers and transform it (if needed) into a format that can be served to and processed by the browser. Cross platform compatibility should be maintained for Windows, Linux and OSX. However not all features may be available.
For additional information please check out the wiki.
The following modules are required:
The FuzzManager module is required to support reporting results via FM:
FFPuppet must be installed first. Steps can be found here
pip install --user -e <grizzly_repository>
Fuzzing builds can be found in taskcluster or the fuzzfetch (recommended) tool can be used to download a build.
prefs.js files can be found here in the fuzzdata repository along with other fuzzing input and configuration files.
NOTE: prefs.js files must be used when running with Mozilla browsers.
To verify everything is installed and working correctly run the no-op adapter. If everything is working correctly the browser should launch and open the harness in the first tab and a second tab should open and close rapidly.
python -m grizzly /path/to/browser/firefox no-op -p prefs/prefs-default-e10s.js
Other target platforms can be defined as setuptools entry-points,
using the name "grizzly_targets". Targets must implement grizzly.target.Target
.