bitcoinfuzz icon indicating copy to clipboard operation
bitcoinfuzz copied to clipboard

Differential Fuzzing of Bitcoin implementations and libraries

bitcoinfuzz

Differential Fuzzing of Bitcoin implementations and libraries. It currently supports Bitcoin Core, btcd, rust-bitcoin and rust-miniscript. Note this project is a WIP and might be not stable.

Installation

First clone the repo and open it using:

git clone --recursive https://github.com/brunoerg/bitcoinfuzz && cd bitcoinfuzz

Next update the submodules:

git submodule update

Now, you can build the project by running:

make

It is also possible to target a specific commit or tag of the dependencies during compilation:

make BTCD=v0.24.0 RUST_BITCOIN=aedb097

Once the compilation is complete bitcoinfuzz can be executed by:

FUZZ=target_name ./bitcoinfuzz

Bugs/inconsistences/mismatches found by Bitcoinfuzz

  • sipa/miniscript: https://github.com/sipa/miniscript/issues/140
  • rust-miniscript: https://github.com/rust-bitcoin/rust-miniscript/issues/633
  • rust-bitcoin: https://github.com/rust-bitcoin/rust-bitcoin/issues/2681
  • btcd: https://github.com/btcsuite/btcd/issues/2195 (API mismatch with Bitcoin Core)
  • Bitcoin Core: https://github.com/brunoerg/bitcoinfuzz/issues/34
  • rust-miniscript: https://github.com/rust-bitcoin/rust-miniscript/issues/696 (not found but reproductive)
  • rust-miniscript: https://github.com/brunoerg/bitcoinfuzz/issues/39
  • rust-bitcoin: https://github.com/rust-bitcoin/rust-bitcoin/issues/2891
  • rust-bitcoin: https://github.com/rust-bitcoin/rust-bitcoin/issues/2879
  • btcd: https://github.com/btcsuite/btcd/issues/2199