揭开智能合约中可利用漏洞的神秘面纱

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/ZhangZhuoSJTU/Web3Bugs

揭秘智能合约中可利用的漏洞

该项目旨在通过促进 Web3 开发人员和安全分析师对智能合约中可利用漏洞的理解,为他们提供宝贵的资源。我们对从code4rena中提取的可利用漏洞进行了全面分析,并根据其性质对每个漏洞进行了分类

ad1a1b7183164035

我们的初步研究表明,智能合约中很大一部分可利用的错误是功能性错误,无法使用简单和通用的预言机(如重入)检测到这些错误。我们的目标是提高对此类错误重要性的认识,并鼓励从业者开发更复杂、更细致的自动语义预言来检测它们。

𝙰𝚜𝚒𝚐𝚗𝚒𝚏𝚒𝚌𝚊𝚗𝚝𝚎𝚡𝚙𝚕𝚘𝚒𝚝𝚊𝚋𝚕𝚎𝚒𝚗𝚜𝚖𝚊𝚛𝚝𝚌𝚘𝚗𝚝𝚛𝚊𝚌𝚝𝚜𝚞𝚗𝚍𝚎𝚛𝚌𝚊𝚝𝚎𝚐𝚘𝚛𝚢𝚘𝚏𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗𝚊𝚕𝚋𝚞𝚐𝚜𝚋𝚞𝚐𝚜,𝚠𝚑𝚒𝚌𝚑𝚠𝚑𝚒𝚌𝚑𝚠𝚑𝚒𝚌𝚑𝚠𝚑𝚒𝚌𝚑𝚌𝚊𝚗𝚗𝚘𝚝𝚋𝚎𝚋𝚎𝚋𝚎𝚍𝚎𝚝𝚎𝚌𝚝𝚎𝚍𝚞𝚜𝚒𝚗𝚐𝚞𝚜𝚒𝚗𝚐𝚜𝚒𝚖𝚙𝚕𝚎𝚜𝚒𝚖𝚙𝚕𝚎𝚊𝚗𝚍𝚘𝚛𝚊𝚌𝚕𝚎𝚜𝚘𝚛𝚊𝚌𝚕𝚎𝚜𝚘𝚛𝚊𝚌𝚕𝚎𝚜

 

请注意,此存储库目前正在积极开发中,由于正在进行的 code4rena 竞赛,数据可能会随着时间的推移而变化

使用自动语义预言机进行漏洞检测

我们计划编制一份广泛的漏洞检测技术列表,这些技术优先考虑为智能合约开发语义预言机。

我们热烈欢迎来自社区的任何额外建议或贡献,以帮助扩展和改进列表。这些技术可以从各种材料中获取,例如同行评审的研究论文、预印本、行业工具、在线资源等。

文件夹结构

数据集分为四个文件夹:

  • 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公开了这些宝贵的信息。

标签:工具分享, 智能合约, 区块链安全