Security Analysis of EOSIO Smart Contracts
arXiv:2003.06568
Abstract
The EOSIO blockchain, one of the representative Delegated Proof-of-Stake (DPoS) blockchain platforms, has grown rapidly recently. Meanwhile, a number of vulnerabilities and high-profile attacks against top EOSIO DApps and their smart contracts have also been discovered and observed in the wild, resulting in serious financial damages. Most of EOSIO's smart contracts are not open-sourced and they are typically compiled to WebAssembly (Wasm) bytecode, thus making it challenging to analyze and detect the presence of possible vulnerabilities. In this paper, we propose EOSAFE, the first static analysis framework that can be used to automatically detect vulnerabilities in EOSIO smart contracts at the bytecode level. Our framework includes a practical symbolic execution engine for Wasm, a customized library emulator for EOSIO smart contracts, and four heuristics-driven detectors to identify the presence of four most popular vulnerabilities in EOSIO smart contracts. Experiment results suggest that EOSAFE achieves promising results in detecting vulnerabilities, with an F1-measure of 98%. We have applied EOSAFE to all active 53,666 smart contracts in the ecosystem (as of November 15, 2019). Our results show that over 25% of the smart contracts are vulnerable. We further analyze possible exploitation attempts against these vulnerable smart contracts and identify 48 in-the-wild attacks (25 of them have been confirmed by DApp developers), resulting in financial loss of at least 1.7 million USD.
17 pages, 4 figures; typos corrected, section II and III revised
References in corpus (7)
- ContractFuzzer: Fuzzing Smart Contracts for Vulnerability Detection
- Characterizing Code Clones in the Ethereum Smart Contract Ecosystem
- Characterizing EOSIO Blockchain
- TaintAssembly: Taint-Based Information Flow Control Tracking for WebAssembly
- Taint Tracking for WebAssembly
- A Security Case Study for Blockchain Games
- Memory Safety Preservation for WebAssembly
Cited by in corpus (6)
- Exploring EOSIO via Graph Characterization
- A Survey of Smart Contract Formal Specification and Verification
- WANA: Symbolic Execution of Wasm Bytecode for Cross-Platform Smart Contract Vulnerability Detection
- DEPOSafe: Demystifying the Fake Deposit Vulnerability in Ethereum Smart Contracts
- EOSFuzzer: Fuzzing EOSIO Smart Contracts for Vulnerability Detection
- Fuzzm: Finding Memory Bugs through Binary-Only Instrumentation and Fuzzing of WebAssembly