setup
We recommend using docker to package your fuzzer and any dependencies required.
We have provided an example Docker container and bash script that will run said container over all the binaries. You can download this example fuzzer setup here
Expectations
All fuzzers must be submitted with a DockerFile in the highest level directory, that
- builds and compiles your fuzzer if applicable
- installs all required dependencies if applicable
- runs your fuzzer
The fuzzers will be automarked against an unknown number of challenges. It is important you setup your fuzzer to run as per the spec below.
Running the fuzzer
We will run your fuzzer with the run_fuzzer.sh
script in the example fuzzer. You cannot modify this file.
This script will
- Run docker build to build your submitted Dockerfile
- Run the docker container with
- All binaries mounted at
/binaries
- i.e.:
/binaries/plaintext1
,/binaries/plaintext2
- i.e.:
- All example inputs mounted at
/example_inputs/
- i.e.:
/binaries/plaintext1.txt
,/binaries/plaintext2.txt
- i.e.:
- All binaries mounted at
- Create a folder in the Docker Container called
/fuzzer_output
which your fuzzer must write text files to which will cause a given program to crash.- The files must be called
bad_{progname}.txt
.- i.e. For /binaries/xml2 your fuzzer should create
/fuzzer_output/bad_xml2.txt
.
- i.e. For /binaries/xml2 your fuzzer should create
- The files must be called
Note: Your fuzzer will have 60 seconds per challenge (on average). If there are 10 binaries, you fuzzer will be stopped after 600 seconds (10 minutes)