
本项目旨在通过帮助 Web3 开发者和安全分析师理解智能合约中的可利用漏洞,为他们提供一份有价值的资源。我们对从 code4rena 中提取的可利用漏洞进行了深入分析,并根据漏洞的性质对其进行分类。
我们的初步研究表明,智能合约中相当大比例的可利用漏洞属于功能性漏洞,这些漏洞无法使用简单通用的预言机(如重入漏洞检测)检测出来。我们希望提高人们对这类漏洞重要性的认识,并鼓励从业者开发更复杂、更精细的自动化语义预言机来检测它们。
智能合约中相当一部分可利用漏洞属于功能性漏洞,无法通过简单通用的预言机检测出来。
请注意,本仓库目前正在积极开发中,由于 code4rena 比赛持续进行,数据可能会随时间发生变化。
该数据集按以下四个文件夹组织:
我们根据所审查漏洞的性质将其分为三个主要类别:
由于功能性漏洞的分类可能存在歧义,我们欢迎提出改进分类标准的建议。你可以在我们的文档中找到更详细的标签信息,也建议你查阅我们当前的分类指南以了解更多信息。
我们的目标是编制一份全面的漏洞检测技术清单,为 Web3 开发者和安全分析师提供有价值的资源。我们将重点关注两大类:
我们热忱欢迎社区提出更多建议或贡献,以帮助扩展和改进这份清单。
我们相信,未来的 Web3 安全工作将优先识别功能性漏洞并开发相应的预言机。为此,我们计划整理一份能够为创建自动化语义预言机提供指导的技术清单。这些技术将来源于多种材料,如经同行评审的研究论文、预印本、行业工具和在线资源。
本节将收录公开可用且目前仍在积极开发中的开源技术。这些技术既可供 Web3 开发者和安全分析师直接使用,也可作为其他工具的构建模块。我们优先考虑源代码级技术,因为它们更适用于 Web3 开发和审计场景。
我们欢迎对本项目的各类贡献,包括但不限于:
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/HEAD/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>
| 技术 | 漏洞类别 |
|---|
| 技术 | 开发者 | 描述 | 安全相关关键词 |
|---|
| Slither | Trail of Bits | 静态分析框架 | 漏洞检测器, SlithIR |
| Aderyn | Cyfrin | 静态分析框架 | 静态分析器, 自定义检测器, Markdown 报告 |
| Foundry | Paradigm | 开发工具链 | 模糊测试, 有状态模糊测试(不变量测试), 差分测试 |
| Echidna | Trail of Bits | 模糊测试工具 | 模糊测试 , 有状态模糊测试(不变量测试), CI/CD |
| Optik | Trail of Bits | 混合模糊测试(符号执行 + 模糊测试) | 模糊测试、有状态模糊测试、符号执行 |
| 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 调试 |
| 资源 | 关键词 |
|---|