Harvey: A Greybox Fuzzer for Smart Contracts

05/15/2019
by   Valentin Wüstholz, et al.
0

We present Harvey, an industrial greybox fuzzer for smart contracts, which are programs managing accounts on a blockchain. Greybox fuzzing is a lightweight test-generation approach that effectively detects bugs and security vulnerabilities. However, greybox fuzzers randomly mutate program inputs to exercise new paths; this makes it challenging to cover code that is guarded by narrow checks, which are satisfied by no more than a few input values. Moreover, most real-world smart contracts transition through many different states during their lifetime, e.g., for every bid in an auction. To explore these states and thereby detect deep vulnerabilities, a greybox fuzzer would need to generate sequences of contract transactions, e.g., by creating bids from multiple users, while at the same time keeping the search space and test suite tractable. In this experience paper, we explain how Harvey alleviates both challenges with two key fuzzing techniques and distill the main lessons learned. First, Harvey extends standard greybox fuzzing with a method for predicting new inputs that are more likely to cover new paths or reveal vulnerabilities in smart contracts. Second, it fuzzes transaction sequences in a targeted and demand-driven way. We have evaluated our approach on 27 real-world contracts. Our experiments show that the underlying techniques significantly increase Harvey's effectiveness in achieving high coverage and detecting vulnerabilities, in most cases orders-of-magnitude faster; they also reveal new insights about contract code.

READ FULL TEXT
research
11/02/2022

AntFuzzer: A Grey-Box Fuzzing Framework for EOSIO Smart Contracts

In the past few years, several attacks against the vulnerabilities of EO...
research
07/20/2018

Learning Inputs in Greybox Fuzzing

Greybox fuzzing is a lightweight testing approach that effectively detec...
research
06/29/2023

ItyFuzz: Snapshot-Based Fuzzer for Smart Contract

Smart contracts are critical financial instruments, and their security i...
research
05/17/2019

Targeted Greybox Fuzzing with Static Lookahead Analysis

Automatic test generation typically aims to generate inputs that explore...
research
01/10/2023

Rethinking Smart Contract Fuzzing: Fuzzing With Invocation Ordering and Important Branch Revisiting

Blockchain smart contracts have given rise to a variety of interesting a...
research
11/24/2021

Machine Learning Guided Cross-Contract Fuzzing

Smart contract transactions are increasingly interleaved by cross-contra...
research
11/24/2019

Basis Path Coverage Criteria for Smart Contract Application Testing

The widespread recognition of the smart contracts has established their ...

Please sign up or login with your details

Forgot password? Click here to reset