[논문 리뷰] SolidityCheck : Quickly Detecting Smart Contract Problems Through Regular Expressions
이 논문은 정규 표현식과 프로그램 인스트루먼테이션을 사용하여 솔리디티 소스 코드에서 20종류의 스마트 계약 취약점을 탐지하는 빠르고 정확한 정적 분석 도구인 SolidityCheck를 제안한다. 이는 재진입 및 정수 오버플로우와 같은 심각한 문제를 포함한다. 이는 소스 코드 의미론과 정밀한 패턴 매칭을 활용함으로써 기존 도구보다 탐지 효율성과 정확도에서 뛰어나다.
As a blockchain platform that has developed vigorously in recent years, Ethereum is different from Bitcoin in that it introduces smart contracts into blockchain.Solidity is one of the most mature and widely used smart contract programming language,which is used to write smart contracts and deploy them on blockchain. However, once the data in the blockchain is written, it cannot be modified. Ethereum smart contract is stored in the block chain, which makes the smart contract can no longer repair the code problems such as re-entrancy vulnerabilities or integer overflow problems. Currently, there still lacks of an efficient and effective approach for detecting these problems in Solidity. In this paper, we first classify all the possible problems in Solidity, then propose a smart contract problem detection approach for Solidity, namely SolidityCheck. The approach uses regular expressions to define the characteristics of problematic statements and uses regular matching and program instrumentation to prevent or detect problems. Finally, a large number of experiments is performed to show that SolidityCheck is superior to existing approaches.
연구 동기 및 목표
- 배포 이전에 솔리디티 소스 코드에서 스마트 계약 취약점을 효율적이고 정확하게 탐지할 수 있는 도구의 부족을 해결하기 위해.
- 기본 코드 분석에 의존하는 기존 도구의 한계를 극복하기 위해, 고수준 의미 정보를 상실하고 효율성이 떨어지는 문제를 해결하기 위해.
- 특히 재진입 및 정수 오버플로우와 같은 고위험 문제에 대해 정확한 정규 표현식 기반 패턴을 정의함으로써 탐지 정확도를 향상시키기 위해.
- 개발자가 빠르고 소스 코드 인식 기반의 도구를 통해 문제 코드 패턴을 조기에 탐지하고 쉽게 수정할 수 있도록 지원하기 위해.
- 보안, 성능, 유지보수 문제를 포함한 스마트 계약 문제에 대한 종합적이고 최신 기준의 분류 체계를 구축하기 위해.
제안 방법
- 저자는 스마트 계약 문제를 보안, 성능, 숨겨진 프로그래밍 위협의 세 가지 범주로 분류하고, 20종류의 특정 문제 유형을 식별한다.
- 솔리디티 소스 코드에서 문제 있는 코드 구조를 정확히 매칭하기 위한 정규 표현식 패턴을 설계한다. 예를 들어, 불안전한 외부 호출이나 확인되지 않은 산술 연산과 같은 것들.
- 정규 표현식 매칭과 경량 프로그램 인스트루먼테이션을 조합하여 탐지 정확도를 향상시키고 가짜 경고를 줄인다.
- 정적 분석 엔진으로서의 도구를 구현하여 솔리디티 소스 파일을 처리하고, 문제를 라인 단위 정밀도로 보고한다.
- 심층적 어휘 및 문법 분석을 피하기 위해 직접 구문 패턴을 매칭함으로써 성능을 크게 향상시킨다.
- 실제 스마트 계약의 대규모 코퍼스를 사용하여 도구의 효과성과 효율성을 검증한다.
실험 결과
연구 질문
- RQ1정규 표현식을 사용하여 솔리디티 소스 코드에서 광범위한 스마트 계약 취약점을 높은 정밀도로 탐지할 수 있는가?
- RQ2기본 코드 분석이나 복잡한 구문 분석에 의존하는 기존 도구와 비교해 정규 표현식 기반 접근의 성능은 어떻게 되는가?
- RQ3제안된 방법은 기존 도구보다 재진입 및 정수 오버플로우와 같은 심각한 취약점을 더 정확하게 탐지할 수 있는가?
- RQ4프로그램 인스트루먼테이션을 사용할 경우 성능을 희생시키지 않고 탐지 정확도는 어느 정도 향상되는가?
- RQ5제안된 20종류의 스마트 계약 문제 분류 체계는 실제 스마트 계약 개발에 종합적이고 실용적인가?
주요 결과
- SolidityCheck는 이전에 간과되거나 탐지되지 않았던 문제를 포함하여 20종류의 고유한 스마트 계약 문제를 성공적으로 탐지한다.
- 기존의 어휘 및 문법 분석의 성능 오버헤드를 피함으로써 탐지 효율성에서 기존 접근 방식을 능가한다.
- 재진입 및 정수 오버플로우와 같은 고위험 취약점을 정확히 식별하여 계약 보안에 있어 핵심적인 요소를 확보한다.
- 정규 표현식의 사용은 문제 있는 코드 패턴을 정밀하게 위치시키는 동시에 빠르고 확장 가능한 분석을 가능하게 한다.
- 실험 결과, 복잡한 구문 트리에 의존하는 SmartCheck와 같은 도구보다 가짜 경고와 가짜 부정 결과를 줄였다.
- 실제 스마트 계약 데이터셋에서 높은 사용성과 확장성을 입증하여 개발 워크플로우에 통합하기에 적합하다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.