ipcrafter/
: The fuzzer written in Pythondata/
: Results of the coverage measurementsdocker/
: Dockerfile to run the fuzzer with several instanceseval
: Dockerfiles to evaluate the fuzzer on old versions of the browsers with known vulnerabilities, also contains the results of the evaluationgenerator/
: Module of the fuzzer that generates the fuzzer inputstmuxp/
: tmuxp files to start the fuzzer and the serversvulns/
: The vulnerabilities found by the fuzzer
- chromium patched Chromium with fuzzer bindings in branches
patch/current
,patch/69
, andpatch/99
. - gecko-dev patched Firefox with fuzzer bindings in branche
patch/125
- webidl.js patched WebIDL parser, used to convert
.idl
files to json - fuzzorigin UXSS fuzzer by Kim et al., patched to run in our evaluation environment
- Compile the browsers and place them at
browsers
directory - The fuzzer depends on python3.12, install it if not already installed
- Install the dependencies
python3.12 -m venv .venv && source .venv/bin/activate && pip3.12 install -r requirements.txt
- Convert the
.idl
files to.json
files using thewebidl2json
tool
cd generator/webidl2json && npm install && node parse.js ./idl/chrome ./json/chrome
- Run the fuzzer
source .venv/bin/activate && python3.12 -m ipcrafter -w ./generator/webidl2json/json/chrome -m ./generator/mdn -b chrome -s ./server -o ./chromium.json -t ./browsers/chrome-ipc-fuzzing/src/out/Coverage/chrome
Since the fuzzer also requires 2 web servers, we provide tmuxp files to start the fuzzer and the servers: tmuxp load tmuxp/chrome_fuzzer_session.yml