[논문 리뷰] Precise Attack Synthesis for Smart Contracts
SmartScopy는 피해자 계약의 취약점을 정확히 악용하는 악성 스마트 계약을 자동으로 합성하는 새로운 시스템이다. 이 시스템은 경로 폭발을 줄이면서도 정밀도를 유지하는 요약 기반 기호 실행을 사용하여 실제 악용을 효율적이고 스케일러블하며 타당하게 탐지할 수 있게 한다. 이를 통해 기존 도구가 다루지 못하는 실시간 이더리움 계약에서 20개의 이전에 발견되지 않은 BatchOverflow 취약점이 드러났다.
Smart contracts are programs running on top of blockchain platforms. They interact with each other through well-defined interfaces to perform financial transactions in a distributed system with no trusted third parties. But these interfaces also provide a favorable setting for attackers, who can exploit security vulnerabilities in smart contracts to achieve financial gain. This paper presents SmartScopy, a system for automatic synthesis of adversarial contracts that identify and exploit vulnerabilities in a victim smart contract. Our tool explores the space of \emph{attack programs} based on the Application Binary Interface (ABI) specification of a victim smart contract in the Ethereum ecosystem. To make the synthesis tractable, we introduce \emph{summary-based symbolic evaluation}, which significantly reduces the number of instructions that our synthesizer needs to evaluate symbolically, without compromising the precision of the vulnerability query. Building on the summary-based symbolic evaluation, SmartScopy further introduces a novel approach for partitioning the synthesis search space for parallel exploration, as well as a lightweight deduction technique that can prune infeasible candidates earlier. We encoded common vulnerabilities of smart contracts in our query language, and evaluated SmartScopy on the entire data set from etherscan with $>$25K smart contracts. Our experiments demonstrate the benefits of summary-based symbolic evaluation and show that SmartScopy outperforms two state-of-the-art smart contracts analyzers, Oyente and Contractfuzz, in terms of running time, precision, and soundness. Furthermore, running on recent popular smart contracts, SmartScopy uncovers 20 vulnerable smart contracts that contain the recent BatchOverflow vulnerability and cannot be precisely detected by existing tools.
연구 동기 및 목표
- 스마트 계약에서 실제로 악용 가능한 취약점을 탐지하는 데 있어 중요한 과제를 해결하기 위해, 이는 변경 불가능하고 치명적인 재정적 손실을 초래할 수 있다.
- 기존 기호 실행 및 정적 분석 도구의 확장성과 정밀도 한계를 극복하기 위해, 과도하게 근사하거나 실제 공격 계약을 생성하지 못하는 문제를 해결한다.
- 스토리지, 가스, Keccak-256 해싱을 포함한 이더리움 가상 머신(EVM) 환경을 충실하게 재현하는 악성 계약의 자동 합성을 가능하게 한다.
- 기존 도구가 정밀도가 떨어지거나 랜덤 입력 생성에 의존함으로써 놓치는 미세한 실제 취약점(예: BatchOverflow)의 탐지를 향상시킨다.
- 기존 정적 분석기와 보완되는 스케일러블하고 정밀하며 효율적인 취약점 악용 프레임워크를 제공한다.
제안 방법
- SmartScopy는 피해자 계약의 각 공개 함수의 부작용을 사전에 계산하고 저장함으로써, 합성 과정 중 기호적으로 탐색해야 할 경로 수를 크게 줄인다.
- 기호 변수 범위에 대한 케이스 분할을 통해 합성 검색 공간을 분할하고, SMT 기반 기호 실행 엔진을 사용해 후보 공격 프로그램을 병렬 탐색한다.
- 가벼운 추론 기법을 사용해 기호 의미론 기반으로 초기 합성 과정에서 비가능한 공격 후보를 조기에 제거함으로써 효율성을 향상시킨다.
- Ethereum 계약의 응용 프로그램 바이너리 인터페이스(ABI)를 활용해 함수 호출과 상호작용을 모델링함으로써 EVM 실행 환경의 정확한 시뮬레이션을 보장한다.
- 보안 분석가가 일반적인 취약점(예: 재진입, BatchOverflow 등)을 형식적 패tern으로 지정할 수 있도록 선언적 쿼리 언어를 지원한다.
- 기본 고수준 언어(예: 솔리디티)에 종속되지 않는 EVM 바이트코드 분석을 위해 Vandal의 중간 표현(IR)과 통합한다.
실험 결과
연구 질문
- RQ1요약 기반 기호 실행은 실제 취약점을 악용하는 정밀하고 확장 가능한 악성 스마트 계약의 합성을 가능하게 하는가?
- RQ2SmartScopy의 접근 방식은 기존 도구와 비교해 재진입 및 BatchOverflow와 같은 알려진 취약점을 탐지할 때 정밀도, 타당성, 성능 면에서 어떻게 비교되는가?
- RQ3SmartScopy는 현재 정적 분석 및 퍼지 도구가 놓친 실세계 스마트 계약에서 이전에 발견되지 않은 취약점을 얼마나 잘 탐지할 수 있는가?
- RQ4경로 폭발 없이도 Keccak-256 해싱 및 스토리지 조작을 포함한 복잡한 상호작용을 효율적으로 처리할 수 있는가?
- RQ5검색 공간 분할과 조기 제거의 조합이 악용 합성의 확장성 향상에 얼마나 효과적인가?
주요 결과
- SmartScopy는 Oyente와 ContractFuzzer 두 개의 최신 기술 도구보다 실행 시간과 정밀도 면에서 뛰어나며, 최적화된 기호 실행과 제거로 인해 뚜렷한 속도 향상을 보였다.
- 시스템은 기존 도구가 정확히 식별하지 못한 최근에 널리 배포된 이더리움 계약에서 20개의 이전에 알려지지 않은 BatchOverflow 취약점 인스턴스를 성공적으로 탐지했다.
- 요약 기반 기호 평가 기법은 탐색해야 할 경로 수를 줄였지만 정밀도를 유지했으며, 정확도를 훼손하지 않은 채로 대규모 계약으로의 확장이 가능하게 했다.
- 케이스 분할과 추상 의미론 기반 제거를 활용해 SmartScopy는 병렬로 여러 공격 후보를 탐색할 수 있었으며, 이로 인해 검색 효율성이 크게 향상되었다.
- SmartScopy의 쿼리 언어는 재진입, 정수 오버플로우, 스토리지 접근 결함 등 다양한 일반적인 스마트 계약 취약점을 표현하는 데 충분히 표현력이 있었다.
- SmartScopy는 기존 정적 분석기인 Securify와 보완 관계를 이룬다: 취약한 계약으로 표시된 사례에 대해 실제 악용 프로그램을 생성함으로써 정적 분석의 실용적 유용성을 높였다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.