【技术实现步骤摘要】
智能合约的模糊测试方法、装置、设备、介质和程序产品
[0001]本专利技术涉及信息安全
和区块链
,具体地涉及一种智能合约的模糊测试方法、装置、设备、介质和程序产品。
技术介绍
[0002]智能合约作为区块链技术的代表应用,已广泛用在金融、供应链、物联网、公共服务等多个领域。智能合约的本质是一种能够自动运行在区块链上的计算机程序,一旦部署,便无法修改。近年,随着以以太坊为代表的智能合约的快速发展,智能合约已经管理了大量的数字资产,与此同时,智能合约漏洞频繁爆出,其安全问题备受关注。目前,常用的智能合约漏洞检测方法主要包括程序分析、形式化验证、符号执行及模糊测试。其中,模糊测试作为一种自动化漏洞检测方法已在传统软件测试领域彰显了其优势,但目前针对智能合约的模糊测试工具尚存在覆盖率不高、测试效率低等瓶颈。
技术实现思路
[0003]鉴于上述问题,本专利技术提供了一种智能合约的模糊测试方法、装置、设备、介质和程序产品。
[0004]根据本专利技术的第一个方面,提供了一种智能合约的模糊测试方法,其中,包括:当测试模式为交易序列测试模式时,基于蒙特卡洛树搜索算法,根据待测合约构造至少一次最优交易序列;在至少一次获取所述最优交易序列时,基于当前获取到的所述最优交易序列进行变异,以生成第一测试案例;基于所述第一测试案例,执行模糊测试;其中,至少一次构造所述最优交易序列,包括:根据所述待测合约中的多个函数,生成交易序列执行树,所述交易序列执行树中的至少一个节点包括所述待测合约中的至少一个函数,至少 ...
【技术保护点】
【技术特征摘要】
1.一种智能合约的模糊测试方法,其特征在于,包括:当测试模式为交易序列测试模式时,基于蒙特卡洛树搜索算法,根据待测合约构造至少一次最优交易序列;在至少一次获取所述最优交易序列时,基于当前获取到的所述最优交易序列进行变异,以生成第一测试案例;基于所述第一测试案例,执行模糊测试;其中,至少一次构造所述最优交易序列,包括:根据所述待测合约中的多个函数,生成交易序列执行树,所述交易序列执行树中的至少一个节点包括所述待测合约中的至少一个函数,至少一条路径上的多个节点中的函数具有依赖关系;基于所述交易序列执行树中每个节点中的函数已被选择构建所述最优交易序列的次数和对测试覆盖率的贡献程度,从所述交易序列执行树中,选择至少一个节点,以构造当前的所述最优交易序列。2.根据权利要求1所述的模糊测试方法,其特征在于,所述根据所述待测合约中的多个函数,生成交易序列执行树,包括:从所述待测合约的函数中确定出至少一个候选节点函数;根据所述待测合约的控制流图和调用图,从至少一个候选节点函数中,确定出根节点,并基于所述根节点逐层扩展子节点,以得到交易序列执行树。3.根据权利要求2所述的模糊测试方法,其特征在于,所述根据所述待测合约的控制流图和调用图,从至少一个候选节点函数中,确定出根节点,包括:根据至少一个所述候选节点函数对区块链中永久存储的全局变量的读写情况,从至少一个所述候选节点函数中确定出所述根节点。4.根据权利要求2所述的模糊测试方法,其特征在于,所述基于所述根节点逐层扩展子节点,以得到交易序列执行树,包括:对于第n级节点,根据所述控制流图和所述调用图,分析第n级节点到所述候选节点函数中剩余函数的参数可达性和合约状态可达性;当第n级节点到所述剩余函数中至少一者的参数可达性和合约状态可达性均满足可达性条件时,确定该函数为第n级节点的子节点;其中,n为正整数。5.根据权利要求1所述的模糊测试方法,其特征在于,所述基于所述交易序列执行树中每个节点中的函数已被选择构建所述最优交易序列的次数和对测试覆盖率的贡献程度,从所述交易序列执行树中,选择至少一个节点,以构造当前的所述最优交易序列,包括:在所述交易序列执行树的至少一级中,计算每个节点当前的上限置信区间值,其中,该节点中的函数对测试覆盖率的贡献程度与该节点当前的上限置信区间值正相关,该节点中的函数已被选择构建所述最优交易序列的次数与该节点当前的上限置信区间值负相关;以及,选择所述上限置信区间值最大的节点作为目标节点;由选出的所述目标节点构成当前的所述最优交易序列。6.根据权利要求5所述的模糊测试方法,其特征在于,当所述交易序列执行树的至少一
级中所述上限置信区间值最大的节点为多个时,从所述上限置信区间值最大的多个节点中随机选择一个节点作为所述目标节点。7.根据权利要求5所述的模糊测试方法,其特征在于,所述计算每个节点当前的上限置信区间值,包括:根据每个节点当前的平均贡献程度、该节点已被选择构建最优交易序列的次数以及基于所述交易序列执行树已构造的最优交易序列的总数,计算该节点的上限置信区间值。8.根据权利要求5所述的模糊测试方法,其特征在于,所述在至少一次获取所述最优交易序列时,基于当前获取到的所述最优交易序列进行变异,以生成第一测试案例,包括:向当前的所述最优交易序列中的每个所述目标节点中填充交易参数;基于填充所述交易参数后的所述最优交易序列,执行至少一次变异操作,以生成至少一个所述第一测试案例;其中,所述至少一次变异操作包括参数变异、交易序列变异及特殊值变异中的至少一种。9.根据权利要求8所述的模糊测试方法,其特征在于,所述基于填充所述交易参数后的所述最优交易序列,执行至少一次变异操作,以生成至少一个所述第一测试案例,包括:在指导变异模式下,从预设合约库中,获取与所述待测合约的合约类型相同的智能合约,以得到参考合约;获取所述参考合约的漏洞特征,以得到目标漏洞特征;在执行至少一次变异操作后,通过距离度量机制,计算生成的所述第一测试案例所覆盖的代码位置与所述目标漏洞特征中的漏洞触发位置之间的距离;当当前生成的所述第一测试案例所覆盖的代码位置与所述目标漏洞特征中的漏洞触发位置之间的距离相较于前...
【专利技术属性】
技术研发人员:王雪霏,许啸,程元鸿,旷亚和,
申请(专利权)人:中国工商银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。