一种智能合约模糊测试的方法、装置及存储介质制造方法及图纸

技术编号:26845375 阅读:11 留言:0更新日期:2020-12-25 13:07
本申请提供一种智能合约模糊测试的方法、装置及存储介质,涉及区块链技术领域,用以提高区块链中智能合约的安全性,避免不必要的损失。对智能合约进行AST扫描分析,生成智能合约方法协议;结合智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;将测试用例变异数据请求到区块链服务中,根据被测智能合约的方法名称,在区块链服务中确定被测智能合约;在被测智能合约上执行测试用例变异样本,并收集被测智能合约针对测试用例样本的执行结果,以根据执行结果中的异常数据确定被测智能合约的漏洞。

【技术实现步骤摘要】
一种智能合约模糊测试的方法、装置及存储介质
本申请涉及区块链
,提供一种智能合约模糊测试的方法、装置及存储介质。
技术介绍
智能合约是在区块链网络上执行的程序。与传统程序不同,智能合约部署在区块链之后就没有办法修改了。由于智能合约的开发过程中存在纰漏,导致部署在区块链服务中的智能合约存在安全漏洞,此时任何人都可对智能合约存在的安全漏洞发起攻击,使智能合约频发安全事故,造成不可避免的损失。
技术实现思路
本申请实施例提供一种智能合约模糊测试的方法、装置及存储介质,用以提高区块链中智能合约的安全性,避免不必要的损失。第一方面,本申请实施例提供一种智能合约模糊测试的方法,该方法包括:对智能合约进行AST(AbstractSyntaxTree,抽象语法树)扫描分析,生成智能合约方法协议;结合智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;将测试用例变异数据请求到区块链服务中,根据被测智能合约的方法名称,在区块链服务中确定被测智能合约;在被测智能合约上执行测试用例变异样本,并收集被测智能合约针对测试用例样本的执行结果,以根据执行结果中的异常数据确定被测智能合约的漏洞。第二方面,本申请实施例提供一种智能合约模糊测试的装置,该装置包括:第一生成单元,用于对智能合约进行AST扫描分析,生成智能合约方法协议;第二生成单元,用于结合智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;确定单元,用于将测试用例变异数据请求到区块链服务中,根据被测智能合约的方法名称,在区块链服务中确定被测智能合约;执行单元,用于在被测智能合约上执行测试用例变异样本,并收集被测智能合约针对测试用例样本的执行结果,以根据执行结果中的异常数据确定被测智能合约的漏洞。在一种可能的实现方式中,第一生成单元具体用于:对被测智能合约进行AST扫描分析,生成AST结构;通过AST结构提取出智能合约的方法名称、参数名称以及对应的参数类型;根据智能合约方法名称、参数名称以及对应的参数类型,生成智能合约方法协议。在一种可能的实现方式中,第二生成单元具体用于:根据智能合约方法协议中的类型列表,确定测试用例样本中参数的数据类型;根据数据类型对应的预设变异方法,对测试用例样本进行变异操作,生成测试用例变异样本;将智能合约方法协议中的智能合约的名称,作为被测智能合约的方法名称;将测试用例变异样本和被测智能合约的方法名称结合,生成测试用例变异数据。在一种可能的实现方式中,执行结果中包括:测试结果和执行路径中的之一或组合;其中,执行路径包括被测智能合约的执行路径、执行被测智能合约的虚拟机的执行路径中的之一或组合;测试结果包括错误码,交易hash,Gas消耗值中的之一或组合。在一种可能的实现方式中,若执行结果中包括被测智能合约的执行路径,则区块链服务中的被测智能合约为经过插桩处理后的智能合约;插桩处理后的智能合约中包含有通过智能合约调用锚点方法。在一种可能的实现方式中,若执行结果中包括执行被测智能合约的虚拟机的执行路径,则虚拟机是经过AOP(AspectOrientedProgramming,面向切面编程)或Hook处理后的虚拟机;AOP或Hook处理为插入动态代码执行路径收集桩。在一种可能的实现方式中,该装置还包括收录单元,收录单元用于:若通过变异生成器确定执行结果异常时,则将测试用例变异样本收录到测试用例样本库中作为测试用例样本,且根据异常的执行结果正向调整变异生成器的变异方法。第三方面,本申请实施例提供一种计算装置,包括至少一个处理器、以及至少一个存储器,其中,存储器中存储有程序代码,处理器用于读取存储器中存储的程序代码,并执行如本申请实施例提供的智能合约模糊测试的方法。第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现本申请实施例提供的智能合约模糊测试的方法。本申请有益效果如下:本申请提供一种智能合约模糊测试的方法、装置及存储介质,特别的提供一种通过模糊测试的方式,在智能合约上线之前对其进行安全测试,并根据测试的结果确定智能合约是否安全,在确定智能合约存在安全漏洞时,以根据确定的安全漏洞对智能合约进行修改,保证上线的智能合约的安全性,避免不必要的损失。在本申请中,先对智能合约进行AST扫描,生成智能合约方法协议,并结合智能合约方法协议,对测试用例样本库中选择的测试用例样本进行变异操作,生成包含有被测智能合约的方法名称以及测试用例变异样本的测试用例变异数据,将测试用例变异数据请求到区块链服务器中,根据携带的被测智能合约的方法名称,在区块链服务器中部署的智能合约中确定被测智能合约,在被测智能合约上执行测试用例变异样本,并收集被测智能合约针对测试用例变异样本的执行结果,以根据执行结果中的异常数据确定被测智能合约的漏洞。在测试阶段,构造各种不同类型异常的、非预期的甚至随机的测试用例变异样本,通过智能合约执行测试用例变异样本获得的异常数据,来发现智能合约漏洞的方式,提高漏洞挖掘的准确性、效率和自动化程度,充分分析智能合约潜在的安全漏洞,提高智能合约的安全性,避免不必要的损失。本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的一种应用场景示意图;图2为本申请实施例提供的一种智能合约模糊测试的方法流程图;图3为本申请实施例提供的一种对智能合约生成对应的智能合约方法协议及测试用例样本的示意图;图4为本申请实施例提供的一种结合智能合约方法协议对测试用例样本进行变异的示意图;图5为本申请实施例提供的一种将插桩处理后的智能合约部署到区块链服务中的示意图;图6为本申请实施例提供的一种区块链服务中虚拟机执行智能合约的示意图;图7为本申请实施例提供的一种根据执行结果更新测试用例样本库的示意图;图8为本申请实施例提供的一种智能合约模糊测试的整体方法的示意图;图9为本申请实施例提供的一种智能合约模糊测试的装置结构图;图10为本申请实施例提供的一种计算设备。具体实施方式为了使本申请的目的、技术方案及有益效果更本文档来自技高网...

