System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及区块链,尤其涉及一种基于区块链的合约漏洞检测方法及相关设备,具体涉及一种基于区块链的合约漏洞检测方法、一种基于区块链的合约漏洞检测装置、一种计算机设备、一种计算机可读存储介质,一种计算机程序产品。
技术介绍
1、区块链技术中,智能合约作为一种旨在以信息化方式传播、验证或执行的计算机协议,为各类分布式应用服务提供了基础。由于智能合约本身编程语言在设计、编写中可能存在的安全设计缺陷以及合约工作过程的复杂性,为智能合约的安全性带来了巨大的风险和隐患。
2、目前,智能合约的安全检测技术中,通过主动扫描智能合约代码库的方式来进行的。例如,将所有需要进行检测的智能合约的代码托管或上传到安全检测平台中,安全检测平台对智能合约的代码进行全量扫描,若从智能合约的代码中扫描到漏洞,则向合约管理对象报告智能合约的漏洞。由于每一个智能合约在进行安全检测时都需要拉取完整代码进行全量扫描,造成智能合约的漏洞检测效率过低。
技术实现思路
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、其中,合约类型确定模块根据检索成功结果确定链上智能合约对应的合约本文档来自技高网...
【技术保护点】
1.一种基于区块链的合约漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述获取目标区块中的交易对应的第一合约地址,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述交易中的合约部署地址,以及所述合约部署地址对应的随机值,生成所述交易对应的第一合约地址,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述链上智能合约的二进制代码,确定所述链上智能合约对应的合约类型,包括:
5.根据权利要求4所述的方法,其特征在于,所述对所述链上智能合约的二进制代码进行合约升级接口检索,得到所述链上智能合约对应的升级接口检索结果,根据所述升级接口检索结果确定所述链上智能合约对应的合约类型,包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述检索失败结果确定所述链上智能合约对应的合约类型,包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.根据权利要求5所述的方法,其特征在于,所述根据所述检索成功结果确定所述链上智能合约对应的合约类型,包
9.根据权利要求1所述的方法,其特征在于,所述根据所述第二逻辑合约地址和所述交易,更新所述历史升级缓存记录,包括:
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
12.根据权利要求1所述的方法,其特征在于,所述根据所述第一逻辑合约地址对应的逻辑合约与所述第二逻辑合约地址对应的逻辑合约,确定所述第二逻辑合约地址关联的合约优化类型,包括:
13.根据权利要求12所述的方法,其特征在于,所述根据所述第一扫描结果集合和所述第二扫描结果集合,确定所述第二源代码文件对应的合约优化类型,包括:
14.根据权利要求1所述的方法,其特征在于,所述在区块链网络中确定与所述第一逻辑合约地址对应的逻辑合约相似的已部署合约,包括:
15.根据权利要求1所述的方法,其特征在于,所述已部署合约的数量为N个,N为大于1的整数;
16.一种基于区块链的合约漏洞检测装置,其特征在于,包括:
17.一种计算机设备,其特征在于,包括存储器和处理器;
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1至15任一项所述的方法。
19.一种计算机程序产品,其特征在于,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现权利要求1至15任一项所述的方法。
...【技术特征摘要】
1.一种基于区块链的合约漏洞检测方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述获取目标区块中的交易对应的第一合约地址,包括:
3.根据权利要求2所述的方法,其特征在于,所述根据所述交易中的合约部署地址,以及所述合约部署地址对应的随机值,生成所述交易对应的第一合约地址,包括:
4.根据权利要求1所述的方法,其特征在于,所述根据所述链上智能合约的二进制代码,确定所述链上智能合约对应的合约类型,包括:
5.根据权利要求4所述的方法,其特征在于,所述对所述链上智能合约的二进制代码进行合约升级接口检索,得到所述链上智能合约对应的升级接口检索结果,根据所述升级接口检索结果确定所述链上智能合约对应的合约类型,包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述检索失败结果确定所述链上智能合约对应的合约类型,包括:
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
8.根据权利要求5所述的方法,其特征在于,所述根据所述检索成功结果确定所述链上智能合约对应的合约类型,包括:
9.根据权利要求1所述的方法,其特征在于,所述根据所述第二逻辑合约地址和所述交易,更新所述历史升级缓存记录,包括:
10.根据权利要求9所述的方法,其特征在...
【专利技术属性】
技术研发人员:毛嘉宇,范瑞彬,张开翔,张龙,储雨知,王越,
申请(专利权)人:深圳前海微众银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。