揭开智能合约中可利用漏洞的神秘面纱
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/ZhangZhuoSJTU/Web3Bugs
揭秘智能合约中可利用的漏洞
该项目旨在通过促进 Web3 开发人员和安全分析师对智能合约中可利用漏洞的理解,为他们提供宝贵的资源。我们对从code4rena中提取的可利用漏洞进行了全面分析,并根据其性质对每个漏洞进行了分类

我们的初步研究表明,智能合约中很大一部分可利用的错误是功能性错误,无法使用简单和通用的预言机(如重入)检测到这些错误。我们的目标是提高对此类错误重要性的认识,并鼓励从业者开发更复杂、更细致的自动语义预言来检测它们。
𝙰𝚜𝚒𝚐𝚗𝚒𝚏𝚒𝚌𝚊𝚗𝚝𝚎𝚡𝚙𝚕𝚘𝚒𝚝𝚊𝚋𝚕𝚎𝚒𝚗𝚜𝚖𝚊𝚛𝚝𝚌𝚘𝚗𝚝𝚛𝚊𝚌𝚝𝚜𝚞𝚗𝚍𝚎𝚛𝚌𝚊𝚝𝚎𝚐𝚘𝚛𝚢𝚘𝚏𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗𝚊𝚕𝚋𝚞𝚐𝚜𝚋𝚞𝚐𝚜,𝚠𝚑𝚒𝚌𝚑𝚠𝚑𝚒𝚌𝚑𝚠𝚑𝚒𝚌𝚑𝚠𝚑𝚒𝚌𝚑𝚌𝚊𝚗𝚗𝚘𝚝𝚋𝚎𝚋𝚎𝚋𝚎𝚍𝚎𝚝𝚎𝚌𝚝𝚎𝚍𝚞𝚜𝚒𝚗𝚐𝚞𝚜𝚒𝚗𝚐𝚜𝚒𝚖𝚙𝚕𝚎𝚜𝚒𝚖𝚙𝚕𝚎𝚊𝚗𝚍𝚘𝚛𝚊𝚌𝚕𝚎𝚜𝚘𝚛𝚊𝚌𝚕𝚎𝚜𝚘𝚛𝚊𝚌𝚕𝚎𝚜
请注意,此存储库目前正在积极开发中,由于正在进行的 code4rena 竞赛,数据可能会随着时间的推移而变化。
使用自动语义预言机进行漏洞检测
我们计划编制一份广泛的漏洞检测技术列表,这些技术优先考虑为智能合约开发语义预言机。
我们热烈欢迎来自社区的任何额外建议或贡献,以帮助扩展和改进列表。这些技术可以从各种材料中获取,例如同行评审的研究论文、预印本、行业工具、在线资源等。
- Finding Permission Bugs in Smart Contracts with Role Mining,它试图解决访问控制问题。
- AChecker: Statically Detecting Smart Contract Access Control Vulnerabilities,试图解决访问控制问题。
文件夹结构
数据集分为四个文件夹:
- papers/:包含我们的 ICSE23 论文,总结了我们的初步结果,以及论文的补充材料。
- results/ :包含bugs.csv中的错误分类和contests.csv中每个比赛的描述。
- contracts/:包含我们检查过的所有智能合约,使用比赛时的版本。
- reports/:包含 code4rena 提供的所有报告。
错误标签
我们将调查的错误根据其性质分为三大类:
- 超出范围的错误(用O表示)
- 具有简单和通用测试预言的错误(由L表示)
- 需要高级语义预言的错误(由S表示)
由于对功能性错误的分类可能不明确,我们欢迎提出改进分类标准的建议。您可以在我们的文档中找到更详细的标签信息,我们鼓励您参考我们当前的分类指南以获取更多信息。
贡献
我们欢迎对我们项目的所有类型的贡献,包括但不限于:
- 建议使用语义 oracles 对智能合约漏洞检测进行优先级排序的新参考技术。
- 添加新披露的 code4rena 竞赛漏洞。
- 建议改进分类标准
- 纠正错误标记的错误
可以在我们的贡献指南中找到更多详细信息。
引用
- Zhuo Zhang、Brian Zhang、Wen Xu、Zhiqiang Lin,“揭开智能合约中可利用漏洞的神秘面纱”。在第 45 届国际软件工程会议论文集中,2023 年。
澄清
请参阅我们的分类文档。
致谢
我们衷心感谢code4rena公开了这些宝贵的信息。