两篇论文,都是关于智能合约漏洞检测的综述文章
[1]崔展齐,杨慧文,陈翔等.智能合约安全漏洞检测研究进展[J/OL].软件学报:1-33[2024-03-05].https://doi.org/10.13328/j.cnki.jos.007046.
[2]王丹,黄松,王兴亚.以太坊智能合约测试研究综述[J].信息技术与信息化,2023(10):52-58.
两篇文章中主要内容都是总结了13种常见的漏洞类型并进行简单介绍、几类测试方法以及未来的工作和展望。在第一篇论文中还介绍了当前的基于机器学习的测试方法的公开数据集。
1 漏洞类型
不单单是这两篇论文,在其他的智能合约漏洞检测论文中,都是从高级语言层、EVM层和区块链层三层来进行大分类的。由于目前常见的合约语言都是solidity语言,所以大部分的高级语言层也可以说是针对solidity语言来编写代码的漏洞。
下图是[1]文献中的漏洞分类表:
其中,重点了解了重入漏洞。
1.1 重入漏洞
在了解重入漏洞之前,需要先了解一下转账函数和回调函数:
转账函数主要有三种:transfer()、send()和call()函数,三者的区别在于遇到异常的时候是否会抛出异常以及后续的代码是否还会继续执行;
回调函数是指fallback()函数,该函数在向合约转账的时候会自动调用。