System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及网络安全,特别涉及一种智能合约漏洞检测方法、装置、设备及存储介质。
技术介绍
1、区块链作为一种交易媒介,能让信息透明,不可篡改,通过精确设计的共识协议(如工作量证明),能够确保交易安全,并巧妙地管理交易单元的创建。而区块链平台能够实现网络实体间的无信任价值转移,使开发者有能力提供智能合约(一种智能程序),从而开创了去中心化可编程交易的新时代。
2、然而,运行在区块链平台上的智能合约,旨在使用预先定义的规则控制数字资产,通常涉及较大金额的加密货币价值,因此不可避免地吸引了黑客的注意,其安全问题已经导致了巨大的经济损失。另外,智能合约一旦部署,就不能简单地修改,其缺陷是不可逆转的,除非区块链本身被逆转,这一过程需要控制网络的大部分计算能力,因此为了降低安全风险,需要在区块链平台上启动智能合约之前对其进行漏洞检测。
3、目前,主流的智能合约漏洞检测方案采用的是深度学习技术,并在分析智能合约的源代码时,将其表示为文本序列、树或图,如通过tmp(消息传输协议,time messagingprotocol)、bi-rnn(双向循环神经网络,bidirectional recurrent neural network)、gcn(图卷积神经网络,graph convolutional network)等深度学习网络,并基于图类数据的方式对智能合约进行漏洞检测。然而,各种类型的深度学习网络虽然在智能合约漏洞检测中各具优势,但在数据流图简化、模型复杂度、图结构处理复杂性以及跨模态学习的计算成本等方面存在技术缺陷,
4、另外,当前大部分的漏洞检测方法是基于源代码进行检测的,但在实际场景中,如区块链平台上,开发者一般不会将其源代码进行开源操作,从而给智能合约漏洞检测带来了巨大挑战,使得检测者只能通过分析底层字节码来进行漏洞检测任务,但从字节码中恢复控制流和数据流的语义信息是非常困难的,从而影响了检测的效率和准确性。
技术实现思路
1、有鉴于此,本申请的目的在于提供一种智能合约漏洞检测方法、装置、设备及存储介质,能够更全面和准确地表示智能合约的特征,减少漏洞检测的复杂性,实现对细粒度特征的提取和利用,显著提升漏洞检测的准确性和全面性,并提高了检测效率以及智能合约的安全性和可靠性,增强了用户信任,并在缺少源代码的情况下,依然能够高效且准确地完成智能合约漏洞检测任务。其具体方案如下:
2、第一方面,本申请公开了一种智能合约漏洞检测方法,应用于区块链平台,包括:
3、获取待检测智能合约的源代码,得到当前源代码,并将所述当前源代码转换为字节码,得到当前字节码;
4、将所述当前字节码输入至训练后的字节码网络中,以对所述当前字节码进行特征提取,得到字节码特征;所述字节码网络为利用历史字节码数据集对基于bert模型和dr-gcn模型进行训练后得到的模型;
5、将所述字节码特征和历史融合后特征输入至训练后合约漏洞检测模型中,以对所述待检测智能合约中的漏洞进行检测,得到合约漏洞检测结果;所述历史融合后特征为对节点特征和边特征进行融合后得到的特征,所述节点特征和所述边特征为对基于历史智能合约数据集创建的多尺度特征图中的节点和边进行特征提取后得到的特征;所述训练后合约漏洞检测模型为利用所述历史智能合约数据集对基于多头注意力机制的bilstm模型进行训练后得到的模型。
6、可选的,所述获取待检测智能合约的源代码,得到当前源代码之前,还包括:
7、采集不同类型的历史智能合约,得到历史智能合约数据集,并分别获取所述历史智能合约数据集中各历史智能合约的源代码,得到多个历史源代码;
8、将各所述历史源代码转换为图数据格式,以得到包含抽象语法树、控制流图和数据流图的多尺度特征图;
9、分别对所述多尺度特征图中的节点和边进行特征提取,得到节点特征和边特征;
10、将所述节点特征和所述边特征进行特征融合,得到所述历史融合后特征。
11、可选的,所述将各所述历史源代码转换为图数据格式,以得到包含抽象语法树、控制流图和数据流图的多尺度特征图,包括:
12、按照代码的语法结构将各所述历史源代码转换为抽象语法树;
13、基于所述抽象语法树生成各所述历史源代码的控制流图和数据流图,并将所述抽象语法树、所述控制流图和所述数据流图进行整合,得到所述多尺度特征图。
14、可选的,所述基于所述抽象语法树生成各所述历史源代码的控制流图和数据流图,包括:
15、对所述抽象语法树进行深度优先搜索,以遍历和搜索所述抽象语法树中的各个节点,并在遍历过程中丢弃与漏洞检测无关的节点,得到搜索后语法树;
16、对所述搜索后语法树进行广度优先搜索,以遍历和搜索所述搜索后语法树中的各个节点,并在遍历过程中分别按照所述历史源代码的执行顺序和所述历史源代码中的信息流在所述搜索后语法树中的不同节点之间添加边,得到控制流图和数据流图。
17、可选的,所述分别对所述多尺度特征图中的节点和边进行特征提取,得到节点特征和边特征,包括:
18、识别所述多尺度特征图中的节点和边,得到节点集和边集;
19、利用word2vec模型对所述节点集中的节点进行初始化,得到初始化后节点,并利用度中心性指标对所述边集中的边进行初始化,得到初始化后边;
20、利用递归神经网络对所述多尺度特征图中的所述初始化后节点进行特征提取,得到节点特征,并通过多头注意力机制对所述多尺度特征图中的所述初始化后边进行特征提取,得到边特征。
21、可选的,所述将所述节点特征和所述边特征进行特征融合,得到所述历史融合后特征,包括:
22、分别对所有所述节点特征和所有所述边特征进行特征聚合,得到聚合后节点特征和聚合后边特征;
23、将所述聚合后节点特征和聚合后边特征进行特征融合,得到所述历史融合后特征。
24、可选的,所述智能合约漏洞检测方法,还包括:
25、将所述历史智能合约数据集中所有历史智能合约的源代码转换为字节码,得到历史字节码数据集;
26、将所述历史字节码数据集输入至基于bert模型和dr-gcn模型中进行训练,得到所述字节码网络,并将训练过程中所述字节码网络输出的历史字节码特征及所述历史融合后特征输入至基于多头注意力机制的bilstm模型中进行训练,得到所述训练后合约漏洞检测模型。
27、第二方面,本申本文档来自技高网...
【技术保护点】
1.一种智能合约漏洞检测方法,其特征在于,应用于区块链平台,包括:
2.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述获取待检测智能合约的源代码,得到当前源代码之前,还包括:
3.根据权利要求2所述的智能合约漏洞检测方法,其特征在于,所述将各所述历史源代码转换为图数据格式,以得到包含抽象语法树、控制流图和数据流图的多尺度特征图,包括:
4.根据权利要求3所述的智能合约漏洞检测方法,其特征在于,所述基于所述抽象语法树生成各所述历史源代码的控制流图和数据流图,包括:
5.根据权利要求4所述的智能合约漏洞检测方法,其特征在于,所述分别对所述多尺度特征图中的节点和边进行特征提取,得到节点特征和边特征,包括:
6.根据权利要求5所述的智能合约漏洞检测方法,其特征在于,所述将所述节点特征和所述边特征进行特征融合,得到所述历史融合后特征,包括:
7.根据权利要求6所述的智能合约漏洞检测方法,其特征在于,还包括:
8.一种智能合约漏洞检测装置,其特征在于,应用于区块链平台,包括:
9.一种
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的智能合约漏洞检测方法。
...【技术特征摘要】
1.一种智能合约漏洞检测方法,其特征在于,应用于区块链平台,包括:
2.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述获取待检测智能合约的源代码,得到当前源代码之前,还包括:
3.根据权利要求2所述的智能合约漏洞检测方法,其特征在于,所述将各所述历史源代码转换为图数据格式,以得到包含抽象语法树、控制流图和数据流图的多尺度特征图,包括:
4.根据权利要求3所述的智能合约漏洞检测方法,其特征在于,所述基于所述抽象语法树生成各所述历史源代码的控制流图和数据流图,包括:
5.根据权利要求4所述的智能合约漏洞检测方法,其特征在于,所述分别对所述多尺度特征图中的节点和边进行特征提取,得到节点特征和...
【专利技术属性】
技术研发人员:王斌,刘华,
申请(专利权)人:江苏安恒网络安全有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。