Skip to content

Getting Started

Tyson Smith edited this page Nov 28, 2019 · 15 revisions

Prerequisites

Git, Python and Pip are required.

Install & Setup

Setup working directories

CODE=~/code/
mkdir $CODE
mkdir $CODE/browsers
cd $CODE

Manual FFPuppet install - optional

FFPuppet is used for Firefox support. This is optional because FFPuppet is automatically installed by pip. If you do not plan to modify FFPuppet this step can be skipped.

git clone https://github.com/MozillaSecurity/ffpuppet.git
python -m pip install -e ffpuppet --user

Reducer requirements - optional

Lithium is required by the test case reducer. If you do not plan to use the reducer functionality this step can be skipped.

git clone https://github.com/MozillaSecurity/lithium.git
python -m pip install -e lithium --user

Download and setup Grizzly

git clone https://github.com/MozillaSecurity/grizzly.git
python -m pip install -e grizzly --user

Get a Firefox build

Download an ASan fuzzing build via fuzzfetch - recommended.

git clone https://github.com/MozillaSecurity/fuzzfetch.git
python -m pip install -e fuzzfetch --user
python -m fuzzfetch -a -n firefox --fuzzing -o $CODE/browsers/

- or -
Download a build from Firefox-CI and unpack to $CODE/browsers/firefox.
- or -
Building Firefox is also an option.

prefs.js

Download a prefs.js file from fuzzdata

wget -O $CODE/browsers/prefs.js https://raw.githubusercontent.com/MozillaSecurity/fuzzdata/master/settings/firefox/prefs-default-e10s.js

Running 'no-op' example adapter

cd grizzly
python -m grizzly $CODE/browsers/firefox/firefox no-op -p $CODE/browsers/prefs.js

If everything is working correctly Firefox should launch with a single tab (the fuzzing harness) and a second tab should open and close rapidly. The 'no-op' adapter is meant to be an example and does not really do much. Hit Ctrl+C to stop Grizzly at any time.

The next step is creating an adapter.

Clone this wiki locally