关键词:
区块链
智能合约漏洞检测
图神经网络
程序依赖图
图自编码器
摘要:
近年来,区块链技术取得了长足的发展。以太坊的诞生及其承载的智能合约的广泛应用,已使无数合约得到部署,并与大量虚拟资产紧密关联。同时,它的安全问题也日益凸显,尤其是智能合约中潜藏的各种漏洞,不仅导致了重大损失,还对整个区块链生态构成了严峻威胁,因此越来越多的人们开始关注其漏洞检测的相关问题。当前,国内外研究人员已提出许多智能合约漏洞检测方法,且在实践中取得了一定成效。但不论是沿用传统的安全分析方法,还是采用新兴的深度学习技术,现有的漏洞检测方案都暴露出各自的局限性:一方面,传统方法所使用的专家规则集等难以全面覆盖不断演进且日益复杂的合约漏洞类型,导致其准确率较低,并且扩展性不足;另一方面,大部分深度学习模型仅从单一视角对合约进行解析,即便部分图神经网络方法尝试采用多维度的策略来整合信息,在处理字节码转换得到的抽象图结构如控制流图时,仍面临特征提取不充分、完整性欠缺的问题,尤其是在捕捉那些隐藏在深层次逻辑关系中的漏洞特征时,效果不佳。
为解决上述问题,本文首先提出了一种运用智能合约字节码构建程序依赖图的图表示方法,旨在全面建模合约中各个函数内部及其相互之间的数据与控制依赖关系。在对原始字节码进行预处理时,构造详尽反映合约逻辑关联的程序依赖图,并在其基础上设计了一个预训练模型以验证该图表示方法的有效性。进一步地,由于程序依赖图中蕴含着丰富信息,针对基于多视角图自编码器的智能合约漏洞检测方法展开研究,旨在从局部结构特性、全局拓扑属性以及节点自身的特征表达三重视角捕获并学习程序依赖图中的关键特征,然后使用注意力机制对上述特征进行有效整合。最终,将融合后的特征同图卷积神经网络所提炼出的表示相结合用于智能合约漏洞检测。
本文在SmartBugs-Wild数据集的基础上进行了扩展和完善,以执行智能合约检测,并完成了对比实验及消融实验。对比实验结果证明,本文在程序依赖图基础上构建的多视角图自编码器模型相比于传统检测工具和其他深度学习方法,在准确率上实现了显著提升,在不同合约类别上的平均准确率达到96.04%,相较于其他方法提高了约6.63%;消融实验验证了程序依赖图设计、掩码方案选择以及多视角特征提取等的有效性。实验结果表明本文提出的图表示方法及检测模型优于其他研究方案。