Skip to main content
QUICK REVIEW

[논문 리뷰] sGUARD: Towards Fixing Vulnerable Smart Contracts Automatically

Tai D. Nguyen, Long Hoang Pham|arXiv (Cornell University)|2021. 01. 06.
Security and Verification in Computing참고 문헌 22인용 수 7
한 줄 요약

이 논문은 실행 시간 검증을 통해 네 가지 일반적인 취약점을 제거하는 데에 provably correct한 방법으로 스마트 컨트랙트를 자동으로 수리하는 sGuard 도구를 제안한다. 기호 실행 트레이스를 분석하고 고정된, 타당한 변환 패턴을 적용함으로써 sGuard는 정확성을 보장하면서도 매우 미미한 오버헤드만을 유발한다 — 5,000개의 컨트랙트 평균 기준 실행 시간은 14.79% 증가하고, 가스 소비는 0.79% 증가한다.

ABSTRACT

Smart contracts are distributed, self-enforcing programs executing on top of blockchain networks. They have the potential to revolutionize many industries such as financial institutes and supply chains. However, smart contracts are subject to code-based vulnerabilities, which casts a shadow on its applications. As smart contracts are unpatchable (due to the immutability of blockchain), it is essential that smart contracts are guaranteed to be free of vulnerabilities. Unfortunately, smart contract languages such as Solidity are Turing-complete, which implies that verifying them statically is infeasible. Thus, alternative approaches must be developed to provide the guarantee. In this work, we develop an approach which automatically transforms smart contracts so that they are provably free of 4 common kinds of vulnerabilities. The key idea is to apply runtime verification in an efficient and provably correct manner. Experiment results with 5000 smart contracts show that our approach incurs minor run-time overhead in terms of time (i.e., 14.79%) and gas (i.e., 0.79%).

연구 동기 및 목표

  • 배포 후 수정이 불가능한 스마트 컨트랙트에서 발생할 수 있는 악용 가능한 취약점 문제를 해결하기 위해.
  • 불결정성과 가짜 경고로 인해 취약점의 부재를 보장할 수 없는 기존의 검증 및 테스트 기법의 한계를 극복하기 위해.
  • 테스트 셋 커버리지가 아니라 형식적 타당성과 완전성 보장을 통해 정확성을 보장하는 수리 자동화 기법을 설계하기 위해.
  • 블록체인 환경에서 매우 중요한 실행 시간과 가스 소비 측면에서 성능 오버헤드를 최소화하기 위해.
  • Turing-complete 언어인 솔리디티와 같은 언어로 작성된 스마트 컨트랙트에 특화된 자체 포함형, provably correct한 수리 도구를 제공하기 위해.

제안 방법

  • 모든 가능한 프로그램 경로를 완전한 기호 탐색 없이도 탐색할 수 있도록 스마트 컨트랙트로부터 기호 실행 트레이스를 수집한다.
  • 수집된 트레이스에 대해 맞춤형 정적 분석을 수행하여 네 가지 특정 유형의 취약점을 탐지한다: 재진입, 정수 오버플로우/언더플로우, 타임스탬프 의존성, delegatecall 오용.
  • 각 취약점 유형에 대해 도메인 특화된, provably correct한 수정 패턴을 설계하고 적용하여 수정 후 의미적 정확성을 보장한다.
  • 기존 도구들인 Securify와 Ethainter에서 흔히 발생하는 가짜 경고를 방지하기 위해, 자체적으로 구축한 컨텍스트 민감한 트레이스 기반 분석 엔진을 사용한다.
  • 기능적 동작을 변경하지 않으면서도, 식별된 취약점을 방지하기 위해 형식적으로 증명된 런타임 체크를 코드 인스트루멘테이션을 통해 적용한다.
  • 지원하는 취약점 클래스에 대해 형식적 타당성과 완전성 증명을 통해 수리를 검증하여, 가짜 음성 또는 테스트 케이스에 과적합되지 않음을 보장한다.

실험 결과

연구 질문

  • RQ1배포 후 수정이 불가능한 스마트 컨트랙트에 대해, 완전히 자동화되고 형식적으로 정확한 수리 기법을 설계할 수 있는가?
  • RQ2실행 시간 오버헤드를 크게 유발하지 않으면서도 효율적이고 타당한 실행 시간 검증을 적용하여 일반적인 스마트 컨트랙트 취약점을 수리할 수 있는가?
  • RQ3기호 실행 트레이스를 얼마나 정밀하고 확장 가능한 방식으로 스마트 컨트랙트의 취약점 탐지 및 수리에 활용할 수 있는가?
  • RQ4테스트 커버리지가 아니라 형식적 정확성 보장에 의존함으로써, 테스트 셋에 과적합되는 것을 방지할 수 있는가?
  • RQ5실제 블록체인 스마트 컨트랙트에 안전한 런타임 체크를 자동으로 삽입했을 때, 실제로 발생하는 성능 영향(실행 시간 및 가스 소비)은 어느 정도인가?

주요 결과

  • sGuard는 분석한 5,000개의 스마트 컨트랙트 중 1,605개를 성공적으로 식별하고 수정하여 높은 실용적 적용 가능성을 입증했다.
  • 수리로 인해 발생한 평균 런타임 오버헤드는 실행 시간 기준 14.79%이며, 가스 소비 기준 0.79%로 매우 미미한 영향을 미쳤다.
  • 고유명도가 높은 컨트랙트들 중에서 sGuard는 BAT 토큰 컨트랙트에서 단일 산술 취약점을 탐지하고 수정했지만, 추가 분석 결과 기존의 체크로 인해 악용 가능성이 없음을 확인했다.
  • BAT 컨트랙트의 경우 10건의 실제 트랜잭션을 실행했을 때 가스 오버헤드가 18%로 측정되어, 실제 환경에서의 도구 효율성을 확인했다.
  • LINK, BNB, CRO 등 10개의 고유명도가 높은 토큰 중 7개는 수정 없이 안전하다고 정확하게 식별했으며, 이는 정밀도를 검증한 것이다.
  • sGuard의 맞춤형 정적 분석 엔진은 Securify와 Ethainter와 같은 기존 도구들보다 더 낮은 가짜 경고를 기록했으며, 이는 부족하거나 상충하는 의미 규칙으로 인한 문제를 피했기 때문이다.

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

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

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

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