Web3Bugs
Demystifying Exploitable Bugs in Smart Contracts
Install / Use
/learn @ZhangZhuoSJTU/Web3BugsREADME
Demystifying Exploitable Bugs in Smart Contracts <a href="https://openai.com/product/dall-e-2"><img src="resources/logo.png" alt="Logo" align="right" width="82"/></a>
<p> <a href="papers/icse23.pdf"> <img title="" src="resources/paper.jpg" alt="loading-ag-167" align="right" width="200"></a>This project aims to provide a valuable resource for Web3 developers and security analysts by facilitating their understanding of exploitable bugs in smart contracts. We conduct a thorough analysis of exploitable bugs extracted from code4rena and classify each bug according to its nature.
Our initial research suggests that a notable proportion of exploitable bugs in smart contracts are functional bugs, which cannot be detected using simple and general oracles like reentrancy. We aim to raise awareness about the significance of such bugs and encourage practitioners to develop more sophisticated and nuanced automatic semantical oracles to detect them.
</p> <br><br>𝙰 𝚜𝚒𝚐𝚗𝚒𝚏𝚒𝚌𝚊𝚗𝚝 𝚗𝚞𝚖𝚋𝚎𝚛 𝚘𝚏 𝚎𝚡𝚙𝚕𝚘𝚒𝚝𝚊𝚋𝚕𝚎 𝚋𝚞𝚐𝚜 𝚒𝚗 𝚜𝚖𝚊𝚛𝚝 𝚌𝚘𝚗𝚝𝚛𝚊𝚌𝚝𝚜 𝚏𝚊𝚕𝚕 𝚞𝚗𝚍𝚎𝚛 𝚝𝚑𝚎 𝚌𝚊𝚝𝚎𝚐𝚘𝚛𝚢 𝚘𝚏 𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗𝚊𝚕 𝚋𝚞𝚐𝚜, 𝚠𝚑𝚒𝚌𝚑 𝚌𝚊𝚗𝚗𝚘𝚝 𝚋𝚎 𝚍𝚎𝚝𝚎𝚌𝚝𝚎𝚍 𝚞𝚜𝚒𝚗𝚐 𝚜𝚒𝚖𝚙𝚕𝚎 𝚊𝚗𝚍 𝚐𝚎𝚗𝚎𝚛𝚊𝚕 𝚘𝚛𝚊𝚌𝚕𝚎𝚜.
Please be aware that this repository is currently undergoing active development, and the data may change over time due to ongoing code4rena contests.
Dataset Description
Folder Structure
The dataset is organized into four folders:
- papers/: contains our ICSE23 paper summarizing our preliminary results, as well as the supplementary material for the paper.
- results/: contains the bug classification in bugs.csv and the description for each contest in contests.csv.
- contracts/: contains all the smart contracts that we examined, using the version at the time of the contest.
- reports/: contains all the reports provided by code4rena.
Bug Labels
We classify the surveyed bugs into three main categories based on their nature:
- Out-of-scope bugs (denoted by O)
- Bugs with simple and general testing oracles (denoted by L)
- Bugs that require high-level semantical oracles (denoted by S)
As classifying functional bugs can be ambiguous, we welcome suggestions to improve our classification standards. You can find more detailed label information in our documentation, and we encourage you to refer to our current classification guidelines for more information.
Recommended Security Analysis Tools
Our goal is to create a comprehensive list of vulnerability detection techniques that will be a valuable resource for Web3 developers and security analysts. We will focus on two main categories:
- Vulnerability detection techniques that prioritize the development of semantical oracles for smart contracts.
- Publicly available security analysis tools that can be used for auditing
<span style="color:red"><strong>We warmly welcome any additional suggestions or contributions from the community to help expand and improve the list. </strong></span>
Vulnerability Detection with Automatic Semantical Oracles
We believe that future web3 security efforts will prioritize identifying functional bugs and developing corresponding oracles. To this end, we intend to compile a list of techniques that provide guidance in the creation of automatic semantic oracles. These techniques will be sourced from various materials, such as peer-reviewed research papers, pre-prints, industry tools, and online resources.
| Technique | Bug Category | | :------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- | | Finding Permission Bugs in Smart Contracts with Role Mining | Access Control | | AChecker: Statically Detecting Smart Contract Access Control Vulnerabilities | Access Control | | Towards Automated Verification of Smart Contract Fairness | Fairness Property | | Clockwork Finance: Automated Analysis of Economic Security in Smart Contracts | TBD | | Confusum Contractum: Confused Deputy Vulnerabilities in Ethereum Smart Contracts | Confused Deputy | | Not your Type! Detecting Storage Collision Vulnerabilities in Ethereum Smart Contracts | Storage Collision |
Publicly Available Security Analysis Techniques
This section will include open-source techniques that are publicly available and currently in active development. These techniques can be used either directly by Web3 developers and security analysts or as building blocks for other tools. We give priority to source-code level techniques, which are better suited for Web3 development and auditing contexts.
| Technique | Developer(s) | Description | Security-related Keywords | | :------------------------------------------------------------------------------- | :--------------------------------------------------------- | :------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Slither | Trail of Bits | Static Analysis Framework | Vulnerability Detectors, SlithIR | | Aderyn | Cyfrin | Static Analysis Framework | Static Analyzer, Custom Detectors, Markdown Reports | | Foundry | Paradigm | Development Toolchain | Fuzzing, Stateful Fuzzing (Invariant Testing), Differential Testing | | Echidna | Trail of Bits | Fuzzer | Fuzzing , Stateful Fuzzing (Invariant Testing), [CI/CD](https://github.com/crytic/echidna#using-echidna-in-a-
Related Skills
node-connect
351.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
