System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术一般涉及区块链,具体涉及一种智能合约漏洞检测方法、装置、设备及存储介质。
技术介绍
1、随着区块链技术的快速发展,智能合约作为区块链技术中的一个重要的分支,由于其具有去中心化、不可篡改和可追溯等特性,已经广越来越广泛地应用于金融、管理、医疗、互联网和供应链等领域。其中,智能合约由于区块链不可篡改的特性,部署到区块链上的智能合约不可更改。为了提高智能合约的安全性,防止智能合约出现整数溢出、短地址攻击、伪随机等问题,在合约部署之前需要对合约进行漏洞检测显得尤为重要。
2、目前,相关技术中通过对智能合约进行静态分析得到运行结果,例如可以采用针对智能合约的符号执行工具oyente进行静态分析,并根据运行结果发掘智能合约的漏洞。然而该方案中由于漏洞代码只占整个智能合约的极小部分,需要对智能合约进行全面查找以分析漏洞导致耗费大量的时间,降低了漏洞检测效率。
技术实现思路
1、鉴于现有技术中的上述缺陷或不足,期望提供一种智能合约漏洞检测方法、装置、设备及存储介质,能够有效提高待检测智能合约的漏洞检测准确度,减少了消耗在无漏洞的执行路径上的检测时间,提高了漏洞检测效率。所述技术方案如下:
2、根据本申请的一个方面,提供了一种智能合约漏洞检测方法,该方法包括:
3、获取待检测智能合约,确定待检测智能合约的多个执行路径;执行路径包括至少一个用于执行待检测智能合约的代码块;
4、将待检测智能合约输入预测网络中,得到待检测智能合约中的预测漏洞代码块
5、根据预测漏洞代码块确定多个执行路径中的候选执行路径;候选执行路径为包含预测漏洞代码块的执行路径;
6、对候选执行路径进行漏洞检测,获得漏洞检测结果。
7、在其中一个实施例中,将待检测智能合约输入预测网络中,得到待检测智能合约中的预测漏洞代码块,包括:
8、对待检测智能合约进行划分,得到待检测智能合约的多个代码块;
9、利用预测网络对待检测智能合约的每一代码块进行漏洞概率预测,获得待检测智能合约的每一代码块存在漏洞的概率值;
10、根据待检测智能合约的每一代码块存在漏洞的概率值,确定待检测智能合约中的预测漏洞代码块。
11、在其中一个实施例中,对待检测智能合约进行划分,得到待检测智能合约的多个代码块,包括:
12、对待检测智能合约进行编译处理,得到待检测智能合约的字节码;
13、对字节码进行切割处理,得到待检测智能合约的多个代码块。
14、在其中一个实施例中,预测网络的训练过程包括:
15、获取样本智能合约,样本智能合约包括的样本代码块标注有对应的漏洞分类结果;
16、基于样本智能合约和漏洞分类结果训练预测网络。
17、在其中一个实施例中,基于样本智能合约和漏洞分类结果训练预测网络,包括:
18、对样本智能合约进行分析处理,得到样本智能合约的多个样本代码块;
19、对多个样本代码块中的每个样本代码块进行预处理,得到每个样本代码块对应的特征矩阵;
20、将特征矩阵输入初始预测网络中,得到每个样本代码块存在漏洞的预测值;
21、根据每个样本代码块存在漏洞的预测值与漏洞分类结果,计算损失函数,按照损失函数最小化,采用迭代算法迭代调整初始预测网络的参数,得到预测网络。
22、在其中一个实施例中,对多个样本代码块中的每个样本代码块进行预处理,得到每个样本代码块对应的特征矩阵,包括:
23、对于每个样本代码块,利用词法分析转换处理为多个单词序列;
24、将多个单词序列中的每个单词序列进行向量化处理,得到对应的多个词向量;
25、对多个词向量进行组合处理,得到每个样本代码块对应的特征矩阵。
26、在其中一个实施例中,对候选执行路径进行漏洞检测,获得漏洞检测结果,包括:
27、根据候选执行路径中每一代码块存在漏洞的概率值,确定候选执行路径的优先级系数;
28、基于各候选执行路径的优先级系数从高到低的顺序,对各候选执行路径进行漏洞检测,得到漏洞检测结果。
29、在其中一个实施例中,根据候选执行路径中每一代码块存在漏洞的概率值,确定候选执行路径的优先级系数,包括:
30、对候选执行路径中每一代码块存在漏洞的概率值进行加权求和处理,得到候选执行路径的优先级系数,或者,
31、确定候选执行路径中代码块存在漏洞的概率值中的最大概率值,基于最大概率值确定候选执行路径的优先级系数。
32、在其中一个实施例中,对候选执行路径进行漏洞检测,获得漏洞检测结果,包括:
33、对候选执行路径中的代码块以及相邻代码块之间的约束条件进行符号转化处理,得到候选执行路径的符号处理结果;
34、基于符号处理结果进行漏洞检测,获得漏洞检测结果。
35、根据本申请的另一方面,提供了一种智能合约漏洞检测装置,该装置包括:
36、执行路径确定模块,用于获取待检测智能合约,确定所述待检测智能合约的多个执行路径;所述执行路径包括至少一个用于执行所述待检测智能合约的代码块;
37、预测模块,用于将所述待检测智能合约输入预测网络中,得到所述待检测智能合约中的预测漏洞代码块;
38、候选路径确定模块,用于根据所述预测漏洞代码块确定所述多个执行路径中的候选执行路径;所述候选执行路径为包含所述预测漏洞代码块的执行路径;
39、检测模块,用于对所述候选执行路径进行漏洞检测,获得漏洞检测结果。
40、根据本申请的另一方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现如上述的智能合约漏洞检测方法。
41、根据本申请的另一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序用于实现如上述的智能合约漏洞检测方法。
42、根据本申请的另一方面,提供了一种计算机程序产品,其上包括指令,该指令被执行时实现如上述的智能合约漏洞检测方法。
43、本申请实施例中提供的智能合约漏洞检测方法、装置、设备及存储介质,通过获取待检测智能合约,确定待检测智能合约的多个执行路径,该执行路径包括至少一个用于执行待检测智能合约的代码块,将待检测智能合约输入预测网络中,得到待检测智能合约中的预测漏洞代码块,然后根据预测漏洞代码块确定多个执行路径中的候选执行路径,并对候选执行路径进行漏洞检测,获得漏洞检测结果。本申请中的技术方案相比于现有技术而言,一方面,通过获取待检测智能合约,能够全面地确定到待智能合约可能存在漏洞的多个执行路径,在得到多个执行路径这一指导信息后通过预测网络对待检测智能合约进行漏洞预测,能够更精细地对用于执行待检测智能合约的代码块进行漏洞检测,从而更精准地确定出存在漏洞的预测漏洞本文档来自技高网...
【技术保护点】
1.一种智能合约漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,将所述待检测智能合约输入预测网络中,得到所述待检测智能合约中的预测漏洞代码块,包括:
3.根据权利要求2所述的方法,其特征在于,对所述待检测智能合约进行划分,得到所述待检测智能合约的多个代码块,包括:
4.根据权利要求2所述的方法,其特征在于,所述预测网络的训练过程包括:
5.根据权利要求4所述的方法,其特征在于,基于所述样本智能合约和所述漏洞分类结果训练所述预测网络,包括:
6.根据权利要求5所述的方法,其特征在于,对所述多个样本代码块中的每个样本代码块进行预处理,得到每个样本代码块对应的特征矩阵,包括:
7.根据权利要求2所述的方法,其特征在于,对所述候选执行路径进行漏洞检测,获得漏洞检测结果,包括:
8.根据权利要求7所述的方法,其特征在于,根据所述候选执行路径中每一代码块存在漏洞的概率值,确定所述候选执行路径的优先级系数,包括:
9.根据权利要求1-8任一项所述的方法,其特征在于,对所述
10.一种智能合约漏洞检测装置,其特征在于,所述装置包括:
11.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器用于执行所述程序时实现如权利要求1-9任一项所述的智能合约漏洞检测方法。
12.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序用于实现如权利要求1-9任一项所述的智能合约漏洞检测方法。
13.一种计算机程序产品,其特征在于,所述计算机程序产品中包括指令,当所述指令被执行时实现如权利要求1-9任一项所述的智能合约漏洞检测方法。
...【技术特征摘要】
1.一种智能合约漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,将所述待检测智能合约输入预测网络中,得到所述待检测智能合约中的预测漏洞代码块,包括:
3.根据权利要求2所述的方法,其特征在于,对所述待检测智能合约进行划分,得到所述待检测智能合约的多个代码块,包括:
4.根据权利要求2所述的方法,其特征在于,所述预测网络的训练过程包括:
5.根据权利要求4所述的方法,其特征在于,基于所述样本智能合约和所述漏洞分类结果训练所述预测网络,包括:
6.根据权利要求5所述的方法,其特征在于,对所述多个样本代码块中的每个样本代码块进行预处理,得到每个样本代码块对应的特征矩阵,包括:
7.根据权利要求2所述的方法,其特征在于,对所述候选执行路径进行漏洞检测,获得漏洞检测结果,包括:
8.根据权利要求7所...
【专利技术属性】
技术研发人员:郑伟林,
申请(专利权)人:腾讯科技深圳有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。