Detecting State Inconsistency Bugs in DApps via On-Chain Transaction Replay and Fuzzing
Decentralized applications (DApps) consist of multiple smart contracts running on Blockchain. With the increasing popularity of the DApp ecosystem, vulnerabilities in DApps could bring significant impacts such as financial losses. Identifying vulnerabilities in DApps is by no means trivial, as modern DApps consist of complex interactions across multiple contracts. Previous research suffers from either high false positives or false negatives, due to the lack of precise contextual information which is mandatory for confirming smart contract vulnerabilities when analyzing smart contracts.
In this paper, we present \textit{IcyChecker}, a new fuzzing-based framework to effectively identify State inconsistency (SI) Bugs – a specific type of bugs that can cause vulnerabilities such as re-entrancy, front-running with complex patterns. Different from prior works, \textit{IcyChecker} utilizes a set of accurate contextual information for contract fuzzing by replaying the on-chain historical transactions. Besides, instead of designing specific testing oracles which are required by other fuzzing approaches, \textit{IcyChecker} implements novel mechanisms to mutate a set of fuzzing transaction sequences, and further identify SI bugs by observing their state differences. Evaluation of \textit{IcyChecker} over the top 100 popular DApps showed it effectively identifies a total number of 277 SI bugs, with a precision of 87%. By comparing \textit{IcyChecker} with other state-of-the-art tools (i.e., Smartian, Confuzzius, and Sailfish), we show \textit{IcyChecker} not only identifies more SI bugs but also with much lower false positives, thanks to its integration of accurate on-chain data and unique fuzzing strategies. Our research sheds light on new ways of detecting smart contract vulnerabilities in DApps.
Tue 18 JulDisplayed time zone: Pacific Time (US & Canada) change
10:30 - 12:00 | ISSTA 2: Fuzzing 1Technical Papers at Smith Classroom (Gates G10) Chair(s): Jonathan Bell Northeastern University | ||
10:30 15mTalk | Icicle: A Re-designed Emulator for Grey-Box Firmware Fuzzing Technical Papers Michael Chesser University of Adelaide, Surya Nepal CSIRO’s Data61, Damith C. Ranasinghe University of Adelaide DOI | ||
10:45 15mTalk | Green Fuzzing: A Saturation-Based Stopping Criterion using Vulnerability Prediction Technical Papers Stephan Lipp TU Munich, Daniel Elsner TU Munich, Severin Kacianka TU Munich, Alexander Pretschner TU Munich, Marcel Böhme MPI-SP; Monash University, Sebastian Banescu TU Munich DOI | ||
11:00 15mTalk | ItyFuzz: Snapshot-Based Fuzzer for Smart Contract Technical Papers Chaofan Shou University of California at Santa Barbara, Shangyin Tan University of California at Berkeley, Koushik Sen University of California at Berkeley DOI | ||
11:15 15mTalk | Large Language Models Are Zero-Shot Fuzzers: Fuzzing Deep-Learning Libraries via Large Language Models Technical Papers Yinlin Deng University of Illinois at Urbana-Champaign, Chunqiu Steven Xia University of Illinois at Urbana-Champaign, Haoran Peng University of Science and Technology of China, Chenyuan Yang University of Illinois at Urbana-Champaign, Lingming Zhang University of Illinois at Urbana-Champaign DOI | ||
11:30 15mTalk | Detecting State Inconsistency Bugs in DApps via On-Chain Transaction Replay and Fuzzing Technical Papers Mingxi Ye Sun Yat-sen University, Yuhong Nan Sun Yat-sen University, Zibin Zheng Sun Yat-sen University, Dongpeng Wu Sun Yat-sen University, Huizhong Li WeBank DOI | ||
11:45 15mTalk | Green Fuzzer Benchmarking Technical Papers DOI |