
このプロジェクトは、Web3開発者とセキュリティアナリストがスマートコントラクトにおける悪用可能なバグへの理解を深めるための貴重なリソースを提供することを目的としています。code4renaから抽出した悪用可能なバグを徹底的に分析し、各バグをその性質に応じて分類します。
私たちの初期調査では、スマートコントラクトにおける悪用可能なバグのかなりの割合が機能的バグであり、再入(reentrancy)のような単純で一般的なオラクルでは検出できないことが示唆されています。私たちは、そのようなバグの重要性についての認識を高め、実務者がそれらを検出するための、より洗練されたニュアンスに富んだ自動セマンティックオラクルを開発することを奨励することを目指しています。
スマートコントラクトにおける悪用可能なバグのかなりの数は、単純で一般的なオラクルでは検出できない機能的バグに分類されます。
このリポジトリは現在活発に開発が進められており、進行中のcode4renaコンテストによりデータが変更される可能性があることにご注意ください。このリポジトリは現在活発に開発が進められており、進行中のcode4renaコンテストによりデータが変更される可能性があることにご注意ください。
データセットは4つのフォルダに整理されています。
調査対象のバグをその性質に基づいて次の3つの主要カテゴリに分類します。
私たちの目標は、Web3開発者とセキュリティアナリストにとって貴重なリソースとなる、脆弱性検出手法の包括的なリストを作成することです。次の2つの主要カテゴリに焦点を当てます。
コミュニティからの追加の提案や貢献を、リストの拡張と改善のために心から歓迎します。
私たちは、将来の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 | 形式仕様記述と検証 | 形式検証 |
| リソース | キーワード |
|---|---|
| Academic Smart Contract Papers | 学術論文リスト |
| DeFi Hacks Reproduce - Foundry | 攻撃再現 |
| Smart Contract Security Verification Standard | セキュリティチェックリスト |
| Awesome MythX Smart Contract Security Tools | セキュリティ分析サービス |
| Common Security Properties of Smart Contracts | セキュリティ準拠スイート |
| Immunefi PoC Templates | PoCテンプレート |
| Awesome MEV Resources | MEVリソース |
| Front-Running Attack Benchmark Construction and Vulnerability Detection Technique Evaluation | フロントランニングデータセット |
| Ultimate DeFi & Blockchain Research Base | ブロックチェーンセキュリティのオールインワン |
| Common Fork Bugs | エクスプロイトデータセット |
プロジェクトへのあらゆる種類の貢献を歓迎します。以下に限定されませんが、次のようなものがあります。
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デバッグ |