Skip to content

evm-fuzzer is a differential fuzzer for the Ethereum virtual machine build with LibAFL

License

Notifications You must be signed in to change notification settings

ogechno/evm-fuzzer

Repository files navigation

evm-fuzzer

Getting started

  1. Clone the evm-fuzzer repository and download the submodules
git clone https://github.com/ogechno/evm-fuzzer
cd evm-fuzzer
git submodule update --recursive
  1. Build the docker image using
./tools/run_docker.sh
  1. Build evm-fuzzer inside the running docker image
./tools/build_and_run.sh

Useful commands

Add new testcase to corpus:

./tools/convert.sh <bytecode in hex> ../fuzzer/coprus/<filename> 

Remove duplicates from the corpus:

cd fuzzer/corpus
find . -name '*-[0-9]*' -delete

Make vim not append \n at the end of the file do:

:set noendofline and :set nofixendofline 

TODO

  • Update evmone and geth to latest version
  • Don't create new vm for every testcase
  • don't add dup testcases to corpus
  • split up harness
  • add nethermind and besu support
  • Setup LibAFL with new Components
    • Define custom objective
    • DiffExecutor, DiffObserver
  • multi transaction
  • go-fuzz-build support
  • Geth harness clean up with Config and NewEnv (runtime)
  • tmin corpus minimizer
  • Grammar Mutator

About

evm-fuzzer is a differential fuzzer for the Ethereum virtual machine build with LibAFL

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published