关键词:
智能合约
漏洞检测
深度学习
注意力机制
摘要:
近些年,区块链技术作为一种新兴技术在互联网领域呈爆发式发展,其应用场景日益广泛,在数字货币金融等领域显示出重要作用。然而,随着区块链系统的不断扩大和新的区块链应用落地,针对区块链智能合约的攻击事件也逐渐增多。这些安全事件不仅给区块链用户造成巨大经济损失,引发了对区块链的信任危机,并且严重威胁了区块链生态系统的安全。由于区块链技术不可篡改的特点,一旦智能合约中存在漏洞并被黑客利用,将带来无法估计和不可逆转的后果,因此,在部署智能合约之前保证其不存在漏洞至关重要。
为了维护区块链系统的安全稳定,降低智能合约被攻击的风险,一些研究人员积极研发智能合约漏洞检测工具,试图在合约部署之前发现其中漏洞。这些工具大多基于传统的模式匹配、模糊测试、符号执行的方法,但是,这些方法普遍存在自动化程度低、检测时间长、检测准确度不高等问题。为了克服这些传统方法的缺点,一些专家提出了采用机器学习、深度学习的方法。然而,现有的方法仍存在检测的漏洞类型少的问题,并且现有的工作缺少公开的带有漏洞标注的智能合约数据集,这给使用机器学习技术检测智能合约漏洞带来了很大的挑战。
为了解决上述机器学习和深度学习方法中存在的问题,本文提出了一种基于深度学习的智能合约漏洞检测方法,旨在部署智能合约之前检测其中漏洞,从而确保区块链系统的安全性。本文构建了多种深度学习模型,分别训练和测试这些模型,最终选取性能最优的Bi LSTM-Attention模型作为该方法的检测模型。Bi LSTM-Attention模型是深度学习组合模型,它在保证高准确度和高效率检测智能合约的同时,扩大了漏洞检测的范围。Bi LSTM-Attention模型结合了长短期记忆网络(LSTM)和注意力机制(Attention),将智能合约的opcode视作数字语句,充分发挥了LSTM在处理文本数据方面的优势。并且,该模型引入了注意力机制,能够更加有效地捕捉包含漏洞的代码片段,从而提高模型的整体性能。此外,本文构建了一个带有漏洞标注的真实可信的智能合约数据集,该数据集为本文开展研究提供了良好的基础。本文的主要工作如下:
1.提出了采用深度学习的方法检测智能合约漏洞,该方法使用组合式Bi LSTMAttention模型,从智能合约字节码级别分析合约漏洞,实现了高准确度和高效率的漏洞检测。该方法支持检测11种对区块链系统危害较大的智能合约漏洞,扩大了漏洞检测的范围。同时该方法检测时间极短,仅需不到0.01秒即可检测单个智能合约,与传统的模糊测试等方法相比,极大地提高了检测效率,能够实现短时间内检测大批量智能合约。此外,该方法具有较高的自动化程度,能够节省人工所需的成本,并减少人为因素造成的误报问题。
2.构建了一个带有漏洞标注的真实世界的智能合约数据集,解决了当前智能合约数据集稀缺的问题。可信数据集是采用深度学习方法检测智能合约漏洞的基础。本文从真实世界获取45622个Solidity语言编写的智能合约源代码,使用多种漏洞检测工具标注漏洞,并通过随机人工审查来验证漏洞标注的准确性,其准确率为100%。之后,对智能合约源代码预处理获取智能合约操作码(opcode),并结合漏洞标注构建了智能合约数据集。
3.通过四组对比实验来验证最优深度学习Bi LSTM-Attention模型的性能,证明了该模型的优越性。首先,本文使用六种智能合约数据集测试Bi LSTM-Attention模型,获取其最佳性能。其次,使用多种单一深度学习模型与Bi LSTM-Attention模型对比,结果表明该模型相比于单一的深度学习模型在检测性能上有显著的提高。然后,使用不同种类的组合模型与之比较,观察不同组合模型之间的性能差异,实验结果表明该模型在组合模型中的表现最佳。根据测试结果显示,Bi LSTM-Attention模型的检测准确度高达95.40%,F1-score高达95.38%,相较于其他单一深度学习模型和组合深度学习模型,性能有明显优势。最后,为了验证该模型的真实可行性,本文与目前区块链安全研究中检测性能优异的智能合约漏洞检测工具Confuzzius进行比较,实验结果同样展示了Bi LSTM-Attention模型在检测性能上的优势,其检测准确度和F1-score均在98%以上。