一种针对区块链网络进行模糊测试的方法技术

技术编号:38687660 阅读:24 留言:0更新日期:2023-09-02 23:01
本发明专利技术公开了一种针对区块链网络进行模糊测试的方法,包括:根据RPC接口传输的参数类型,生成用于模糊测试的优质种子;更改各所述RPC接口获取数据的方式;模糊测试。本发明专利技术通过根据RPC接口生成优质种子、将模糊测试数据修改为从本地模糊测试器获取以及部署模糊测试管理器对区块链网络实施优化测试策略,有效实现了对区块链网络的较全面测试,提高了针对区块链网络的测试覆盖率,且测试效率高,响应快,实用性强。实用性强。实用性强。

【技术实现步骤摘要】
一种针对区块链网络进行模糊测试的方法


[0001]本专利技术涉及一种针对区块链网络进行模糊测试的方法,属于区块链安全


技术介绍

[0002]目前针对区块链网络的模糊测试方法较少,已有方法通常是针对区块链网络的智能合约、共识算法、虚拟机或加密算法等某个模块进行测试,或者针对区块链网络的特定漏洞分析挖掘进行测试,显然都在测试覆盖方面存在局限。
[0003]申请公布号为CN115357902A的中国专利技术专利申请提出了一种面向区块链系统的模糊测试方法,其利用Web3,人工分析区块链底层代码,定位弱点代码,构造弱点种子,并人工构造相应的弱点检测代码,然后利用模糊测试方法对区块链系统进行测试。显然其侧重于发现区块链系统特定方面的漏洞,很难覆盖区块链系统的整体情况,且测试覆盖率侧重于覆盖特定弱点相关代码,对于测试覆盖整体性未做考虑。例如未考虑测试区块链系统的查询区块链交易、查询区块、区块链最新状态、交易费查询等代码逻辑。另外,此方法通过Web3发送网络数据进行模糊测试,这种通过网络协议进行模糊测试的做法效率较低。
[0004]申请公布号为CN114357459A的中国专利技术专利申请提出了一种面向区块链系统的信息安全检测方法,其对区块链系统的各个层进行安全检测,需要构建漏洞数据库,但其提及的模糊测试方法仅针对区块链系统的智能合约进行安全检测,测试覆盖率低。

技术实现思路

[0005]本专利技术的目的在于提供一种针对区块链网络进行模糊测试的方法,其解决了现有技术中针对区块链网络的测试覆盖率低的问题。
[0006]为了实现上述目的,本专利技术采用了以下技术方案:一种针对区块链网络进行模糊测试的方法,包括步骤:1)根据RPC接口传输的参数类型,生成用于模糊测试的优质种子,其中,所述优质种子用于表示支持所述RPC接口传输的参数类型的测试种子;2)更改各所述RPC接口获取数据的方式;3)利用所述优质种子对区块链网络进行模糊测试。
[0007]在具体实施时,步骤1)具体包括:1

1)整理区块链网络涉及的各所述RPC接口传输参数所对应的所有类型,定义出参数类型集合P;1

2)针对所述参数类型集合P的不同参数类型分别生成种子数据;1

3)整理各所述RPC接口各自所对应的参数类型;1

4)针对随机选择的所述RPC接口生成优质种子,建立用于模糊测试的种子数据库。
[0008]在具体实施时,较佳的方案是,所述步骤1

4)包括:随机选择一个所述RPC接口,基
于所述步骤1

1)~1

3),针对所述RPC接口对应的各参数类型分别生成种子作为优质种子,存储并建立所述种子数据库。
[0009]在具体实施时,所述步骤2)具体包括:分析区块链网络涉及所述RPC接口的代码,找到关于所述RPC接口的网络数据接收代码,将所述网络数据接收代码更改为从本地模糊测试器获取,其中,针对区块链网络,每个节点部署一个模糊测试器作为所述本地模糊测试器。
[0010]在具体实施时,较佳的方案是,使用模糊测试器提供的编译工具对所述网络数据接收代码进行编译,生成插装后的区块链程序,以使所述插装后的区块链程序支持测试覆盖率监测,且尽可能覆盖区块链网络提供的所有所述RPC接口调用,引导模糊测试器调用所有所述RPC接口。
[0011]在具体实施时,较佳的方案是,所述RPC接口的所述网络数据接收代码的更改遵循以下逻辑:从所述本地模糊测试器获取模糊测试数据;随机选择一个所述RPC接口及其参数类型;将所述模糊测试数据转换为所述RPC接口对应的参数类型;调用RPC底层方法处理所述参数类型后通过选择的所述RPC接口传输进入。
[0012]在具体实施时,所述步骤3)具体包括:3

1)为区块链网络部署模糊测试管理器,其中,所述模糊测试管理器包括节点管理模块、节点监控模块和测试报告模块;3

