关键词:
以太坊
智能合约
漏洞检测
多目标识别
集成学习
摘要:
近年来,区块链一直在蓬勃发展,并持续受到社会广泛关注。作为一种去中心化的系统架构,智能合约的出现让区块链具有用户定义的逻辑,大大增加了区块链的适用性。最近十年,以以太坊为代表的区块链平台在各种现实场景中的应用越来越多,包括能源交易和分配、金融市场和可信医疗等领域,其中智能合约作为以太坊的可执行应用,承载了巨大的经济价值。然而,区块链资源共享导致智能合约的安全问题频发,去中心化性质进一步加重了问题的严重性。因此,为了保证智能合约的安全可靠运行,在合约部署前,应对其安全风险进行评估。已有的自动化验证方法,面临覆盖率不足和维度爆炸等问题,使得它们在大规模智能合约上应用困难。基于数据驱动的方法在智能合约漏洞检测上取得了大幅的性能提升,但各种方法彼此之间复用率较低,并且特征具有饱和现象。本文的主要关注点是提高不同漏洞模型之间的复用率,改善合约漏洞特征的饱和问题进而提高智能合约漏洞审计的准确性和高效性。此外,本文也考虑多模型集成问题,提出了一种基于多目标识别和集成学习的智能合约漏洞检测方法。本文的主要研究工作和创新性成果如下:(1)从图像识别中受到启发,提出一种基于多目标识别技术的智能合约多重和潜在漏洞识别方法。将图像识别场景中的目标检测与识别方法扩展至智能合约漏洞检测。通过对EVM字节码预处理和符号执行技术的研究,提出了一种数据集优化方法,从冗长的操作码序列中提取只与漏洞相关的子序列,从而大幅降低特征数据维度和噪音。根据智能合约代码的使用情景,构建相应的停用词表,按属性和动作对操作码进行归类,并将其分别作为二维矩阵的两个维度构造共现矩阵,矩阵元素由对应操作码共现频率决定,共现频率由样本合约对应操作码出现次数决定,初步构建包含潜在漏洞特征的隐式特征矩阵。(2)通过对集成学习技术的研究,提出减少数据集依赖的集成学习模型。针对单一神经网络对数据量依赖,成本高等问题,构建结构新颖的集成学习模型,通过多轮交叉验证使每种模型从不同侧重点进行学习,丰富数据特征并提高数据利用率。针对混合模型简单叠加的问题,动态调整子模型在整体模型中的权重,实现降低子模型过拟合或欠拟合对集成模型性能影响的目的。为了进一步优化和处理操作码序列,引入了信息图,这有助于降低数据噪音和嵌入维度,改善无法提取隐式特征和特征提取不充分的问题。基于超过21000个样本合约,对该模型的有效性进行了验证。结果表明,在误差不变的情况下,集成学习不仅可以减少训练数据量的大小,而且可以有效地提高漏洞预测的准确性和健壮性。(3)基于以太坊上运行的现实世界的智能合约构建数据集,训练和测试模型,并对基于多目标识别和集成学习的智能合约漏洞检测系统的准确率、召回率以及F1得分进行评估,实验结果表明该系统具有良好的鲁棒性和泛化能力。