【技术保护点】
1.一种智能合约模糊测试的方法,其特征在于,该方法包括:/n对智能合约进行抽象语法树AST扫描分析,生成智能合约方法协议;/n结合所述智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中所述测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;/n将所述测试用例变异数据请求到区块链服务中,根据所述被测智能合约的方法名称,在区块链服务中确定被测智能合约;/n在所述被测智能合约上执行所述测试用例变异样本,并收集所述被测智能合约针对所述测试用例变异样本的执行结果,以根据所述执行结果中的异常数据确定所述被测智能合约的漏洞。/n

【技术特征摘要】
1.一种智能合约模糊测试的方法,其特征在于,该方法包括:
对智能合约进行抽象语法树AST扫描分析,生成智能合约方法协议;
结合所述智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中所述测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本;
将所述测试用例变异数据请求到区块链服务中,根据所述被测智能合约的方法名称,在区块链服务中确定被测智能合约;
在所述被测智能合约上执行所述测试用例变异样本,并收集所述被测智能合约针对所述测试用例变异样本的执行结果,以根据所述执行结果中的异常数据确定所述被测智能合约的漏洞。


2.如权利要求1所述的方法,其特征在于,所述对被测智能合约进行AST扫描分析,生成智能合约方法协议,包括:
对所述被测智能合约进行AST扫描分析,生成AST结构;
通过所述AST结构提取出智能合约的方法名称、参数名称以及对应的参数类型;
根据所述智能合约方法名称、参数名称以及对应的参数类型,生成智能合约方法协议。


3.如权利要求2所述的方法,其特征在于,所述结合所述智能合约方法协议,对测试用例样本进行变异操作,生成测试用例变异数据,其中所述测试用例变异数据中包含被测智能合约的方法名称,以及测试用例变异样本,包括:
根据所述智能合约方法协议中的类型列表,确定测试用例样本中参数的数据类型;
根据所述数据类型对应的预设变异方法,对所述测试用例样本进行变异操作,生成所述测试用例变异样本;
将所述智能合约方法协议中的智能合约的名称,作为所述被测智能合约的方法名称;
将所述测试用例变异样本和所述被测智能合约的方法名称结合,生成所述测试用例变异数据。


4.如权利要求1所述的方法,其特征在于,所述执行结果中包括:测试结果和执行路径中的之一或组合;
其中,所述执行路径包括被测智能合约的执行路径、执行所述被测智能合约的虚拟机的执行路径中的之一或组合;
所述测试结果包括错误码,交易哈希hash,...

【专利技术属性】
技术研发人员:周勇钧
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1