[논문 리뷰] Towards Smart Hybrid Fuzzing for Smart Contracts.
CONFUZZIUS는 진화적 패러다임과 제약 조건 해결을 융합한 하이브리드 퍼저로, 스마트 컨트랙트의 코드 커버리지 향상과 더 깊이 있는 버그 탐지에 기여한다. 데이터 의존성 분석을 활용해 상태 기반 트랜잭션 시퀀스를 생성함으로써, 최신의 심벌릭 실행 도구와 퍼저를 능가하는 보안 취약점 탐지 능력을 확보한다.
Smart contracts are Turing-complete programs that are executed across a blockchain network. Unlike traditional programs, once deployed they cannot be modified. As smart contracts become more popular and carry more value, they become more of an interesting target for attackers. In recent years, smart contracts suffered major exploits, costing millions of dollars, due to programming errors. As a result, a variety of tools for detecting bugs has been proposed. However, majority of these tools often yield many false positives due to over-approximation or poor code coverage due to complex path constraints. Fuzzing or fuzz testing is a popular and effective software testing technique. However, traditional fuzzers tend to be more effective towards finding shallow bugs and less effective in finding bugs that lie deeper in the execution. In this work, we present CONFUZZIUS, a hybrid fuzzer that combines evolutionary fuzzing with constraint solving in order to execute more code and find more bugs in smart contracts. Evolutionary fuzzing is used to exercise shallow parts of a smart contract, while constraint solving is used to generate inputs which satisfy complex conditions that prevent the evolutionary fuzzing from exploring deeper paths. Moreover, we use data dependency analysis to efficiently generate sequences of transactions, that create specific contract states in which bugs may be hidden. We evaluate the effectiveness of our fuzzing strategy, by comparing CONFUZZIUS with state-of-the-art symbolic execution tools and fuzzers. Our evaluation shows that our hybrid fuzzing approach produces significantly better results than state-of-the-art symbolic execution tools and fuzzers.
연구 동기 및 목표
- 기존 스마트 컨트랙트 테스팅 도구의 한계를 해결하기 위해, 과도한 근사나 복잡한 경로 조건으로 인해 높은 가짜 양성률과 낮은 코드 커버리지 문제를 야기하는 점을 개선한다.
- 기존의 퍼저가 자주 간과하는 깊이 있고 접근하기 어려운 버그를 개선된 탐지 능력으로 식별하고자 한다.
- 진화적 퍼징과 제약 조건 해결을 융합하여 복잡한 실행 경로를 탐색함으로써 코드 커버리지를 향상시키고자 한다.
- 특정 컨트랙트 상태에 도달할 수 있는 의미 있는 트랜잭션 시퀀스를 생성하여, 잠재적으로 숨겨진 취약점이 존재할 수 있는 상태에 도달하고자 한다.
- 최신의 심벌릭 실행 도구와 퍼저 대비 하이브리드 접근 방식의 효과성을 평가하고자 한다.
제안 방법
- 진화적 퍼징을 활용해 변형 기반 입력 생성을 통해 스마트 컨트랙트 내 얕고 접근 가능한 경로를 탐색한다.
- 복잡한 경로 조건을 만족하는 입력을 생성하기 위해 제약 조건 해결 기법을 적용함으로써, 더 깊고 제약 조건이 강한 실행 경로를 탐색할 수 있도록 한다.
- 특정 컨트랙트 상태로 이르는 트랜잭션 시퀀스를 식별하기 위해 데이터 의존성 분석을 적용함으로써, 숨겨진 버그를 유발할 가능성을 높인다.
- 진화적 퍼징과 제약 조건 해결을 조율된 방식으로 통합하여, 커버리지와 경로 복잡도 기반으로 경로 우선순위를 정한다.
- 이더리움 기반 스마트 컨트랙트와의 호환성을 확보하고, 경로 조건 분석을 위한 심벌릭 실행을 지원하도록 프레임워크를 설계한다.
- 실행 추적과 상태 전이를 모니터링하여 입력이 취약점 트리거를 유발하는지 평가한다.
실험 결과
연구 질문
- RQ1진화적 퍼징과 제약 조건 해결을 융합한 하이브리드 퍼저가 스마트 컨트랙트 테스팅에서 단독 접근 방식보다 더 높은 코드 커버리지를 달성할 수 있는가?
- RQ2데이터 의존성 분석이 특정 취약한 컨트랙트 상태에 도달하는 의미 있는 트랜잭션 시퀀스 생성에 얼마나 효과적인가?
- RQ3심벌릭 실행 도구와 비교했을 때 하이브리드 접근 방식이 가짜 양성률을 줄이고 깊이 있는 복잡한 버그 탐지 능력을 얼마나 향상시키는가?
- RQ4CONFUZZIUS는 최신의 퍼저와 심벌릭 실행 도구 대비 취약점 탐지율과 코드 커버리지 측면에서 어떻게 비교되는가?
- RQ5제약 조건 해결의 통합이 기존 진화적 퍼저가 접근할 수 없는 경로 탐색 능력을 향상시키는가?
주요 결과
- CONFUZZIUS는 코드 커버리지와 버그 탐지 측면에서 최신의 심벌릭 실행 도구를 뛰어넘는 성능을 보였다.
- 하이브리드 접근 방식은 단독으로 작동하는 퍼저와 심벌릭 실행 도구보다 더 많은 버그를 탐지했으며, 특히 깊이 있는 중첩 구조나 조건부 가드가 있는 경로에서 뚜렷한 우수성을 보였다.
- 제약 조건 해결을 통해 기존의 변형 기반 퍼징만으로는 도달할 수 없었던 복잡한 경로를 탐색할 수 있었다.
- 데이터 의존성 분석은 특정 컨트랙트 상태에 도달하는 트랜잭션 시퀀스를 효과적으로 생성하여 잠재적 버그를 유발할 확률을 높였다.
- 진화적 퍼징과 제약 조건 해결의 융합은 탐색 가능한 고유 경로 수와 탐지된 버그 수 모두에 명확한 개선 효과를 보였다.
- 평가 결과, 기존 도구들과 비교해 실제 스마트 컨트랙트 벤치마크에서 CONFUZZIUS가 뛰어난 성능을 발휘함을 확인했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.