[논문 리뷰] TokenHook: Secure ERC-20 smart contract
이 논문은 기존의 알려진 취약점을 완화하고 보안 최선의 실천 방법에 더 잘 부합하도록 설계된, Vyper와 Solidity로 구현된 보안성 높고 오픈소스인 ERC-20 스마트 계약 구현체인 TokenHook을 소개한다. 이는 일곱 가지 산업용 도구에서 검사 정밀도가 가장 높으며, 감지된 결함 수가 가장 적고 대부분이 잘못 알림(거짓 경고)인 것으로 보고되어, 소프트웨어 다양성 향상과 감사 신뢰성 향상에 기여할 수 있는 두 번째 기준 구현체로서의 탄탄함과 적합성을 입증한다.
ERC-20 is the most prominent Ethereum standard for fungible tokens. Tokens implementing the ERC-20 interface can interoperate with a large number of already deployed internet-based services and Ethereum-based smart contracts. In recent years, security vulnerabilities in ERC-20 have received special attention due to their widespread use and increased value. We systemize these vulnerabilities and their applicability to ERC-20 tokens, which has not been done before. Next, we use our domain expertise to provide a new implementation of the ERC-20 interface that is freely available in Vyper and Solidity, and has enhanced security properties and stronger compliance with best practices compared to the sole surviving reference implementation (from OpenZeppelin) in the ERC-20 specification. Finally, we use our implementation to study the effectiveness of seven static analysis tools, designed for general smart contracts, for identifying ERC-20 specific vulnerabilities. We find large inconsistencies across the tools and a high number of false positives which shows there is room for further improvement of these tools.
연구 동기 및 목표
- ERC-20 토큰에 적용 가능한 82개의 별도의 취약점과 최선의 실천 방법을 체계화하고 분석하여 이전 연구에서 빈약했던 부분을 메운다.
- 기존 OpenZeppelin 기준 구현체를 초월해 보다 높은 보안성과 준수 수준을 확보한 새로운 보안 ERC-20 구현체인 TokenHook을 개발한다.
- 일곱 가지 널리 사용되는 정적 분석 도구가 ERC-20 전용 취약점에 대해 얼마나 효과적이고 정확하며 완전한지 평가한다.
- 현재는 존재하지 않는 Vyper 전용 ERC-20 구현체를 제공함으로써 소프트웨어 다양성을 증진한다.
- TokenHook을 황금 표준 구현체로 삼아 감사 도구의 성능을 벤치마킹함으로써, 핵심적인 일관성 부족과 거짓 경고 비율을 드러낸다.
제안 방법
- 저자들은 알려진 ERC-20 취약점에 대한 종합적 조사를 수행하고, 이를 특정 공격 벡터와 대응 전략에 매핑했다.
- 저희는 방어적 프로그래밍 패턴을 통합하고 Vyper의 내장된 오버플로우 보호 기능을 활용하여, Vyper와 Solidity 모두에서 TokenHook을 설계하고 구현했다.
- 표준 조건 하에 일곱 가지 정적 분석 도구—Securify, MythX, ContractGuard, Slither, Odin 및 기타 도구—를 사용하여 구현체를 감사했다.
- 거짓 경고는 수작업으로 검토하고 제외하여 TokenHook에 대한 도구들의 정교한 성공률을 99.5%로 산정했다.
- 감사 결과는 시장 capitalization 상위 10개 ERC-20 토큰과 비교하여 상대적 보안 보고 성능을 평가하는 데 사용되었다.
- 연구는 TokenHook을 기준으로 삼아 도구의 한계, 특히 재진입, 오버플로우, 프론트런닝 문제 탐지 능력을 평가하는 데 사용되었다.
실험 결과
연구 질문
- RQ1ERC-20 토큰 계약에 특화된 가장 흔하고 영향력 있는 취약점들은 무엇이며, 어떻게 체계적으로 분류할 수 있는가?
- RQ2기존 정적 분석 도구들은 ERC-20 전용 취약점을 얼마나 정확하게 탐지하는가? 거짓 경고 비율은 그 신뢰성에 어떤 영향을 미치는가?
- RQ3기존 OpenZeppelin 기준 구현체를 초월해 새로운 ERC-20 구현체가 더 강력한 보안 특성을 확보하고 최선의 실천 방법에 더 잘 부합할 수 있는가?
- RQ4프로그래밍 언어 선택(Vyper 대비 Solidity)이 ERC-20 계약의 보안성과 감사 가능성에 어떤 영향을 미치는가?
- RQ5TokenHook는 스마트 계약 감사 도구의 정밀도와 완전성 평가에 신뢰할 수 있는 기준이 될 수 있는가?
주요 결과
- TokenHook는 USDT 및 USDC와 같은 상위 시가 총액 토큰을 포함한 모든 평가된 ERC-20 토큰 중에서 감지된 보안 결함 수가 가장 적은 40건을 기록했다.
- 다른 토큰들(예: USDT는 197건, LEO는 252건)에 비해 높은 감지율을 보였음에도 불구하고, TokenHook에서 감지된 모든 결함는 거짓 경고였으며, 이는 뛰어난 코드 품질을 시사한다.
- 수작업으로 거짓 경고를 제외한 후, 감사 도구들의 TokenHook에 대한 평균 성공률은 99.5%에 도달하여, 그 탄탄함과 신뢰성을 입증했다.
- 연구에서는 도구 간에 뚜렷한 일관성 부족이 드러났으며, 일부 도구는 가스 한도나 컨tracts 지갑 상호작용과 같은 비문제를 취약점으로 경고했다.
- Vyper 구현체는 내장된 방식으로 정수 오버플로우를 방지하지만, Solidity는 SafeMath 또는 버전 0.8.4가 필요로 하여 언어 수준의 보안 차이를 보여주었다.
- 감사 결과는 기존 도구들이 비록 유용하지만 전문가의 코드 검토를 대체할 수 없으며, TokenHook의 설계가 거짓 경고 노이즈를 크게 줄였다는 점을 시사한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.