Skip to content

sunbeam891/ConFuzzius

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ConFuzzius

A data dependency-aware hybrid fuzzer for Ethereum smart contracts. Our paper can be found here.

Quick Start

A container with the dependencies set up can be found here.

To open the container, install docker and run:

docker pull christoftorres/confuzzius && docker run -i -t christoftorres/confuzzius

To evaluate a simple contract inside the container, run:

python3 fuzzer/main.py -s examples/TokenSale/contracts/TokenSale.sol -c TokenSale --solc v0.4.26 --evm byzantium -t 10

and you are done!

Custom Docker image build

docker build -t confuzzius .
docker run -it confuzzius:latest

Installation Instructions

1. Install Requirements

1.1 Solidity Compiler

sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc

1.2 Z3 Prover

Download the source code of version z3-4.8.5

Install z3 using Python bindings

python scripts/mk_make.py --python
cd build
make
sudo make install

2. Install Fuzzer

cd fuzzer
pip install -r requirements.txt

Running Instructions

Local Fuzzing (Off-Chain)

python3 fuzzer/main.py -s examples/RemiCoin/contracts/RemiCoin.sol -c RemiCoin --solc v0.4.26 --evm byzantium -g 20

Remote Fuzzing (On-Chain)

python3 fuzzer/main.py -a examples/RemiCoin/abi.json -c 0x7dc4f41294697a7903c4027f6ac528c5d14cd7eb -b 5752250 --evm byzantium -g 20 --rpc-host <RPC-HOST> --rpc-port <RPC-PORT>

About

A data dependency-aware hybrid fuzzer for Ethereum smart contracts (EuroS&P 2021).

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Solidity 62.3%
  • Python 37.6%
  • Dockerfile 0.1%