2)所述节点管理模块控制多个节点执行模糊测试,其中:对于每个所述节点,将种子数据库和插装后的区块链程序作为本地模糊测试器的输入;3

3)所述节点监控模块监控每个所述节点的运行情况,其中:如果所有所述节点的测试覆盖率在规定时间内不再增长,则停止测试;3

4)所述测试报告模块收集每个所述节点的模糊测试信息,生成测试报告。
[0013]在具体实施时,较佳的方案是,在所述步骤3

2)中,选择的多个所述节点部署到不同的网络区域,其中,所述网络区域是指阿里云的不同服务器所在区域。
[0014]在具体实施时,较佳的方案是,所述节点管理模块间隔设定时间随机选择一个所述节点进行停止或开启操作。
[0015]在具体实施时,较佳的方案是,所述测试报告包括每个所述节点的IP信息、崩溃信息、引起崩溃的测试用例、测试覆盖率统计数据。
[0016]本专利技术的优点是:本专利技术通过根据RPC接口生成优质种子、将模糊测试数据修改为从本地模糊测试器获取以及部署模糊测试管理器对区块链网络实施优化测试策略,有效实现了对区块链网络的较全面测试,提高了针对区块链网络的测试覆盖率,且测试效率高,响应快,实用性强。
附图说明
[0017]图1是本专利技术针对区块链网络进行模糊测试的方法的实施流程图。
[0018]图2是区块链网络部署模糊测试管理器的示意图。
具体实施方式
[0019]区块链网络是目前较流行的一种成熟网络。区块链网络实际上是一群分散的网络节点的集合,这些节点由不同的参与者组成,这些参与者共同维护一个账本数据库,这个账本数据库记录了历史所有的交易情况,区块链网络使用一些分布式共识算法以及密码学技术,使得这些账本数据极其难以被某个参与者随意更改,因此其被认为是一种去中心化的分布式数据库。而分布式系统是多个处理机通过通信线路互联而构成的一种松散耦合的系统。
[0020]针对区块链网络,本专利技术提出了一种模糊测试的方法,这里所指的模糊测试,是一种通过向目标系统提供非预期的输入并监视异常结果来发现软件漏洞的方法。
[0021]如图1,具体来说,本专利技术针对区块链网络进行模糊测试的方法包括步骤:1)根据RPC接口传输的参数类型,生成用于模糊测试的优质种子,其中,优质种子用于表示支持RPC接口传输的参数类型的测试种子。
[0022]为了提高测试覆盖率,所生成的优质种子应尽可能广泛支持区块链网络的各RPC接口所传输的参数类型,具体包括步骤:1

1)整理区块链网络涉及的各RPC接口传输参数所对应的所有类型,定义出参数类型集合P;例如,以以太坊为例,其参数类型集合P定义为:(account{string:address,string:privateKey},transaction{string:address,BN:gas,string:gasPrice,string:nonce...本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种针对区块链网络进行模糊测试的方法,其特征在于,包括步骤:1)根据RPC接口传输的参数类型,生成用于模糊测试的优质种子,其中,所述优质种子用于表示支持所述RPC接口传输的参数类型的测试种子;2)更改各所述RPC接口获取数据的方式;3)利用所述优质种子对区块链网络进行模糊测试。2.如权利要求1所述的针对区块链网络进行模糊测试的方法,其特征在于,所述步骤1)包括:1

1)整理区块链网络涉及的各所述RPC接口传输参数所对应的所有类型,定义出参数类型集合P;1

2)针对所述参数类型集合P的不同参数类型分别生成种子数据;1

3)整理各所述RPC接口各自所对应的参数类型;1

4)针对随机选择的所述RPC接口生成优质种子,建立用于模糊测试的种子数据库。3.如权利要求2所述的针对区块链网络进行模糊测试的方法,其特征在于,所述步骤1

4)包括:随机选择一个所述RPC接口,基于所述步骤1

1)~1

3),针对所述RPC接口对应的各参数类型分别生成种子作为优质种子,存储并建立所述种子数据库。4.如权利要求1所述的针对区块链网络进行模糊测试的方法,其特征在于,所述步骤2)包括:分析区块链网络涉及所述RPC接口的代码,找到关于所述RPC接口的网络数据接收代码,将所述网络数据接收代码更改为从本地模糊测试器获取,其中,针对区块链网络,每个节点部署一个模糊测试器作为所述本地模糊测试器。5.如权利要求4所述的针对区块链网络进行模糊测试的方法,其特征在于,使用模糊测试器提供的编译工具对所述网络数据接收代码进行编译,生成插装后的区块链程序,以使所述插装后的区块链程序支持测试覆盖率监测,...

【专利技术属性】
技术研发人员:杨波唐开江张彦超谭亦夫尚可孙茂增雷力鲍帅
申请(专利权)人:北京银联金卡科技有限公司
类型:发明
国别省市:

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

1