[논문 리뷰] Running on Fumes--Preventing Out-of-Gas Vulnerabilities in Ethereum Smart Contracts using Static Resource Analysis
이 논문은 이더리움 스마트 계약 함수의 가스 소비에 대한 정확한 상한선을 정적 분석을 통해 자동으로 추론하는 Gastap이라는 정적 분석 플랫폼을 제시한다. Solidity 또는 EVM 바이트코드를 분석하여, 제어 흐름 분석, 역디컴파일, 크기 관계 추론, 식 해결 기법을 사용해 신뢰성 있고 확장성 있으며 정확한 가스 상한선을 제공하며, 가스 부족 예외를 방지한다. 분석 시간의 68.36%는 가스 식 해결에 소요되었고, 29,061개의 계약 중 100%가 343시간 이내에 분석되었다.
Gas is a measurement unit of the computational effort that it will take to execute every single operation that takes part in the Ethereum blockchain platform. Each instruction executed by the Ethereum Virtual Machine (EVM) has an associated gas consumption specified by Ethereum. If a transaction exceeds the amount of gas allotted by the user (known as gas limit), an out-of-gas exception is raised. There is a wide family of contract vulnerabilities due to out-of-gas behaviours. We report on the design and implementation of GASTAP, a Gas-Aware Smart contracT Analysis Platform, which takes as input a smart contract (either in EVM, disassembled EVM, or in Solidity source code) and automatically infers sound gas upper bounds for all its public functions. Our bounds ensure that if the gas limit paid by the user is higher than our inferred gas bounds, the contract is free of out-of-gas vulnerabilities.
연구 동기 및 목표
- 특히 입력 크기와 상태에 대한 복잡한 종속성에 대해 신뢰성 있고 자동화된 도구가 부족한 이더리움 스마트 계약의 가스 소비 분석 문제를 해결하기 위해.
- 가스 한도가 유추된 상한선을 초과할 경우 계약이 가스 부족 예외를 일으키지 않도록 보장하기 위해 악성 가스 사용의 정확한 정적 추정을 가능하게 하기 위해.
- 기존 도구가 상수 상한선만 제공하거나 ∞를 반환하는 한계를 극복하기 위해 입력 매개변수, 계약 상태, 블록체인 데이터에 대한 동적 가스 종속성을 모델링하기 위해.
- EVM 바이트코드와 고수준 Solidity 코드 모두를 지원하며 형식적 신뢰성 보장을 갖춘 확장성 있고 종단 간 시스템을 개발하기 위해.
- 실제 스마트 계약을 대상으로 대규모에서 정적 자원 분석의 가능성과 효과성을 입증하기 위해.
제안 방법
- 확장된 Oyente 버전을 사용하여 EVM 또는 Solidity 코드에서 제어 흐름 그래프(CFGs)를 구축한다.
- 분석 정밀도를 향상시키기 위해 고수준의 중간 표현(EthIR)으로 역디컴파일을 수행한다.
- Saco에서 유도된 개조된 크기 분석기로 입력 매개변수, 계약 상태, 블록체인 데이터 간의 크기 관계를 추론한다.
- 입력 크기와 상태 변수에 따른 가스 소비 종속성을 모델링하는 기호적 가스 식을 생성한다.
- Pubs 솔버를 사용하여 유도된 식 시스템을 해결하여 가스 사용에 대한 폐쇄형 상한선을 도출한다.
- 루프 추출 최적화를 적용하고 커버 포인트 오류 탐지 기법을 통해 상호 재귀를 처리하지만, 이는 여전히 한계로 남아 있다.
실험 결과
연구 질문
- RQ1입력 크기, 상태 크기, 블록체인 데이터에 따라 변하는 가스 소비에 대해 정적 분석 도구가 정확한 최악의 경우 가스 상한선을 추론할 수 있는가?
- RQ2패턴 기반 또는 심볼릭 실행 방법과 비교해 정적 자원 분석 접근법이 가스 부족 예외 탐지에 얼마나 효과적인가?
- RQ3대규모 실세계 스마트 계약을 정적 가스 분석으로 분석할 경우의 확장성과 성능 오버헤드는 어떠한가?
- RQ4기존 컴파일러와 도구들이 비체계적인 컴파일 전략으로 인해 정확한 가스 상한선을 제공하지 못하는 정도는 어느 정도인가?
- RQ5EVM 바이트코드와 고수준 Solidity 코드를 모두 지원하는 형식적이고 신뢰성 있으며 완전한 정적 분석 시스템을 EVM 가스 소비에 대해 구축할 수 있는가?
주요 결과
- Gastap은 실세계 이더리움 스마트 계약 29,061개를 성공적으로 분석하였으며, 총 분석 시간은 1,233,155.92초(약 342.54시간)였다.
- 가장 시간이 오래 소요된 단계는 가스 식 해결이었으며, 총 시간의 68.36%를 차지하여 식 해결이 성능 저하의 핵심 원인이 됨을 시사한다.
- 식 생성 단계는 총 시간의 21.68%를 차지하였으며, 옵코드 및 메모리 가스 상한선은 별도로 생성되었다.
- 도구는 거의 10%의 분석된 함수들이 입력 크기 또는 계약 상태에 따라 가스 소모에 영향을 받는다는 점을 밝혀내어 널리 퍼져 있지만 여전히 간과된 취약성 표면을 드러냈다.
- 시스템은 신뢰성 있다: 사용자가 Gastap이 유추한 상한선을 초과하는 가스 한도를 제공할 경우, 계약은 가스 부족 예외를 발생시키지 않을 것이다.
- 도구의 구현은 기존 오픈소스 도구(Oyente, EthIR, Saco, Pubs)를 활용하고 확장하여 복잡한 정적 분석에 모듈러 구성 요소를 통합하는 것이 가능함을 입증했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.