关键词:
区块链
智能合约
漏洞检测
图神经网络
模糊测试
摘要:
随着区块链技术的广泛使用,智能合约携带的数字资产激增。巨额的数字资产吸引了黑客的觊觎,妄图攻击智能合约,以非法获得经济利益。而智能合约中的漏洞给予黑客窃取数字资产的途径,导致安全事件频发、经济损失严重。若能在智能合约部署至区块链之前发现漏洞,则可及时修复,避免被黑客利用。
近年来,深度学习和模糊测试方法已被应用于智能合约漏洞检测领域。基于深度学习的智能合约漏洞检测方法围绕智能合约的特征提取与分析展开研究,而基于模糊测试的智能合约漏洞检测方法则着重于产生高覆盖率的测试用例。然而,相关研究依然存在一定的不足:基于深度学习的智能合约漏洞检测,过于关注深度学习模型的优化,但特征提取方法却相对粗糙,缺乏深度。基于模糊测试的智能合约漏洞检测,盲目追求测试用例覆盖率,然而,以覆盖率为导向的模糊测试工具不仅达不到相对高的覆盖率,还伴随着较高的时空开销。这些不足影响了检测结果的准确率。
针对上述问题,本文分别提出了基于图神经网络(Graph Nerual Network,GNN)和基于模糊测试的两种优化的智能合约漏洞检测新方法。
具体研究工作如下:
(1)提出了Contract GNN——基于图神经网络和漏洞子图的智能合约漏洞检测方法。该方法将新的概念漏洞子图(Vulnerability Sub-graph,VSG)与图神经网络相结合,以检测智能合约漏洞。首先,提出了VSG的概念,用于智能合约漏洞检测。与传统方法相比,利用VSG进行检测更加深入,因为VSG去除了控制流图(Control Flow Graph,CFG)中与漏洞无关的节点。其次,VSG中的直路径和环路径可以被聚合和简化,从而提高了神经网络中消息传递的效率。然后,设计了一种新的特征提取方法,在保留智能合约的语义信息、操作码顺序以及控制流的基础上,实现了更为准确的智能合约特征提取。最后,比较了五种GNN分类模型,并选择了最合适的模型来实现Contract GNN。为了评估Contract GNN的性能,本文收集并测试了58,190份真实的以太坊智能合约;并且,实验结果表明,Contract GNN可以精准地检测智能合约漏洞,其平均F1值达到了89.70%。
(2)提出了SIFuzz:基于语义信息引导模糊测试的智能合约漏洞检测方法。与传统思想不同,本文尝试对模糊器进行引导,定向地产生容易触发漏洞的高质量测试用例。SIFuzz由引导器和模糊器两部分组成。引导器:在函数层面,构造了函数调用关系图,并对其进行简化和静态分析来定位检测的目标函数,确保模糊器仅针对可能触发漏洞的函数产生测试用例。在语句层面,首先,构造了函数的输入空间。而后,提出了“空间压缩”、“空间分裂”和“空间简化”的方法,利用语义信息对输入空间进行优化。最后,为了分析输入空间的复杂程度,SIFuzz给每个输入空间打分,并根据得分给每个输入空间赋予权重。模糊器:首先,根据输入空间的权重的不同,产生不同数量的测试用例,使更多的测试用例覆盖到可能存在漏洞的空间。其次,根据输入空间的权重,确定输入空间的检测顺序,确保模糊器更快地检测到智能合约漏洞。最后,产生大量测试用例进行漏洞检测,并生成漏洞检测报告。为了评估SIFuzz的性能,本文收集并测试了20,184份真实的以太坊智能合约;并且,实验结果表明,具有语义引导的SIFuzz可以精准地检测智能合约漏洞,其平均F1值超过了99.97%。