关键词:
智能合约
模糊测试
安全漏洞
马尔科夫决策
神经网络
摘要:
随着区块链技术的不断突破与革新,智能合约作为其不可或缺的核心组成部分,正在各个领域中展现出广阔的应用前景。智能合约的安全性是区块链应用的关键问题之一,模糊测试是以太坊智能合约领域中主流的动态安全测试技术,通过生成大量测试用例并执行以发现漏洞。然而,现有的智能合约模糊测试漏洞检测工具在合约执行的深层路径覆盖方面表现不足,未能有效覆盖合约执行的核心路径。此外,还面临着模糊测试空间易爆炸的问题。同时,部分方法在测试预言的准确性方面存在不足,导致误报和漏报现象频发。为了解决以上问题,本文开展了基于模糊测试的智能合约安全性分析技术研究,主要研究内容如下:
(1)针对合约漏洞的判断精准度不高的问题,构建了针对十二种漏洞类型的漏洞预言库。该方法通过对特定漏洞的特征进行深入的分析,收集和整理漏洞合约的特征,以实现更高精度的漏洞发现和判定。
(2)针对合约执行深层路径覆盖低的问题,提出了一种基于MDP和模拟退火算法的智能合约模糊测试方法,即VMFUZZ。该方法首先将智能合约的执行过程建模为马尔科夫决策过程(Markov Decision Process,MDP),然后结合模拟退火算法,生成易触发漏洞的交易序列,以全面覆盖合约执行情况。最后,通过模糊测试生成大量新的测试用例,检测漏洞。实验结果表明,VMFUZZ在代码覆盖率方面对比ILF得到了提升,在漏洞检测能力方面具有更高的检出率。
(3)针对模糊测试空间爆炸的问题,提出了一种基于高风险种子动态调度的漏洞检测方法,即ENFUZZ。通过动静态数据流分析和马尔可夫决策过程的融合,解决了现有智能合约漏洞检测工具的低效、冗余信息和模糊测试空间爆炸的问题。该方法首先利用静态分析技术挖掘漏洞特征。然后,使用高风险种子动态调度算法对可能含有漏洞的函数进行定位。并通过引入注意力机制和奖励机制,来指导生成包含漏洞特征约束的交易序列,减少状态爆炸。最后,通过构建漏洞标记的控制流图来展示漏洞触发的路径。在实验中,ENFUZZ对Smart Bugs数据集中的50个小型和大型合约进行了训练集评估,对比ILF分别提高了约1.578倍和1.861倍的时间效率,以及覆盖率也得到了提升。ENFUZZ与其他先进工具在Smart Bugs数据集上的比较结果显示,ENFUZZ工具具有更高的检出率,同时表现出较低的FN(False Negative),证实了其在减少状态爆炸方面的有效性。随后进一步验证了在实际的以太坊区块链平台上的表现,ENFUZZ发现并确认了37个漏洞,包括8种不同类型。并且针对其中一个漏洞,设计了攻击合约,成功利用时间戳漏洞揭示了该漏洞对项目的潜在威胁。