
스마트 계약의 악용 가능한 버그 파헤치기

이 프로젝트는 Web3 개발자와 보안 분석가가 스마트 계약의 악용 가능한 버그를 이해하는 데 도움이 되는 유용한 리소스를 제공하는 것을 목표로 합니다. 우리는 code4rena에서 추출한 악용 가능한 버그에 대해 철저한 분석을 수행하고 각 버그를 그 특성에 따라 분류합니다.
우리의 초기 연구에 따르면 스마트 계약의 악용 가능한 버그 중 상당 부분이 단순하고 일반적인 오라클(예: 재진입)로는 탐지할 수 없는 기능적 버그입니다. 우리는 이러한 버그의 중요성에 대한 인식을 높이고 실무자들이 이를 탐지할 수 있는 더 정교하고 세밀한 자동 의미론적 오라클을 개발하도록 장려하고자 합니다.
스마트 계약의 악용 가능한 버그 중 상당수는 단순하고 일반적인 오라클로는 탐지할 수 없는 기능적 버그에 해당합니다.
참고로 이 저장소는 현재 활발히 개발 중이며, 진행 중인 code4rena 콘테스트로 인해 데이터는 시간이 지남에 따라 변경될 수 있습니다.
데이터셋은 네 개의 폴더로 구성되어 있습니다:
우리는 조사한 버그를 그 특성에 따라 세 가지 주요 범주로 분류합니다:
기능적 버그의 분류는 모호할 수 있으므로, 분류 기준을 개선하기 위한 제안을 환영합니다. 보다 자세한 라벨 정보는 문서에서 확인할 수 있으며, 현재 분류 지침을 참조하시기 바랍니다.
우리의 목표는 Web3 개발자와 보안 분석가에게 유용한 리소스가 될 포괄적인 취약점 탐지 기법 목록을 만드는 것입니다. 우리는 두 가지 주요 범주에 초점을 맞출 것입니다:
커뮤니티의 추가 제안이나 기여를 통해 목록을 확장하고 개선하는 데 도움을 주시길 진심으로 환영합니다.
우리는 향후 web3 보안 노력이 기능적 버그 식별과 이에 대응하는 오라클 개발을 우선시할 것이라고 믿습니다. 이를 위해 자동 의미론적 오라클 생성에 지침을 제공하는 기법 목록을 정리하고자 합니다. 이러한 기법은 동료 검토 연구 논문, 사전 인쇄본, 산업 도구, 온라인 리소스 등 다양한 자료에서 수집될 것입니다.
이 섹션에는 공개적으로 이용 가능하고 현재 활발히 개발 중인 오픈소스 기법이 포함됩니다. 이러한 기법은 Web3 개발자와 보안 분석가가 직접 사용하거나 다른 도구의 구성 요소로 사용할 수 있습니다. 우리는 Web3 개발 및 감사 환경에 더 적합한 소스 코드 수준의 기법을 우선시합니다.
| 기법 | 개발자 | 설명 | 보안 관련 키워드 |
|---|---|---|---|
| Slither | Trail of Bits | 정적 분석 프레임워크 | 취약점 탐지기, SlithIR |
| Aderyn | Cyfrin | 정적 분석 프레임워크 | 정적 분석기, 사용자 정의 탐지기, Markdown 보고서 |
| Foundry | Paradigm | 개발 툴체인 | 퍼징, 상태 기반 퍼징 (불변식 테스트), 차등 테스트 |
| Echidna | Trail of Bits | 퍼저 | 퍼징 , 상태 기반 퍼징 (불변식 테스트), CI/CD |
| Optik | Trail of Bits | 하이브리드 퍼저 (기호 실행 + 퍼징) | 퍼징, 상태 기반 퍼징, 기호 실행 |
| 기법 | 언어 | 설명 | 보안 관련 키워드 |
|---|---|---|---|
| Move Prover | Move | 정형 명세 및 검증 | 정형 검증 |
| 리소스 | 키워드 |
|---|---|
| 학술 스마트 계약 논문 | 학술 논문 목록 |
| DeFi 해킹 재현 - Foundry | 공격 재현 |
| 스마트 계약 보안 검증 표준 | 보안 체크리스트 |
| Awesome MythX 스마트 계약 보안 도구 | 보안 분석 서비스 |
| 스마트 계약의 일반적인 보안 속성 | 보안 컴플라이언스 스위트 |
| Immunefi PoC 템플릿 | PoC 템플릿 |
| Awesome MEV 리소스 | MEV 리소스 |
| 프론트러닝 공격 벤치마크 구축 및 취약점 탐지 기법 평가 | 프론트러닝 데이터셋 |
| 궁극의 DeFi 및 블록체인 연구 베이스 | 블록체인 보안 올인원 |
| 일반적인 포크 버그 | 익스플로잇 데이터셋 |
우리는 다음을 포함하되 이에 국한되지 않는 모든 종류의 기여를 환영합니다:
results/contests.csv에서 누락된 defillama 엔티티 채우기자세한 내용은 기여 지침에서 확인할 수 있습니다.
학술 출판물에 저희 데이터셋을 사용하신다면 다음 작업을 인용해 주시면 정말 감사하겠습니다:``` @inproceedings{DBLP:conf/icse/ZhangZXL23, author = {Zhuo Zhang and Brian Zhang and Wen Xu and Zhiqiang Lin}, title = {Demystifying Exploitable Bugs in Smart Contracts}, booktitle = {{ICSE}}, pages = {615--627}, publisher = {{IEEE}}, year = {2023} }
## 설명
분류 [문서](https://github.com/zhangzhuosjtu/web3bugs/blob/main/docs/classification.md)를 참조하세요.
## 감사의 말
이 귀중한 정보를 공개적으로 제공해 주신 [code4rena](https://code4rena.com/)에 진심으로 감사드립니다.
<details>
<summary>다음 기여자분들의 소중한 의견에도 감사드립니다.</summary></br>
+ [__ItsNio__](https://github.com/niothefirst)
+ [__Wen Xu__](https://github.com/tarafans)
+ [__Patrick Collins__](https://github.com/PatrickAlphaC)
+ [__Meng Xu__](https://twitter.com/meng_xu_cs)
+ [__y3s0n__](https://github.com/CharesFang)
+ [__William Aaron Cheung__](https://github.com/Troublor)
+ [__soaphorn__](https://github.com/soaphorn)
+ [__Fabio Gritti__](https://github.com/degrigis)
+ [__Yannick__](https://twitter.com/MillusPontius)
</details>
| Woke |
| Ackee Blockchain |
| 개발 툴체인 |
| 크로스체인 테스트, 불변식 테스트, 취약점 탐지기, IR |
| 4naly3er | Picodes | 정적 스캐너 | Code4rena 사전 콘텐츠 테스트 |
| Manticore | Trail of Bits | 기호 실행 도구 | 기호 실행, 속성 테스트 |
| Halmos | a16z | 기호 실행 기반 유계 모델 검사기 | 기호 실행, 경계 검사기 |
| Solidity SMTChecker | Ethereum Foundation | 기호 실행을 통한 정형 검증 | Solidity, 정형 검증, 기호 실행 |
| Mythril | Consensys | 기호 실행 도구 | 기호 실행, 온체인 분석, 취약점 탐지기, 오염 분석 |
| Pyrometer [WIP] | Nascent | 기호 실행 도구 | 기호 실행, 추상 해석 |
| greed | UCSB Seclab | 정적/기호 분석 프레임워크 | 기호 실행, 경계 검사기, 정적 분석, 속성 테스트 |
| ethpwn | ethpwn | 동적 분석/디버깅 | EVM 시뮬레이션, EVM 디버깅 |