本发明涉及软件测试,具体为一种基于混合模糊测试的智能合约安全检测方法。
背景技术:
1、智能合约模糊测试是一种软件测试技术,旨在发现智能合约(即自动执行的合约代码,常用于区块链技术中)中潜在的漏洞和错误。模糊测试通过自动或半自动地生成大量随机的,或者经过特别设计的输入数据来测试智能合约的鲁棒性,尝试引发异常或崩溃行为,从而揭露可能存在的安全问题。
2、模糊测试作为一种软件测试方法,其核心在于生成适当的输入数据以提高程序的代码覆盖率,进而尽可能探测更多的程序状态和代码片段。现有的模糊测试技术努力通过生成少量高质量的输入样本来实现较高的状态覆盖率,特别是在依靠随机化输入的情况下,模糊测试难以准确快速地发现智能合约中的隐蔽漏洞或诱导错误的执行路径,尤其是在需要快速迭代与部署智能合约的高压环境中,这一点尤为明显。此外,智能合约的参数多样性与区块链动态交互的复杂性进一步降低了随机化输入的有效性。在需要快速部署以满足紧迫时间框架要求的场合,必须提高测试效率以保证及时上线。
3、模糊测试用例的传统量化指标包括代码覆盖率和路径覆盖率,它们虽然在初步评估中有其价值,但它们往往无法全面捕捉所有潜在的程序缺陷。这一点在不急于完成测试的情况下格外明显,虽然时间充足,但对测试用例质量的要求非常高,特别是在安全性至关重要的应用场景中。
技术实现思路
1、针对现有技术的不足,本发明提供了一种基于混合模糊测试的智能合约安全检测方法,通过采用了有效且系统的安全检测手段,能够显著提升智能合约的安全等级,为其在各个应用领域的安全运行提供了牢固的保障。
2、为实现以上目的,本发明通过以下技术方案予以实现:一种基于混合模糊测试的智能合约安全检测方法,包括以下步骤:
3、s1、个体生成,根据智能合约的abi码获取类型信息,设计不同的有效值,维护每个个体的二进制字符串,表示操作码的执行情况;
4、s2、个体选择,根据个体的二进制字符串和覆盖率计算适应度值,使用轮盘赌算法选择个体;
5、s3、执行路径生成,模拟evm执行过程,引入存储模拟器和符号污点分析技术生成执行路径;
6、s4、执行路径分析,包括中断分析、漏洞检测和覆盖率计算;
7、s5、符号执行和约束求解,通过符号执行和约束求解技术生成满足特定条件的解;
8、s6、个体交叉和变异,对个体进行交叉和变异操作,更新个体池;
9、s7、生成漏洞报告,提供给用户反馈。
10、优选的,所述s1步骤个体生成具体包括以下步骤:
11、s1.1、根据智能合约的abi码获取参数类型信息;
12、s1.2、针对不同的参数类型设计不同的有效值,以覆盖不同的边界情况和可能的漏洞点;
13、s1.3、维护每个个体的二进制字符串,表示操作码的执行情况。
14、优选的,所述s2步骤个体选择具体包括以下步骤:
15、s2.2、根据个体的二进制字符串和覆盖率计算适应度值;
16、s2.3、使用轮盘赌算法选择个体。
17、优选的,所述s3步骤执行路径生成具体包括以下步骤:
18、s3.1、模拟evm执行过程;
19、s3.2、引入存储模拟器和符号污点分析技术;
20、s3.3、根据个体的二进制字符串,按顺序执行对应的操作码;
21、s3.4、使用存储模拟器记录存储的读写操作;
22、s3.5、使用符号污点分析技术标记感兴趣的数据为符号值,并跟踪其在程序指令间的传播。
23、优选的,所述s4步骤执行路径分析具体包括以下步骤:
24、s4.1、进行中断分析,判断执行路径是否以revert、invalid或assertfail指令结束,筛选有效的测试输入;
25、s4.2、进行漏洞检测,根据不同的漏洞类型设计相应的检测算法;
26、s4.3、进行覆盖率计算,统计执行路径中执行的操作码数量。
27、优选的,所述s5步骤符号执行和约束求解具体包括以下步骤:
28、s5.1、在符号执行过程中,通过替换输入参数为符号值,并跟踪污点传播路径在程序指令间的传播,生成符号值的污点传播路径;
29、s5.2、根据执行路径上的指令和污点传播路径,收集约束条件并组合成路径约束,以定义到达特定程序点所需满足的条件;
30、s5.3、将路径约束传递给约束求解器进行求解,以找到满足所有约束条件的具体输入值,用于引导程序沿特定路径前进。
31、优选的,所述s6步骤个体交叉和变异具体包括以下步骤:
32、s6.1、对个体进行交叉和变异操作,改变个体的交易组成部分;
33、s6.2、更新个体池,用于下一轮的选择。
34、优选的,所述s7步骤生成漏洞报告具体包括以下步骤:
35、s7.1、根据收集的信息,生成漏洞报告;
36、s7.2、报告包括检测到的漏洞类型、漏洞的具体位置和描述,以及可能的修复建议;
37、s7.3、提供给用户作为反馈,帮助用户了解智能合约中存在的安全问题,并采取相应的修复措施。
38、优选的,所述s2步骤中适应度值计算公式为:其中executecount(opcode)表示操作码opcode已经被个体执行的次数,cnt()表示每个个体的最小组成部分的交叉次数之和。
39、优选的,所述s4.3步骤中覆盖率计算公式为:其中executetrace(a)为s3步骤中生成的执行路径,totalopcodenumber为智能合约所包含的所有操作码的数量。
40、本发明提供了一种基于混合模糊测试的智能合约安全检测方法。具备以下有益效果:
41、1、本发明通过采用了有效且系统的安全检测手段,能够显著提升智能合约的安全等级。通过使用遗传算法和混合模糊测试相结合的方式,优化了个体的评价,并量化了每个个体对新的执行路径的探索能力。这使得安全漏洞的发现更加高效和准确。
42、2、本发明在搜索过程中,通过将亲代选择的频次纳入种子评估的量化指标中,以避免亲代同质化问题,即种群的多样性丧失。这有助于保持测试种子的多样性,提高漏洞检测的效果。
43、3、本发明通过对现有的漏洞检测模型进行了优化和调整,以提高漏洞检测的时间效率。通过引入存储模拟器和符号污点分析技术,能够更准确地标记感兴趣的数据为符号值,并跟踪其在程序指令间的传播,以生成执行路径,使用约束求解技术精准生成特定路径的测试用例,从而提高了漏洞检测的精度。
44、4、本发明不仅通过关注传统的代码覆盖率和路径覆盖率作为量化指标,还通过优化个体的评价,全面捕捉所有潜在的程序缺陷。这在安全性至关重要的应用场景中尤为重要,能够提高测试用例质量,增强合约的安全性。
1.一种基于混合模糊测试的智能合约安全检测方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s1步骤个体生成具体包括以下步骤:
3.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s2步骤个体选择具体包括以下步骤:
4.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s3步骤执行路径生成具体包括以下步骤:
5.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s4步骤执行路径分析具体包括以下步骤:
6.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s5步骤符号执行和约束求解具体包括以下步骤:
7.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s6步骤个体交叉和变异具体包括以下步骤:
8.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s7步骤生成漏洞报告具体包括以下步骤:
9.根据权利要求1所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s2步骤中适应度值计算公式为:其中executecount(opcode)表示操作码opcode已经被个体执行的次数,cnt()表示每个个体的最小组成部分的交叉次数之和。
10.根据权利要求5所述的一种基于混合模糊测试的智能合约安全检测方法,其特征在于,所述s4.3步骤中覆盖率计算公式为:其中executetrace(a)为s3步骤中生成的执行路径,totalopcodenumber为智能合约所包含的所有操作码的数量。