[发明专利]一种针对智能合约跨合约漏洞的模糊测试方法在审
申请号: | 202110370702.9 | 申请日: | 2021-04-07 |
公开(公告)号: | CN112860588A | 公开(公告)日: | 2021-05-28 |
发明(设计)人: | 薛吟兴;叶家鸣;张威 | 申请(专利权)人: | 中国科学技术大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57 |
代理公司: | 北京凯特来知识产权代理有限公司 11260 | 代理人: | 郑立明;韩珂 |
地址: | 230026 安*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 针对 智能 合约 漏洞 模糊 测试 方法 | ||
1.一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,包括:
步骤S1、对一组待测智能合约进行调用图和控制流程图扫描分析,根据调用图找到待测智能合约之间的调用链;
步骤S2、对于任一条调用链,根据调用链头部函数选择器和调用参数生成测试用例;
步骤S3、执行所有测试用例,记录每一测试用例的执行情况和执行路径;
步骤S4、根据执行路径,结合控制流程图计算距离度量值,并根据距离度量值,对测试用例进行排序与变异,生成新的测试用例后转入步骤S3;
步骤S5、对测试用例的执行情况进行分析,判断待测智能合约之间是否存在安全漏洞。
2.根据权利要求1所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,所述测试用例还包含调用链上合约的成员变量值和合约余额。
3.根据权利要求2所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,在执行测试用例之前,先更新合约的成员变量值和合约余额。
4.根据权利要求1所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,根据调用图找到待测智能合约之间的调用链后,依据调用链和控制流程图引导模糊测试,使测试的执行路径覆盖调用链。
5.根据权利要求4所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,模糊测试的起点在调用链的头部,终点在调用链的尾部。
6.根据权利要求1所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,所述计算距离度量值是指计算测试用例到终点的距离度量值,终点为调用链的尾部,尾部函数执行结束处对应着控制流程图一个或多个结点,记为终止结点。
7.根据权利要求6所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,测试用例到终点的距离度量值的计算公式为:
min(w*dfi+dni+v*ln(1+dbi))i∈S
其中,S为控制流程图的结点集合,w与v均为设定的系数;dfi为结点i在调用图上距离终点的距离,dbi是分支距离;dni为结点i在控制流程图上距终止结点的距离,若有多个终止结点,则取最小值作为dni。
8.根据权利要求1或6或7所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,根据距离度量值,对测试用例进行排序与变异包括:
根据距离度量值,依递增顺序,对测试用例进行排序,距离度量值越小,测试用例优先级越高,优先级越高的测试用例会被优先变异,并通过变异产生更多的测试用例;
当前测试用例变异次数的计算公式为:
其中,n为设定的系数,k为设定的门限值;dmin为当前最小距离度量值,d为当前测试用例的距离度量值;
当变异次数为负数时,相关的测试用例将被舍弃。
9.根据权利要求1所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,所述对测试用例的执行情况进行分析,判断待测智能合约之间是否存在安全漏洞包括:
对测试用例的执行情况进行分析,根据漏洞的定义和表现形式来判断待测智能合约之间是否存在安全漏洞。
10.根据权利要求1所述的一种针对智能合约跨合约漏洞的模糊测试方法,其特征在于,该方法还包括:预先设置模糊测试的测试时间,对于当前调用链执行步骤S2至步骤S5的操作,直至达到测试时间后,对另一调用链进行测试,即执行步骤S2至步骤S5的操作,不断重复,直至完成所有调用链的测试。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学技术大学,未经中国科学技术大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110370702.9/1.html,转载请声明来源钻瓜专利网。