Skip to main content
QUICK REVIEW

[논문 리뷰] Executable Operational Semantics of Solidity

Jiao Jiao, Shuanglong Kan|arXiv (Cornell University)|2018. 04. 04.
Blockchain Technology Applications and Security참고 문헌 2인용 수 10
한 줄 요약

이 논문은 K 프레임워크를 사용하여 스마트 계약의 자동 검증을 가능하게 하는, 솔리디티 프로그래밍 언어를 위한 최초의 실행 가능한 구조적 운영 의미론(SOS)을 제시한다. 스토리지 지속성, 중첩 배열, 패키지 함수와 같은 솔리디티의 고유 기능을 모델링함으로써 핵심 설계 문제를 밝혀내고 재진입 공격과 같은 취약점을 탐지하며, 안전한 스마트 계약 개발을 위해 공식적인 소스 수준 의미론이 필수적임을 입증한다.

ABSTRACT

Bitcoin has attracted everyone's attention and interest recently. Ethereum (ETH), a second generation cryptocurrency, extends Bitcoin's design by offering a Turing-complete programming language called Solidity to develop smart contracts. Smart contracts allow creditable execution of contracts on EVM (Ethereum Virtual Machine) without third parties. Developing correct smart contracts is challenging due to its decentralized computation nature. Buggy smart contracts may lead to huge financial loss. Furthermore, smart contracts are very hard, if not impossible, to patch once they are deployed. Thus, there is a recent surge of interest on analyzing/verifying smart contracts. While existing work focuses on EVM opcode, we argue that it is equally important to understand and define the semantics of Solidity since programmers program and reason about smart contracts at the level of source code. In this work, we develop the structural operational semantics for Solidity, which allows us to identify multiple design issues which underlines many problematic smart contracts. Furthermore, our semantics is executable in the K framework, which allows us to verify/falsify contracts automatically.

연구 동기 및 목표

  • 스마트 계약을 작성하는 데 사용되는 이더리움 고수준 언어인 솔리디티에 대한 공식적이고 실행 가능한 의미론의 부재를 해결하기 위해.
  • 저수준 EVM 바이트코드 분석에 의존하는 대신, 소스 코드 수준에서 스마트 계약 동작에 대한 공식적 추론을 가능하게 하기 위해.
  • 예상치 못한 배열 동작 및 재진입과 같은 설계 결함과 취약점을 공식적 의미론을 통해 탐지하기 위해.
  • 공식적으로 검증된 실행 가능한 솔리디티 모델을 제공하여 공식 컴파일러 및 문서와 일관되게 유지하기 위해.
  • K 프레임워크의 도달 가능성 논리(Reachability Logic)를 사용하여 스마트 계약의 자동 검증 및 반증을 지원하기 위해.

제안 방법

  • 스토리지, 메모리, 스택 의미론을 포함한 핵심 언어 기능을 포괄하는 솔리디티를 위한 구조적 운영 의미론(SOS)을 개발하였다.
  • K 프레임워크에 의미론을 공식화하여 계약 실행에 대한 실행 가능하고 기계로 검증 가능한 추론을 가능하게 하였다.
  • 중첩 배열, 함수 호출, 패키지 함수, 외부 호출과 같은 복잡한 기능을 정확한 상태 전이로 모델링하였다.
  • 함수 매개변수 바인딩 및 조건 검사를 함수 수식어를 통해 통합하여 올바른 실행 컨텍스트 처리를 보장하였다.
  • K 프레임워크의 도달 가능성 논리 증명기(Prover)를 사용하여 계약 속성의 자동 검증 또는 반증을 수행하였다.
  • 의미론이 레미克斯 컴파일러 및 공식 솔리디티 문서와 일치하는지 검증하기 위해 이를 대조하였다.

실험 결과

연구 질문

  • RQ1개발자가 정확한 추론을 위해 수행할 수 있도록, 솔리디티의 의미론을 소스 코드 수준에서 공식적이고 정확하게 정의할 수 있는가?
  • RQ2실제로 악용 가능한 취약점을 유발하는 설계 수준의 문제들—예를 들어 배열 처리 및 패키지 함수—는 무엇인가?
  • RQ3실행 가능한 의미론을 통해 솔리디티가 알려진 취약점, 예를 들어 DAO 공격과 같은 사례를 배포 이전에 탐지할 수 있는가?
  • RQ4제안된 의미론은 공식 솔리디티 컴파일러 및 문서와 얼마나 일관되는가?
  • RQ5K 프레임워크의 도달 가능성 논리가 스마트 계약 속성의 자동 검증 또는 반증에 얼마나 효과적으로 활용될 수 있는가?

주요 결과

  • 제안된 실행 가능한 의미론은 공식 문서에 명시된 대부분의 핵심 기능을 정확하게 모델링하며, 레미克斯 컴파일러의 동작과 일치한다.
  • 공식 모델은 스토리지 레이아웃으로 인한 예상치 못한 배열 수정과 같은 잠재적 보안 취약점으로 이어질 수 있는 미묘하지만 핵심적인 동작을 드러냈다.
  • 함수 호출 및 상태 전이 동작을 정확히 모델링함으로써 재진입 유형의 취약점, 특히 DAO 공격의 변종을 성공적으로 탐지하였다.
  • K 프레임워크의 도달 가능성 논리는 계약 정확성의 자동 검증을 가능하게 하여 잘못된 가정의 반증도 가능하게 하였다.
  • 저수준 EVM 분석만으로는 고수준 의미적 의도를 포괄할 수 없기 때문에, 신뢰할 수 있는 스마트 계약 개발을 위해 소스 수준의 공식 의미론이 필수적임을 입증하였다.

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

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

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

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