AFL++ fuzz harnesses + utils for scientific applications
Installed on the host machine:
bashdockerdocker buildx
You can use Docker's remote contexts feature to delegate fuzzing workloads to other machines.
-
Make a directory to store fuzzer data. This directory will grow large, so place it on an appropriate filesystem.
Set the variable
export SHARED_FUZZ_FS=/path/to/my/directoryNote that when using a remote Docker context, this path is a remote path.
-
Use the convenience script to build and run the container with Docker:
./run_with_docker.sh $APPLICATION_NAME $CONTEXT $CPUS
where
$APPLICATION_NAMEis the name of a target insrc/targets/,$CONTEXTis the name of the Docker context you wish to use (default, if you did not configure a remote context), and$CPUSis the set or range of CPUs to which to limit the container (eg.0,3,4,16-31, etc.). -
Inside the container, use
justto invoke the recipes in thejustfile. Remember to keep CPU, memory, and disk usage under control. You can safely background the watcher interface with ^Z, and resume withfg.For more details, see the appendix of our SC'26 workshop paper.