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、将智能合约输入预设的语义分析模型,以使所述语义分析模型对智能合约进行语义分析,得到智能合约的不变量;其中,所述语义分析模型包括:chatgpt模型。
19、作为优选方案,所述攻击交易的可执行路径和参数约束的生成,包括:
20、获取历史攻击交易的执行路径和对应的参数约束;
21、计算智能合约在被历史攻击交易攻击后的状态;
22、将智能合约在被历史攻击交易攻击后的状态输入预设的测试工具中,并将智能合约在被历史攻击交易攻击后所打破的不变量作为所述测试工具期望打破的不变量,根据历史攻击交易的执行路径和对应的参数约束生成攻击交易,继而根据所生成的攻击交易对智能合约进行攻击;
23、当确定智能合约在所述测试工具中被攻击后所打破的不变量与所述测试工具期望打破的不变量相同时,将历史攻击交易的执行路径作为攻击交易的可执行路径,将历史攻击交易对应的参数约束作为攻击交易的参数约束。
24、作为优选方案,当确定智能合约在所述测试工具中被攻击后所打破的不变量与所述测试工具期望打破的不变量相同时,还包括:
25、根据智能合约在所述测试工具中被攻击后所打破的不变量,确定所述不变量对应的过滤规则。
26、作为优选方案,所述测试工具包括以下任意一种:符号执行工具或模糊测试工具。
27、在上述实施例的基础上,本专利技术另一实施例提供了一种基于符号执行的智能合约模糊测试装置,包括:交易数据获取模块、不变量获取模块、攻击交易信息获取模块、比对模块以及漏洞修复处理模块;
28、所述交易数据获取模块,用于在智能合约运行时,获取待执行交易的交易数据;其中,所述交易数据包括:待执行交易中修改智能合约的状态变量的目标函数参数,以及待执行交易的执行路径;
29、所述不变量获取模块,用于获取所述状态变量对应的不变量,并判断所述目标函数参数是否满足所述不变量;其中,所述不变量为所述智能合约协议运行过程中应始终成立的条件表达式;
30、所述攻击交易信息获取模块,用于当确定所述目标函数参数不满足所述不变量时,获取所述不变量对应的攻击交易的可执行路径和参数约束;
31、所述比对模块,用于将待执行交易的执行路径与攻击交易的可执行路径进行比对,将待执行交易的目标函数参数与攻击交易的参数约束进行比对;当待执行交易的执行路径与攻击交易的可执行路径比对一致,且待执行交易的目标函数参数满足攻击交易的参数约束时,判断待执行交易为智能合约的攻击交易;
32、所述漏洞修复处理模块,用于获取所述不变量对应的过滤规则,根据所述过滤规则对待执行交易进行相应的漏洞修复处理。
33、相比于现有技术,本专利技术实施例具有如下有益效果:
34、在本专利技术中,当智能合约在链上运行时,获取待执行交易的交易数据;其中,所述交易数据包括:待执行交易中修改智能合约的状态变量的目标函数参数,以及待执行交易的执行路径;获取所述状态变量对应的不变量表达式,并判断所述目标函数参数是否满足所述不变量表达式;其中,所述不变量表达式为所述状态变量在正常状态下组成的表达式;当确定所述目标函数参数不满足所述不变量计算式时,获取所述不变量表达式对应的攻击交易的可执行路径和参数约束;将待执行交易的执行路径与攻击交易的可执行路径进行比对,将待执行交易的目标函数参数与攻击交易的参数约束进行比对;当待执行交易的执行路径与攻击交易的可执行路径比对一致,且待执行交易的目标函数参数满足攻击交易的参数约束时,判断待执行交易为智能合约的攻击交易;获取所述不变量表达式对应的处理规则,根据所述处理规则对待执行交易进行相应的漏洞修复处理。
35、通过本专利技术即可在智能合约运行时,识别智能合约上的待执行交易是否为攻击交易,继而对攻击交易进行相应的漏本文档来自技高网...
【技术保护点】
1.一种基于符号执行的智能合约模糊测试方法,其特征在于,包括:
2.如权利要求1所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述不变量的生成,包括:
3.如权利要求2所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述获取智能合约的不变量,包括:
4.如权利要求3所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述获取智能合约的不变量,还包括:
5.如权利要求4所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述攻击交易的可执行路径和参数约束的生成,包括:
6.如权利要求5所述的基于符号执行的智能合约模糊测试方法,其特征在于,当确定智能合约在所述测试工具中被攻击后所打破的不变量与所述测试工具期望打破的不变量相同时,还包括:
7.如权利要求1所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述测试工具包括以下任意一种:符号执行工具或模糊测试工具。
8.一种基于符号执行的智能合约模糊测试装置,其特征在于,包括:交易数据获取模块、不变量获取模块、攻击交易信息获取模块、比
...【技术特征摘要】
1.一种基于符号执行的智能合约模糊测试方法,其特征在于,包括:
2.如权利要求1所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述不变量的生成,包括:
3.如权利要求2所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述获取智能合约的不变量,包括:
4.如权利要求3所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述获取智能合约的不变量,还包括:
5.如权利要求4所述的基于符号执行的智能合约模糊测试方法,其特征在于,所述攻击交易的可执行路径...
【专利技术属性】
技术研发人员:苏申,王超,田志宏,鲁辉,孙彦斌,张乐君,
申请(专利权)人:广州大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。