Giter Site home page Giter Site logo

boyquotes / web3bugs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zhangzhuosjtu/web3bugs

0.0 0.0 0.0 137.37 MB

Demystifying Exploitable Bugs in Smart Contracts

Shell 0.14% JavaScript 19.80% Ruby 0.18% Python 3.97% Perl 0.01% Go 1.18% Rust 0.69% TypeScript 26.58% CSS 0.01% Nix 0.01% Makefile 0.04% HTML 3.81% Handlebars 0.03% Dockerfile 0.01% Reason 0.47% Solidity 41.88% ReScript 0.46% Vyper 0.78%

web3bugs's Introduction

Demystifying Exploitable Bugs in Smart Contracts

integrity validation

loading-ag-167

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.


๐™ฐ ๐šœ๐š’๐š๐š—๐š’๐š๐š’๐šŒ๐šŠ๐š—๐š ๐š—๐šž๐š–๐š‹๐šŽ๐š› ๐š˜๐š ๐šŽ๐šก๐š™๐š•๐š˜๐š’๐š๐šŠ๐š‹๐š•๐šŽ ๐š‹๐šž๐š๐šœ ๐š’๐š— ๐šœ๐š–๐šŠ๐š›๐š ๐šŒ๐š˜๐š—๐š๐š›๐šŠ๐šŒ๐š๐šœ ๐š๐šŠ๐š•๐š• ๐šž๐š—๐š๐šŽ๐š› ๐š๐š‘๐šŽ ๐šŒ๐šŠ๐š๐šŽ๐š๐š˜๐š›๐šข ๐š˜๐š ๐š๐šž๐š—๐šŒ๐š๐š’๐š˜๐š—๐šŠ๐š• ๐š‹๐šž๐š๐šœ, ๐š ๐š‘๐š’๐šŒ๐š‘ ๐šŒ๐šŠ๐š—๐š—๐š˜๐š ๐š‹๐šŽ ๐š๐šŽ๐š๐šŽ๐šŒ๐š๐šŽ๐š ๐šž๐šœ๐š’๐š—๐š ๐šœ๐š’๐š–๐š™๐š•๐šŽ ๐šŠ๐š—๐š ๐š๐šŽ๐š—๐šŽ๐š›๐šŠ๐š• ๐š˜๐š›๐šŠ๐šŒ๐š•๐šŽ๐šœ.


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:

  • Vunerability detection techniques that prioritize the development of semantical oracles for smart contracts.
  • Publicly available security analysis tools that can be used for auditing

We warmly welcome any additional suggestions or contributions from the community to help expand and improve the list.

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
Clockwork Finance: Automated Analysis of Economic Security in Smart Contracts TBD

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
Foundry Paradigm Development Toolchain Fuzzing, Stateful Fuzzing (Invariant Testing), Differential Testing
Echidna Trail of Bits Fuzzer Fuzzing , Stateful Fuzzing (Invariant Testing), CI/CD
Optik Trail of Bits Hybrid Fuzzer (Symbolic Execution + Fuzzing) Fuzzing, Stateful Fuzzing, Symbolic Execution
Woke Ackee Blockchain Development Toolchain Cross-chain Testing, Invariant Testing, Vulnerability Detectors, IR
4naly3er Picodes Static Scanner Code4rena Pre-content Testing
Manticore Trail of Bits Symbolic Execution Tool Symbolic Execution, Property Testing
Halmos a16z Symbolic Bounded Model Checker Symbolic Execution, Bound Checker
Solidity SMTChecker Ethereum Foundation Formal Verification by Symbolic Exection Solidity, Formal Verification, Symbolic Execution
Move Prover The Move Programming Language Formal Specification and Verification Move, Formal Verification

Contributing

We welcome all types of contributions to our project, including but not limited to:

  • Suggesting new reference techniques for smart contract security analysis.
  • Adding newly disclosed code4rena contest bugs.
  • Suggesting improvements to the classification standard
  • Correcting mislabeled bugs
  • Filling in any missing defillama entities in the results/contests.csv

Further details can be found in our contribution guidelines.

Cite

  • Zhuo Zhang, Brian Zhang, Wen Xu, Zhiqiang Lin, "Demystifying Exploitable Bugs in Smart Contracts." In Proceedings of the 45th International Conference on Software Engineering, 2023.

Clarification

Please refer to our classification documentation.

Acknowledgments

We would like to extend our sincere thanks to code4rena for making this valuable information publicly available.

Our appreciation also goes out to the following contributors for their valuable input.

web3bugs's People

Contributors

zhangzhuosjtu avatar patrickalphac avatar charesfang avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.