Skip to main content
QUICK REVIEW

[논문 리뷰] CONTRACTFIX: A Framework for Automatically Fixing Vulnerabilities in Smart Contracts

Pengcheng Fang, Peng|arXiv (Cornell University)|2023. 07. 18.
Security and Verification in ComputingComputer Science인용 수 3
한 줄 요약

ContractFix는 앙상블 정적 분석, 템플릿 기반 패치 패턴, 프로그램 분석을 사용하여 스마트 계약의 보안 취약점을 자동으로 탐지하고 수정하며 검증하는 엔드 투 엔드 프레임워크입니다. 144개의 실제 스마트 계약에서 탐지된 601개의 취약점 중 94%를 성공적으로 수정하였으며, 성능 오버헤드는 최소 수준이며 평균 패치 시간은 3.75초입니다.

ABSTRACT

The increased adoption of smart contracts in many industries has made them an attractive target for cybercriminals, leading to millions of dollars in losses. Thus, deploying smart contracts with detected vulnerabilities (known to developers) are not acceptable, and fixing all the detected vulnerabilities is needed, which incurs high manual labor cost without effective tool support. To fill this need, in this paper, we propose ContractFix, a novel framework that automatically generates security patches for vulnerable smart contracts. ContractFix is a general framework that can incorporate different fix patterns for different types of vulnerabilities. Users can use it as a security fix-it tool that automatically applies patches and verifies the patched contracts before deploying the contracts. To address the unique challenges in fixing smart contract vulnerabilities, given an input smart contract, ool conducts our proposed ensemble identification based on multiple static verification tools to identify vulnerabilities that are amenable for automatic fix. Then, ContractFix generates patches using template-based fix patterns and conducts program analysis (program dependency computation and pointer analysis) for smart contracts to accurately infer and populate the parameter values for the fix patterns. Finally, ContractFix performs static verification that guarantees the patched contract is free of vulnerabilities. Our evaluations on $144$ real vulnerable contracts demonstrate that ool can successfully fix $94\%$ of the detected vulnerabilities ($565$ out of $601$) and preserve the expected behaviors of the smart contracts.

연구 동기 및 목표

  • 배포 후 수정이 불가능하고 높은 비용이 수반되는 스마트 계약 취약점에 대한 자동화된 도구 지원의 핵심적 격차를 해소하기 위해.
  • 테스트 셋에 의존하지 않고도 다양한 취약점 유형에 대해 보안적이고 동작을 유지하는 패치를 자동으로 생성하기 위해.
  • 재진입 공격과 같은 심각한 취약점에 일반적으로 요구되는 복잡한 패턴(예: 일시적 변수 생성, 문장 재정렬)을 지원하기 위해.
  • 정적 검증을 통해 패치된 계약의 정확성을 보장하고, 원래의 취약점 제거를 공식적으로 증명하기 위해.
  • 탐지, 패치, 검증을 하나의 파이프라인에 통합하는 일반화 가능하고 효율적이며 확장 가능한 프레임워크를 제공하기 위해.

제안 방법

  • ContractFix는 세 가지 정적 검증 도구의 앙상블을 사용하여 취약점을 탐지하며, 다수결 투표 및 사후 처리를 통해 거짓 긍정을 줄입니다.
  • 재진입, 입력 검증 누락, 고정된 이더 잠금 등의 특정 취약점 유형에 맞춰 맞춤형 템플릿 기반 패치 패턴을 적용합니다.
  • 프로그램 의존성 분석 및 포인터 분석을 포함한 커스터마이징된 프로그램 분석을 사용하여 패턴 적용을 위한 매개변수를 정확하게 추론하고 채웁니다.
  • 패치된 계약에 대해 정적 검증을 수행하여 원래의 취약점이 존재하지 않음을 공식적으로 증명합니다.
  • 패치 생성을 탐지와 분리하여 다양한 취약점 탐지기와의 통합을 가능하게 하며, 다른 스마트 계약 언어로의 확장성도 지원합니다.
  • 경량 분석과 최적화된 템플릿 적용을 통해 런타임 효율성을 확보하였으며, 계약당 평균 패치 시간은 3.75초입니다.
Figure 1: Example patch for Reentrancy vulnerability
Figure 1: Example patch for Reentrancy vulnerability

실험 결과

연구 질문

  • RQ1테스트 셋이 필요 없이 자동화된 프레임워크가 스마트 계약의 다수의 취약점을 효과적으로 탐지하고 수정할 수 있는가?
  • RQ2정적 분석과 템플릿을 사용하여 일시적 변수 생성, 문장 재정렬과 같은 복잡한 패턴을 신뢰성 있게 생성하고 적용할 수 있는가?
  • RQ3생성된 패치가 취약점을 제거하면서도 원래 계약의 동작을 유지하는가를 보장할 수 있는가?
  • RQ4세 가지 도구의 결과를 조합하고 사후 처리를 적용함으로써, 개별 도구 대비 거짓 긍정을 얼마나 줄일 수 있는가?
  • RQ5전체 파이프라인의 성능 오버헤드는 얼마이며, 실제 스마트 계약에 대해 확장 가능한가?

주요 결과

  • ContractFix는 144개의 실제 스마트 계약에서 탐지된 601개의 취약점 중 565개(94%)를 성공적으로 수정하였습니다.
  • 계약당 평균 패치 시간이 3.75초로 높은 효율성을 보였습니다.
  • 앙상블 정적 검증 접근법을 통해 세 도구의 결과를 조합하고 사후 처리를 적용하여 거짓 긍정을 줄였습니다.
  • 프로그램 분석을 활용하여 패턴 적용을 위한 값 추론을 정확하게 수행함으로써, 재정렬 및 일시적 변수 도입과 같은 복잡한 수리 작업을 지원했습니다.
  • 패치 후 정적 분석을 통해 원래 계약의 예상 동작이 유지됨을 검증하였습니다.
  • ContractFix는 일반화 가능하며, Move와 같은 다른 스마트 계약 언어로도 유사한 언어 수준의 제약 조건이 존재할 경우 확장 가능합니다.
Figure 2: An exploit of Reentrancy vulnerability
Figure 2: An exploit of Reentrancy vulnerability

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

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

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

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