[논문 리뷰] sFuzz: An Efficient Adaptive Fuzzer for Solidity Smart Contracts
sFuzz는 Ethereum Solidity 스마트 계약을 위한 AFL 기반의 적응형 퍼저로, 시드 기반의 적응 검색과 경량의 다목적 최적화를 결합하여 코드 커버리지와 취약점 발견을 향상시키고, 4,000개가 넘는 계약을 처리하는 동안 최첨단 도구들보다 최대 두 자릿수 배 빠른 속도를 달성합니다.
Smart contracts are Turing-complete programs that execute on the infrastructure of the blockchain, which often manage valuable digital assets. Solidity is one of the most popular programming languages for writing smart contracts on the Ethereum platform. Like traditional programs, smart contracts may contain vulnerabilities. Unlike traditional programs, smart contracts cannot be easily patched once they are deployed. It is thus important that smart contracts are tested thoroughly before deployment. In this work, we present an adaptive fuzzer for smart contracts on the Ethereum platform called sFuzz. Compared to existing Solidity fuzzers, sFuzz combines the strategy in the AFL fuzzer and an efficient lightweight multi-objective adaptive strategy targeting those hard-to-cover branches. sFuzz has been applied to more than 4 thousand smart contracts and the experimental results show that (1) sFuzz is efficient, e.g., two orders of magnitude faster than state-of-the-art tools; (2) sFuzz is effective in achieving high code coverage and discovering vulnerabilities; and (3) the different fuzzing strategies in sFuzz complement each other.
연구 동기 및 목표
- 블록체인에 불변성이 있어 배포 전에 Solidity 스마트 계약에 대한 철저한 테스트를 촉진한다.
- 스마트 계약의 코드 커버리지, 특히 분기 커버리지를 극대화하는 자동 테스트 엔진을 개발한다.
- 가볍고 적응적이며 다목적 시드 선택 전략을 활용하여 커버리기가 어렵던 분기를 극복한다.
- 효율적인 퍼징 기반 테스트를 제공함으로써 기존의 심볼릭 실행 기반 도구를 보완한다.
- 수천 개의 계약에 접근 방식을 적용하고 성능 향상을 평가하여 확장성을 입증한다.
제안 방법
- 핵심 프레임워크로 AFL에서 영감을 받은 피드백 가이드 퍼징을 채택하고, 방금 놓친 분기를 겨냥한 적응적 시드 선택 전략을 통합한다.
- 커버리지되지 않은 분기에의 근접성에 초점을 맞춰 시드 선택을 안내하는 경량 다목적 거리 기반 적합도를 정의한다.
- 테스트 케이스를 비트 벡터로 인코딩된 구성 및 함수 호출 시퀀스로 표현하여 유전 연산자 기반 교차 및 돌연변이를 가능하게 한다.
- 각 just-missed 분기 br_n에 대해 거리 거리(distance(t, br_n))를 계산하여 시드 t가 해당 분기를 커버하는 근접성을 정량화한다; 효율성을 유지하기 위해 just-missed 분기에 대해서만 distance로 단순화한다.
- AFL의 교차 및 돌연변이 전략을 활용하되 계약 특화 변이 및 테스트 케이스의 구문/의미 일관성을 보장하는 타당성 검사를 수행한다.
- 취약점 탐제를 촉진하기 위해 런타임 CFG 구성과 오라클 프레임워크를 구현한다(Gasless Send, Exception Disorder, Timestamp/Block/DelegateCall 취약점, Reentrancy, Integer Overflow/Underflow, Freezing Ether).
실험 결과
연구 질문
- RQ1적응형 퍼징이 기존 퍼저에 비해 Solidity 스마트 계약에서 분기 커버리지와 취약점 발견을 어떻게 향상시킬 수 있는가?
- RQ2에테리움 가상 머신(EVM) 제약 내에서 커버리기가 어려운 분기를 가장 잘 탐색하는 시드 선택 전략은 무엇인가?
- RQ3가볍고 계약 특화된 목표를 통해 AFL 기반 퍼징 접근법을 효율적으로 확장할 수 있는가?
- RQ4퍼징 기반 방법이 심볼릭 실행 기반 도구를 스마트 계약 취약점 발견에 얼마나 보완하는가?
주요 결과
- sFuzz는 평균적으로 ContractFuzzer보다 두 자릿수 배 이상 빠르다.
- sFuzz는 더 높은 코드 커버리지를 달성하고 경쟁 도구보다 더 많은 취약점을 발견한다.
- 적응적 시드 선택 전략이 장시간 퍼징 실행에서 코드 커버리지를 향상시킨다.
- sFuzz의 다양한 퍼징 전략은 실제로 상호 보완적이다.
- sFuzz는 4,000건이 넘는 스마트 계약에 적용되어 확장성과 효과를 입증한다.
- 해당 프레임워크는 공개적으로 제공되며 다수의 기업에서 채택했다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.