Skip to main content
QUICK REVIEW

[논문 리뷰] Analyzing Smart Contracts: From EVM to a sound Control-Flow Graph

Elvira Albert, Jesús Correas|arXiv (Cornell University)|2020. 04. 29.
Blockchain Technology Applications and Security참고 문헌 4인용 수 7
한 줄 요약

이 논문은 이더리움 가상 머신(EVM) 스마트 계약의 정적 분석을 통해 스택에 민감한 제어 흐름 그래프(CFG)를 구성하는 신뢰할 수 있는 방법을 제시한다. 스택에 저장된 점프 타겟(즉, 명령어에 직접 기록되지 않은 점프 대상)으로 인해 정확한 제어 흐름 모델링이 어려운 점프 지시어의 특성에 대응하기 위해, 각기 다른 스택 상태에 따라 블록을 복제함으로써 정적 분석을 위한 완전하고 정확한 경로 표현을 보장한다.

ABSTRACT

The EVM language is a simple stack-based language with words of 256 bits, with one significant difference between the EVM and other virtual machine languages (like Java Bytecode or CLI for .Net programs): the use of the stack for saving the jump addresses instead of having it explicit in the code of the jumping instructions. Static analyzers need the complete control flow graph (CFG) of the EVM program in order to be able to represent all its execution paths. This report addresses the problem of obtaining a precise and complete stack-sensitive CFG by means of a static analysis, cloning the blocks that might be executed using different states of the execution stack. The soundness of the analysis presented is proved.

연구 동기 및 목표

  • 스마트 계약 분석은 모든 가능한 실행 경로를 모델링하기 위해 완전하고 정확한 제어 흐름 그래프(CFG)가 필요하다.
  • EVM은 점프 주소를 명령어에 직접 기록하는 대신 스택에 저장하기 때문에, 정적 분석을 복잡하게 만들고, 완전하지 않거나 타당하지 않은 CFG를 초래할 수 있다.
  • 기존의 접근 방식들은 스택에 민감한 제어 흐름을 고려하지 못해 실행 경로를 놓치거나 과도하게 근사하는 위험이 있다.
  • 이 논문은 점프 지점에서의 스택 상태에 기반하여 모든 가능한 실행 경로를 포괄하는 신뢰할 수 있고 스택에 민감한 CFG를 구성함으로써 이러한 격차를 메운다.
  • 핵심 목표는 제어 흐름을 스택 구성 상태의 함수로 모델링하여 EVM 프로그램의 정확한 정적 분석을 위한 형식적 기반을 제공하는 것이다.

제안 방법

  • 이 방법은 각 블록을 도달할 수 있는 서로 다른 스택 상태 수만큼 복제하여 스택에 민감한 제어 흐름 그래프(CFG)를 구성한다.
  • 프로그램 카운터, 스택 깊이, 스택 내용을 추적할 수 있는 EVM 바이트코드에 대한 형식적 의미 체계를 도입하여 실행 중 정확한 상태 추적을 가능하게 한다.
  • 각 프로그램 지점에서 가능한 모든 스택 구성 상태를 모델링하기 위해 스택 상태의 기호적 표현을 사용한다.
  • 점프 발생 시점의 스택 상태에 따라 블록이 복제되며, 각 복제본은 고유한 스택 구성에 대응하는 별개의 실행 경로를 나타낸다.
  • 이 방법은 두 가지 유형의 간선을 정의한다: 순차적 실행을 위한 'next' 간선과 제어 전달을 위한 'jump' 간선으로, 둘 다 스택 상태에 따라 인덱싱되어 정밀도를 유지한다.
  • 실행 트레이스 길이에 대한 귀납법을 통해 타당성을 공식적으로 증명하였으며, 모든 유효한 실행 트레이스가 CFG 내의 방향성 경로에 대응됨을 보여주었다.

실험 결과

연구 질문

  • RQ1스택 기반 점프 지시어가 존재함에도 불구하고 완전하고 정확한 EVM 바이트코드를 위한 제어 흐름 그래프(CFG)는 어떻게 구성할 수 있는가?
  • RQ2EVM 프로그램에서 스택에 민감한 실행 상태를 모델링하기 위해 필요한 형식적 의미 체계는 무엇인가?
  • RQ3블록 복제를 통해 점프 지점에서의 서로 다른 스택 상태에 기인한 다수의 실행 경로는 어떻게 표현할 수 있는가?
  • RQ4결과로 도출된 CFG가 모든 가능한 실행 트레이스에 대해 타당하기 위한 조건은 무엇인가?
  • RQ5이 CFG 기반 정적 분석은 과도하게 근사하지 않고 모든 가능한 실행 경로를 탐지할 수 있는가?

주요 결과

  • 제안된 방법은 점프 지점에서의 서로 다른 스택 상태에 따라 블록을 복제함으로써 EVM 프로그램의 모든 가능한 실행 경로를 포괄하는 신뢰할 수 있고 스택에 민감한 CFG를 구성한다.
  • 분석은 EVM의 스택 기반 점프 메커니즘을 정확히 모델링하며, 점프 목적지가 명령어에 직접 기록되지 않고 스택에 저장된다는 점을 해결함으로써 이전 접근 방식에서 발생하는 주요 정밀도 손실 원인을 제거한다.
  • 타당성에 대한 형식적 증명은 모든 유효한 실행 트레이스가 CFG 내의 방향성 경로에 대응됨을 보여주며, 어떤 실행 경로도 놓치지 않음을 보장한다.
  • 이 방법은 무조건적 점프(JUMP)와 조건부 점프(JUMPI)를 모두 처리하며, 스택 상태와 점프 대상에 따라 별도의 간선 생성 규칙를 적용한다.
  • 스택 크기를 상수로 제한하고 점프 주소를 상수로 간주함으로써, 재귀나 고계 함수 패tern을 포함한 EVM 프로그램의 정확한 정적 분석이 가능해진다.
  • 상수 스택 크기와 상수 점프 주소의 조건 하에서, 결과 CFG는 형식적으로 타당하고 완전하며, 공식적 검증 및 취약점 탐지에 적합하다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.