智能合约的智能模糊测试
智能合约是在区块链网络上执行的图灵完备的程序。与传统程序不同,智能合约部署之后 就没有办法修改了。随着智能合约越来越流行,并且承载的价值越来越高,这些合约吸引了 攻击者越来越大的兴趣。近年来因智能合约漏洞或错误引起的损失已经很大,因此目前已经 开发出多种用于检测智能合约bug的工具。然而这些检测工具中的大部分误报率都很高,这 是由于复杂的路径约束导致的代码覆盖不完整或过度简化造成的。模糊测试是一种流行并且 有效的软件测试技术。然而,传统的模糊测试对于找出浅层bug更有效,而对于找出深埋 在执行过程中的bug就没有那么有效了。
本论文提出了CONFUZZIUS,一个混合模糊测试器,它结合了进化模糊测试和约束求解,以 执行更多的智能合约代码并找出更多的bug。进化模糊测试用于测试智能合约的浅层逻辑, 约束求解用于生成可以满足复杂条件的输入,从而得到更深入的测试路径。进一步我们使用 数据依赖分析来高效生成交易序列,以便找出可能存在bug的特定的合约状态。
通过将CONFUZZIUS与最先进的符号执行工具和模糊测试器进行比较,我们评估了所提出的 模糊测试策略的有效性。评估结果表明我们的混合模糊测试方法得到的结果远远超过了 最先进的符号执行工具和模糊测试器。