买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
摘要:本发明属于软件测试技术领域,具体涉及智能合约漏洞检测问题,提供了一种覆盖引导的智能合约测试用例生成方法。本方法采用智能合约漏洞静态检测工具对智能合约进行静态分析,并保存漏洞检测信息,利用该检测信息指导测试用例的适应度计算,生成覆盖更多漏洞语句的测试用例,使得测试在具有方向性同时,进一步提高漏洞检测的效率。本发明提供了一种误报率和漏报率低的智能合约漏洞自动化检测方法。
主权项:1.一种覆盖引导的智能合约测试用例生成方法,其特征包括以下步骤:1利用Slither静态漏洞分析工具对智能合约源码进行静态分析,并将静态分析结果中的漏洞语句所在的行号信息以及检测出的合约漏洞记录在静态漏洞检测信息文件中;2利用Solc编译器,编译被测智能合约,生成智能合约应用程序二进制接口以及以太坊虚拟机字节码,根据智能合约应用程序二进制接口随机生成测试用例;3在以太坊虚拟机中对被测智能合约字节码插桩,被测智能合约的每个函数插入函数桩,函数内每个分支点插入分支桩,并在以太坊Geth节点中部署插桩后的智能合约代码;4根据生成的测试用例,运行插桩后的智能合约代码,在以太坊虚拟机中监测每个测试用例的覆盖信息,在当前测试用例全部执行完毕或在用户自定义的漏洞检测时间内,判断测试用例是否检测到合约漏洞,检测到漏洞则输出每个传入参数的值以及检测到的合约漏洞,否则,将测试用例覆盖到的分支数保存在智能合约漏洞检测库中,库中保存的信息有每个测试用例覆盖到的漏洞语句个数,漏洞语句所在的行号信息以及覆盖到的分支数,同时根据静态漏洞检测信息文件,判断测试用例覆盖到的分支所在的行号信息是否与静态漏洞检测信息文件中漏洞语句所在的行号信息相等,如果相等,则将测试用例覆盖到的漏洞语句个数也保存在智能合约漏洞检测库中,进入步骤5;5根据智能合约漏洞检测库中每个测试用例覆盖到的漏洞语句个数和覆盖到的分支数,计算测试用例的适应度值,适应度值计算用Fitness表示,Fitness=α1*vCov+α2*nCov其中,vCov表示测试用例覆盖到的漏洞语句个数,nCov表示测试用例覆盖到的分支数,α1,α2表示vCov和nCov在Fitness中所占的比重,根据测试用例的覆盖信息计算适应度值,按照适应度值由大到小进行测试用例排序,适应度值越大表明其含有的基因越优秀;6调用交叉变异操作生成新的测试用例,对排序好的测试用例集中排序靠前的前半部分采用交叉操作:选择第一个测试用例与第二个测试用例为一组,第三个测试用例与第四个测试用例为一组,剩余类推,接着将选择的同组测试用例在随机选定的位置分成两部分、交换第二部分以形成两个新的测试用例;对排序好的测试用例集中排序靠后的后半部分采用以下变异操作之一:翻转随机选择的位或字节,增加或替换所选的随机字节,随机位置用智能合约中的常数替换一个值,随机生成的地址或余额替换测试用例中的地址或余额;7将新的测试用例逐个发送给已插桩的可执行代码中,返回步骤4。
全文数据:
权利要求:
百度查询: 西安邮电大学 一种覆盖引导的智能合约测试用例生成方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。