区块链客户端漏洞挖掘方法、装置、设备及存储介质与流程

文档序号:19129701发布日期:2019-11-13 02:30阅读:359来源:国知局
区块链客户端漏洞挖掘方法、装置、设备及存储介质与流程

本申请涉及计算机技术领域,更具体地说,涉及区块链客户端漏洞挖掘方法、装置、设备及存储介质。



背景技术:

随着计算机技术的发展,用户对计算机上的数据准确性、安全性的要求越来越高,在此应用情景下,区块链凭借着自身不可被篡改可被追溯的属性,越来越被重视。区块链(blockchain)是比特币的一个概念,其本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。在搭建区块链时,需要借助区块链客户端来实现,然而,区块链客户端可能存在漏洞,漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,漏洞可以使得攻击者能够在未授权的情况下访问或者破坏系统;而由于区块链常常附带有金融属性,因此漏洞会导致大量的经济损失,威胁区块链的安全。



技术实现要素:

有鉴于此,本申请的目的在于提供一种区块链客户端漏洞挖掘方法、装置、区块链节点设备及存储介质,以挖掘出区块链客户端中存在的漏洞,保证区块链客户端的安全。其具体方案如下:

为了实现上述目的,一方面,本申请提供了一种区块链客户端漏洞挖掘方法,包括:

获取区块链客户端的编写属性,其中,所述区块链客户端包括区块链节点,所述编写属性包括编写所述区块链客户端时依据的属性;

获取与所述编写属性对应的区块链漏洞测试样本;其中,所述区块链漏洞测试样本为根据所述编写属性携带的漏洞所生成的样本;

通过所述区块链漏洞测试样本对所述区块链客户端进行漏洞解析处理,得到漏洞解析结果,并同时采集所述区块链客户端生成的异常信息;

解析出所述漏洞解析结果与所述异常信息中存在的漏洞信息,将所述漏洞信息所对应的漏洞确定为所述区块链客户端的漏洞。

优选的,所述获取区块链客户端的编写属性,包括:

获取所述区块链客户端的编写语言类型;

所述获取与所述编写属性对应的区块链漏洞测试样本,包括:

分析所述编写语言类型存在的漏洞类型及漏洞对象;

基于所述漏洞类型及所述漏洞对象生成所述区块链漏洞测试样本。

优选的,所述基于所述漏洞类型及所述漏洞对象生成所述区块链漏洞测试样本,包括:

采用正则表达式形式,生成与所述漏洞类型及所述漏洞对象对应的所述区块链漏洞测试样本。

优选的,所述通过所述区块链漏洞测试样本对所述区块链客户端进行漏洞解析处理,得到漏洞解析结果,包括:

在所述区块链客户端中,匹配与所述区块链漏洞测试样本的漏洞对象相同的目标对象;

按照所述区块链漏洞测试样本的漏洞类型对所述目标对象进行解析处理,得到所述漏洞解析结果。

优选的,所述按照所述区块链漏洞测试样本的漏洞类型对所述目标对象进行解析处理,得到所述漏洞解析结果,包括:

按照所述区块链漏洞测试样本的运算方式对所述目标对象进行运算,得到运算结果;

按照所述区块链漏洞测试样本的漏洞类型对所述运算结果进行解析处理,得到所述漏洞解析结果。

优选的,所述在所述区块链客户端中,匹配与所述区块链漏洞测试样本的漏洞对象相同的目标对象,包括:

分别将所述区块链漏洞测试样本与所述区块链客户端的各个功能模块进行匹配,得到与所述区块链漏洞测试样本的漏洞对象相同的所述目标对象;

其中,所述区块链客户端的功能模块包括交易模块、同步模块、广播模块、远程过程调用模块、智能合约执行模块。

优选的,所述通过所述区块链漏洞测试样本对所述区块链客户端进行漏洞解析处理,得到漏洞解析结果,包括:

将所述区块链漏洞测试样本封装成区块链漏洞测试脚本;

在所述区块链客户端中运行所述区块链漏洞测试脚本,将运行结果作为所述漏洞解析结果。

优选的,所述获取区块链客户端的编写属性,包括:

获取所述区块链客户端的编写协议;

所述获取与所述编写属性对应的区块链漏洞测试样本,包括:

获取与所述编写协议对应的区块链漏洞数据包,将所述区块链漏洞数据包作为所述区块链漏洞测试样本;

所述通过所述区块链漏洞测试样本对所述区块链客户端进行漏洞解析处理,得到漏洞解析结果,包括:

将所述区块链漏洞测试样本发送至所述区块链客户端,获取所述区块链客户端对所述区块链漏洞测试样本进行解析的解析结果,将所述解析结果作为所述漏洞解析结果。

优选的,所述获取与所述编写协议对应的区块链漏洞数据包,包括:

分析所述编写协议的类型;

若所述编写协议的类型为指令协议,则获取所述编写协议中的所有指令,选取预设数量的所述指令组合成随机指令序列,对所述随机指令序列进行打包,得到所述区块链漏洞数据包;

若所述编写协议的类型为非指令协议,则获取所述编写协议的原始区块链数据包,修改所述原始区块链数据包中的数据,得到所述区块链漏洞数据包。

优选的,所述将所述漏洞信息所对应的漏洞确定为所述区块链客户端的漏洞之后,还包括:

发送所述编写属性、所述区块链漏洞测试样本、所述漏洞解析结果及所述异常信息至安全服务器,以使所述安全服务器基于所述编写属性、所述区块链漏洞测试样本、所述漏洞解析结果及所述异常信息对所述区块链客户端进行漏洞分析。

又一方面,本申请还提供了一种区块链客户端漏洞挖掘装置,包括:

编写属性获取模块,用于获取区块链客户端的编写属性,其中,所述区块链客户端包括区块链节点,所述编写属性为编写所述区块链客户端时依据的属性;

测试样本获取模块,用于获取与所述编写属性对应的区块链漏洞测试样本;其中,所述区块链漏洞测试样本为根据所述编写属性携带的漏洞所生成的样本;

解析结果获取模块,用于通过所述区块链漏洞测试样本对所述区块链客户端进行漏洞解析处理,得到漏洞解析结果,并同时采集所述区块链客户端生成的异常信息;

漏洞确定模块,用于解析出所述漏洞解析结果与所述异常信息中存在的漏洞信息,将所述漏洞信息所对应的漏洞确定为所述区块链客户端的漏洞。

又一方面,本申请还提供了一种区块链节点设备,所述区块链节点设备包括处理器和存储器;其中,所述存储器用于存储计算机程序,所述计算机程序由所述处理器加载并执行以实现前述区块链客户端漏洞挖掘方法。

又一方面,本申请还提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述区块链客户端漏洞挖掘方法。

可见,在本申请实施例中,通过对区块链客户端的漏洞挖掘,根据获取的区块链客户端的编写属性来获取对应的区块链漏洞测试样本,由于编写属性包括编写区块链客户端时依据的属性,从而使得获取的区块链漏洞测试样本能够在编写层面实现对区块链客户端的漏洞挖掘,进行漏洞挖掘的深度较深,漏洞挖掘力度大;并且在应用区块链漏洞测试样本对区块链客户端进行漏洞解析处理的过程中,进一步采集区块链客户端生成的异常信息,根据漏洞解析结果和异常信息一同确定区块链客户端存在的漏洞,增加了区块链漏洞确定时的考虑因素,提高了区块链漏洞确定准确率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请提供的一种区块链客户端漏洞挖掘系统组成架构示意图;

图2为本申请实施例提供的一种区块链客户端漏洞挖掘方法的流程图;

图3为本申请实施例提供的一种区块链客户端漏洞挖掘方法的流程图;

图4为本申请实施例提供的一种区块链客户端漏洞挖掘方法的流程图;

图5为本申请实施例的一种应用场景实施例对应的结构示意图;

图6为终端21的结构示意图;

图7为终端21实现漏洞测试的流程图;

图8为本申请实施例提供的一种区块链客户端漏洞挖掘装置示意图;

图9为本申请实施例提供的一种服务器的结构示意图;

图10为本申请实施例提供的一种终端的结构示意图;

图11为本申请实施例的区块链客户端漏洞挖掘方法所适用的硬件组成框架示意图。

具体实施方式

区块链(blockchain)是比特币的一个概念,其本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链是一种互联网协议和一种基础的数据结构,如同http是互联网应用层中最重要的应用协议一样,区块链也是应用层里一个点对点传输的协议。在协议基础上,区块链由“区块”和“链”共同定义了分布式账本。“区块”类似于证券交易中的成交记录,记录了特定时间段内所有发生的权益转移关系;这些“区块”间存在着严格且唯一的先后继承关系,组成了一条“区块”的“链”。区块链特有的机制保障了“区块”记录内容和先后继承关系的合理性和唯一性,这个过程并不依赖于特定的中心节点。并且区块链不可篡改且可追溯,可以在保证数据真实可靠的同时帮助社会降低信用成本。智能合约是区块链平台的核心组成部分,在区块链上执行业务逻辑,并将信息记录在区块链上保证数据不可篡改。

在搭建区块链时,需要借助区块链客户端来实现,区块链客户端可以为区块链上的区块链节点,比如普通用户所应用的用户区块链节点、对普通用户进行管理的管理员所应用的管理员区块链节点等,以负责游戏的区块链为例,普通用户所应用的用户区块链节点可以为玩家所应用的用户区块链节点,管理员所应用的管理员区块链节点可以为游戏开发商所应用的管理员区块链节点等,然而,区块链客户端中可能存在漏洞,漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,漏洞可以使得攻击者能够在未授权的情况下访问或者破坏系统;而由于区块链常常附带有金融属性,因此漏洞会导致大量的经济损失,威胁区块链的安全。

鉴于目前所存在的上述问题,本申请提出了客户端漏洞挖掘技术方案,通过该技术方案,能够对客户端进行漏洞挖掘,以消除客户端存在的漏洞。

为了便于理解,下面对本申请的技术方案所适用的系统架构进行介绍。参见图1,其示出了本申请的一种客户端漏洞挖掘系统的组成架构。

如图1所示,本申请的区块链客户端漏洞挖掘系统的一种组成架构可以包括测试方终端11、服务器12、区块链客户端13。

其中,测试方终端11可以通过自身预先安装的客户端,在用户交互界面上为测试方提供信息输入接口和信息发送触发单元。其中,测试方终端11通过信息输入接口获取测试方输入的漏洞挖掘指令。当信息发送触发单元被外界触发后,测试方终端11可以利用第一通讯网络,将通过信息输入接口获取到的信息发送至服务器12。可以理解的是,本申请中的测试方终端11包括但不限于安装了上述客户端的智能手机、平板电脑、穿戴式设备和台式计算机等。

本申请中,服务器12具体可以是指用于实现单一业务的专用服务器,不同的服务器12分别用于实现不同的业务。服务器12通过第一通讯网络与测试方终端11建立通讯连接。服务器12获取到测试方终端11发送的漏洞挖掘指令后,便可以执行漏洞挖掘指令以对区块链客户端13完成相应的漏洞挖掘任务。本申请中,服务器12内部预先集成了监视程序,用于对执行漏洞挖掘指令的行为进行监视,一旦监视到某漏洞挖掘指令被执行了,则可以对该漏洞挖掘指令进行收集,并收集该漏洞挖掘指令对应的漏洞挖掘结果,后续可以将当前实时收集或历史上收集的漏洞挖掘指令、漏洞挖掘结果与测试方的身份标识进行绑定,然后将绑定信息进行存储,以便后续测试方进行查看,或者直接将绑定信息发送给测试方终端11,以使测试方通过测试方终端11进行查看。

需要说明的是,本申请的上述第一通讯网络可以根据实际应用过程中的网络状况和应用需求来确定,既可以是无线通讯网络,如移动通讯网络或wifi网络等,也可以是有线通讯网络;既可以是广域网,在情况允许时也可以采用局域网。

仍以前述提到的负责游戏的区块链为例,在此区块链上,用户因某些需求可能与管理员进行交易,而这些交易需要通过区块链来完成,比如在负责生产类游戏的区块链上,用户区块链节点可能需转账至管理员区块链节点,以使得管理员区块链节点可以加快用户区块链节点的优先生产进程,然而,如果区块链节点存在漏洞,比如该漏洞为用户区块链节点可以同时向两个管理员区块链节点进行交易,则用户区块链节点可以在同一时间向两个管理员区块链节点发送只包含一笔数额的交易,使得用户区块链节点可以使用一笔钱获取两个管理员区块链节点上的资源,造成管理员区块链节点的资源亏损,为此,本申请提供一种区块链客户端漏洞挖掘方法,以解决区块链客户端存在的漏洞问题。

图2为本申请实施例提供的一种区块链客户端漏洞挖掘方法的流程图。参见图2所示,该区块链客户端漏洞挖掘方法可以包括以下步骤:

s101:获取区块链客户端的编写属性,其中,区块链客户端包括区块链节点,编写属性为编写区块链客户端时依据的属性。

本申请实施例中,获取的区块链客户端的编写属性可以是历史漏洞挖掘过程中保存记录的区块链客户端的编写属性,也可以是实时从区块链客户端获取的编写属性等。

在一种实现方式中,当获取的区块链客户端的编写属性为历史漏洞挖掘过程中保存记录的区块链客户端的编写属性时,此时可能存储有多个区块链客户端与其对应的编写属性信息,为了便于对区块链客户端及其对应的编写属性信息进行管理,可以采用键值对的形式存储区块链客户端的标识信息及区块链客户端对应的编写属性信息,之后,在需要获取区块链客户端的编写属性时,便可以在保存的信息中查询与区块链客户端的标识信息匹配的编写属性,以获得区块链客户端的编写属性。

在另一种实现方式中,当获取的区块链客户端的编写属性为实时从区块链客户端获取的编写属性时,可以预先与区块链客户端约定编写属性的获取方式,比如获取方式为特定指令触发方式,则可以将该特殊指令发送给区块链客户端,区块链客户端接收到该特殊指令并识别出该特殊指令为获取编写属性的指令时,便可以返回自身的编写属性;此外,还可以从区块链客户端处获取相应的数据信息,通过对该数据信息进行分析来获取区块链客户端的编写属性等。

s102:获取与编写属性对应的区块链漏洞测试样本。

本实施例中,因为区块链客户端的类型不同,编写区块链客户端时所依据的属性也不同,由此使得区块链客户端的编写属性多种多样,而不同编写属性编写的区块链客户端所存在的漏洞也可能多种多样,因此,需要获取与编写属性对应的区块链漏洞测试样本。

在一种实现方式中,可以实时根据编写属性生成对应的区块链漏洞测试样本,在此过程中,需要对编写属性进行分析,由此使得根据编写属性生成区块链漏洞测试样本的过程较为复杂,为了降低根据编写属性生成区块链漏洞测试样本的复杂度,可以采用神经网络模型来自动生成区块链漏洞测试样本,在此过程中,需要采集已知的编写属性及对应的区块链漏洞测试样本,并应用已知的编写属性及对应的区块链漏洞测试样本对神经网络模型进行训练,以得到满足要求的神经网络模型,之后,只需将编写属性输入给该神经网络模型,便可以获取神经网络模型生成的与该编写属性对应的区块链漏洞测试样本。

在另一种实现方式中,在每次对客户端进行漏洞挖掘的过程中,可以主动存储生成的与编写属性对应的区块链漏洞测试样本,并建立相应的区块链漏洞测试样本数据库来保存区块链漏洞测试样本,这样在需要对同类型的区块链客户端进行漏洞挖掘时,便可以在该区块链漏洞测试样本数据库中查询得到相应的区块链漏洞测试样本。

s103:通过区块链漏洞测试样本对区块链客户端进行漏洞解析处理,得到漏洞解析结果,并同时采集区块链客户端生成的异常信息。

本实施例中,不同区块链漏洞测试样本所代表的漏洞类型不同,为了获知区块链客户端的漏洞信息,需要通过区块链漏洞测试样本对区块链客户端进行漏洞解析处理,得到漏洞解析结果,同时,为了进一步提高对区块链客户端存在的漏洞的判断准确率,可以采集区块链客户端在漏洞挖掘过程中生成的异常信息,综合考虑漏洞解析结果和异常信息这两个信息来分析区块链客户端的漏洞信息。

在一种实现方式中,为了提高通过区块链漏洞测试样本对区块链客户端进行分析的分析效率,可以借助多线程模式来利用区块链漏洞测试样本对区块链客户端进行分析,也即同时应用多个区块链漏洞测试样本对区块链客户端进行分析,得到相应的分析结果。在另一种可能的实现方式中,还可以进一步采用神经网络模型来实现通过区块链漏洞测试样本对区块链客户端进行漏洞解析处理的处理效率。

s104:解析出漏洞解析结果与异常信息中存在的漏洞信息,将漏洞信息所对应的漏洞确定为区块链客户端的漏洞。

本实施例中,若区块链客户端存在漏洞的话,漏洞解析结果中会存在与区块链客户端存在的漏洞对应的漏洞信息,同理,异常信息中也会存在与区块链客户端存在的漏洞对应的漏洞信息,比如在漏洞为数值溢出的情况下,漏洞解析结果及异常信息中均会生成与数值溢出对应的信息,所以可以解析出漏洞解析结果与异常信息中存在的漏洞信息,并将漏洞信息所对应的漏洞确定为区块链客户端的漏洞。

在一种实现方式中,为了解决区块链客户端所存在的漏洞问题,在将漏洞信息所对应的漏洞确定为区块链客户端的漏洞之后,还可以发送编写属性、区块链漏洞测试样本、漏洞解析结果及异常信息至安全服务器,以使安全服务器基于编写属性、区块链漏洞测试样本、漏洞解析结果及异常信息对区块链客户端进行漏洞分析,以借助安全服务器解决区块链客户端存在的漏洞。

在本申请实施例中,通过对区块链客户端进行漏洞挖掘,根据获取的区块链客户端的编写属性来获取对应的区块链漏洞测试样本,由于编写属性包括编写区块链客户端时依据的属性,从而使得获取的区块链漏洞测试样本能够在编写层面实现对区块链客户端的漏洞挖掘,进行漏洞挖掘的深度较深,漏洞挖掘力度大;并且在应用区块链漏洞测试样本对区块链客户端进行分析的过程中,进一步采集区块链客户端生成的异常信息,根据漏洞解析结果和异常信息一同判断区块链客户端是否存在漏洞,增加了区块链漏洞确定时的考虑因素,提高了区块链漏洞确定准确率。

图3为本申请实施例提供的一种区块链客户端漏洞挖掘方法的流程图。参见图3所示,该区块链客户端漏洞挖掘方法可以包括以下步骤:

s201:获取区块链客户端的编写语言类型,编写语言类型包括编写区块链客户端时依据的语言。

本实施例中,编写区块链客户端时所应用的编写语言在一定程度上决定了区块链客户端的安全性及所可能存在的漏洞类型,比如g0语言的make语句便存在内存溢出的漏洞模型,所以在获取区块链客户端的编写属性时,可以获取区块链客户端的编写语言类型,从区块链客户端的编写语言类型来对区块链客户端进行漏洞挖掘。

在一种实现方式中,在获取区块链客户端的编写语言类型时,可以采集区块链客户端的编写语言,比如编写代码等,对采集的编写语言进行分析,进而确定区块链客户端的编写语言类型。在一种可能的实现方式中,可以通过扫描区块链客户端的文件后缀或者检查代码语法的方法来确定区块链客户端的编写语言类型。

s202:分析编写语言类型存在的漏洞类型及漏洞对象。

s203:基于漏洞类型及漏洞对象生成区块链漏洞测试样本。

本实施例中,在编写属性为编写语言类型时,由于编写语言所存在的漏洞可能为整数溢出、缓冲区溢出、数组访问越界、内存泄露等,在对编写语言存在的漏洞进行分析后,得出编写语言存在的漏洞存在共性:漏洞由漏洞类型和漏洞对象组成;以漏洞为整数溢出为例,其中整数属于漏洞对象,溢出属于漏洞类型,所以在获取与编写属性对应的漏洞测试样本时,可以先分析编写语言类型存在的漏洞类型及漏洞对象,然后基于漏洞类型及漏洞对象生成相应的区块链漏洞测试样本,生成的区块链漏洞测试样本的格式可以根据实际需要确定,比如在一种可能的实现方法中,为了便于后续通过区块链漏洞测试样本对区块链客户端进行分析,可以采用正则表达式形式,生成与漏洞类型和漏洞对象对应的区块链漏洞测试样本。本申请所涉及的正则表达式是对字符串(包括普通字符(例如,a到z之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,换言之,是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,借助这个“规则字符串”来表达对字符串的一种过滤逻辑,正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。

下面以g0语言为例来描述正常表达式形式的区块链漏洞测试样本的生成过程。对于g0语言中存在的内存溢出的漏洞,采用正则表达式生成的该漏洞的区块链漏洞测试样本可以表示为“make\(\[”等;相应的,在g0语言中,加减乘除的语句中还可能存在证书溢出,则采用正则表达式生成的该漏洞的漏洞测试样本可以表示为“\s\*\s\”、“\s\+\s\”、“\s\-\s\”等。

s204:通过区块链漏洞测试样本对区块链客户端进行漏洞解析处理,得到漏洞解析结果,同时采集区块链客户端生成的异常信息。

本实施例中,由于区块链漏洞测试样本是基于漏洞类型和漏洞对象生成的,那么,在通过区块链漏洞测试样本对区块链客户端进行漏洞解析处理,得到漏洞解析结果时,可以先在区块链客户端中,匹配与区块链漏洞测试样本的漏洞对象相同的目标对象,此时,可以采用单行匹配的方式将区块链漏洞测试样本与漏洞对象进行匹配,也可以采用多行匹配的方式将区块链漏洞测试样本与漏洞对象进行匹配,单行匹配也即一次只将一个漏洞对象与区块链客户端进行匹配,多行匹配也即一次将多个漏洞对象与区块链客户端进行匹配;再按照区块链漏洞测试样本的漏洞类型对目标对象进行漏洞解析处理,得到漏洞解析结果。也即只有在区块链客户端中存在与区块链漏洞测试样本中的漏洞对象相同的目标对象时,区块链客户端才可能存在区块链漏洞测试样本所反映的漏洞类型。

在一种可能的实现方式中,由于有的编写语言涉及到运算,而运算过程或者运算结果可能存在漏洞,所以在按照区块链漏洞测试样本的漏洞类型对目标对象进行分析,得到分析结果时,可以按照区块链漏洞测试样本的运算方式对目标对象进行运算,得到运算结果;按照区块链漏洞测试样本的漏洞类型对运算结果进行分析,得到分析结果。

在另一种可能的实现方式中,一个区块链客户端所能实现的功能多种多样,这些功能的实现需要依据区块链客户端中存在的功能模块,而这些功能模块存在漏洞的情况可能不同,为了准确确定各个功能模块的漏洞信息,在区块链客户端中,匹配与区块链漏洞测试样本的漏洞对象相同的目标对象时,可以分别将区块链漏洞测试样本与区块链客户端的各个功能模块进行匹配,得到与区块链漏洞测试样本的漏洞对象相同的目标对象。这样,漏洞对象与功能模块间便存在对应关系,进而使得功能模块与区块链漏洞测试样本、漏洞解析结果间存在对应关系,基于该对应关系便可以确定各个功能模块的漏洞信息,以区块链客户端的类型为区块链节点为例,区块链节点按功能可以分为交易模块、同步模块、广播模块、rpc(remoteprocedurecall,远程过程调用)模块、智能合约执行模块等,假设交易模块存在目标对象1,广播模块存在目标对象2,目标对象1所对应的漏洞类型为漏洞1,目标对象2存在的漏洞类型为漏洞2,那么区块链节点存在漏洞2时,便可以确定区块链客户端的漏洞2存在广播模块中。

在另一种可能的实现方式中,由于脚本具有能够运行的功能,所以可以通过脚本来提高通过区块链漏洞测试样本对区块链客户端进行分析的分析效率,则通过区块链漏洞测试样本对区块链客户端进行分析,得到分析结果时,可以将区块链漏洞测试样本封装成区块链漏洞测试脚本;在区块链客户端中运行区块链漏洞测试脚本,将运行结果作为漏洞解析结果。

s205:解析出漏洞解析结果与异常信息中存在的漏洞信息,将漏洞信息所对应的漏洞确定为区块链客户端的漏洞。

图4为本申请实施例提供的一种区块链客户端漏洞挖掘方法的流程图。参见图4所示,该区块链客户端漏洞挖掘方法可以包括以下步骤:

s301:获取区块链客户端的编写协议,编写属性包括编写区块链客户端时依据的协议。

本实施例中,编写区块链客户端时依据的编写协议在一定程度上决定了区块链客户端的安全性和漏洞类型,比如对于涉及交易的编写协议,如果编写协议存在可以修改交易金额的漏洞时,攻击方便可以通过该漏洞修改区块链客户端的交易金额,给区块链客户端带来财产损失,所以可以根据区块链客户端的编写协议来分析区块链客户端可能存在的漏洞。

s302:获取与编写协议对应的区块链漏洞数据包,将区块链漏洞数据包作为区块链漏洞测试样本。

本实施例中,由于各个协议都有对应的数据包格式,且各个协议只能处理相应数据包格式的数据包,所以可以生成数据包来对协议进行漏洞分析,因此在获取与编写属性对应的区块链漏洞测试样本时,可以获取与编写协议对应的区块链漏洞数据包,并将区块链漏洞数据包作为区块链漏洞测试样本。

在一种可能的实现方法中,由于协议的类型不同,生成其对应的区块链漏洞数据包的过程也不相应,比如在获取与编写协议对应的区块链漏洞数据包时,可以分析编写协议的类型;若编写协议的类型为指令协议,则获取编写协议中的所有指令,选取预设数量的指令组合成随机指令序列,对随机指令序列进行打包,得到区块链漏洞数据包;若编写协议的类型为非指令协议,则获取编写协议的原始区块链数据包,修改原始区块链数据包中的数据,得到区块链漏洞数据包。仍以区块链客户端为区块链节点为例,区块链节点中的协议包括区块链共识协议、节点区块同步协议、节点区块广播协议、节点交易广播协议、rpc协议和智能合约协议等,其中智能合约协议负责对指令进行处理,其类型为指令协议,那么,在生成对智能合约协议进行漏洞挖掘的区块链漏洞测试样本时,可以将智能合约中的指令集进行收集,然后随机取出部分指令,进行组合,生成随机指令序列,再利用交易数据包对随机指令序列进行打包,生成相应的区块链漏洞测试样本;而对于节点交易广播协议,可以随机修改交易数据包中的交易金额、交易目标、交易来源等信息字段,来生成相应的区块链漏洞测试样本。

s303:将区块链漏洞测试样本发送至区块链客户端,获取区块链客户端对区块链漏洞测试样本进行解析的解析结果,将解析结果作为漏洞解析结果,同时采集区块链客户端生成的异常信息。

本实施例中,由于编写属性为编写协议,而协议是对数据进行相应处理,所以在通过区块链漏洞测试样本对区块链客户端进行漏洞解析处理,得到漏洞解析结果时,可以将区块链漏洞测试样本发送至区块链客户端,获取区块链客户端对区块链漏洞测试样本进行解析的解析结果,将解析结果作为漏洞解析结果。

s304:解析出漏洞解析结果与异常信息中存在的漏洞信息,将漏洞信息所对应的漏洞确定为区块链客户端的漏洞。

为了便于理解,请参考图5、图6和图7,结合本方案的一种应用场景进行介绍,下面以终端21、调试器装置22及区块链网络23中的游戏区块链客户端231作为应用场景说明对游戏区块链客户端的漏洞挖掘过程。

用户开启终端21后,终端21与游戏区块链客户端231建立连接,用户在终端21界面输入漏洞挖掘指令;终端21响应漏洞挖掘指令,获取游戏区块链客户端231的编写属性,生成与编写属性对应的区块链漏洞测试样本,利用区块链漏洞测试样本对游戏区块链客户端231进行漏洞解析处理,得到漏洞解析结果;同时调试器装置22采集游戏区块链客户端231生成的异常信息并反馈给终端21,终端21根据漏洞解析结果及异常信息判断该游戏区块链客户端231是否存在漏洞。在此过程中,当该游戏区块链客户端231存在漏洞时,区块链网络23中所有与该游戏区块链客户端231的软件代码一致的区块链节点均存在该漏洞。

由图6可知,终端21可以由漏洞模型生成模块211、漏洞模型匹配模块212、测试样本生成模块213和样本批量测试模块214组成;漏洞模型生成模块211用于生成漏洞模型,漏洞模型匹配模块212用于将漏洞模型与区块链客户端进行匹配,测试样本生成模块213用于生成测试样本,样本批量测试模块214用于通过测试样本对区块链客户端进行测试;终端21实现漏洞测试的过程请参阅图7,可以包括以下步骤:

步骤s401:获取游戏区块链客户端的编写语言类型,分析编写语言类型存在的漏洞类型及漏洞对象,执行步骤s402。

步骤s402:采用正则表达式形式,生成与漏洞类型及漏洞对象对应的区块链漏洞测试样本,执行步骤s403。

步骤s403:判断是否执行脚本编写操作,若是,则执行步骤s404,若否,则执行步骤s406。

步骤s404:将区块链漏洞测试样本封装成区块链漏洞测试脚本,执行步骤s405。

步骤s405:在游戏区块链客户端中运行区块链漏洞测试脚本,将运行结果作为漏洞解析结果,执行步骤s411。

步骤s406:分别将区块链漏洞测试样本与游戏区块链客户端的各个功能模块进行匹配,得到与区块链漏洞测试样本的漏洞对象相同的目标对象,执行步骤s407。

步骤s407:按照区块链漏洞测试样本的运算方式对目标对象进行运算,得到运算结果,执行步骤s408。

步骤s408:按照区块链漏洞测试样本的漏洞类型对运算结果进行解析处理,得到漏洞解析结果,执行步骤s411。

步骤s409:分析游戏区块链客户端的编写协议,分析编写协议的类型,执行步骤s410。

步骤s410:若编写协议的类型为指令协议,则获取编写协议中的所有指令,选取预设数量的指令组合成随机指令序列,对随机指令序列进行打包,得到区块链漏洞数据包;若编写协议的类型为非指令协议,则获取编写协议的原始区块链数据包,修改原始区块链数据包中的数据,得到区块链漏洞数据包,执行步骤s411。

步骤s411:将区块链漏洞测试样本发送至游戏区块链客户端,获取游戏区块链客户端对区块链漏洞测试样本进行解析的解析结果,将解析结果作为漏洞解析结果,执行步骤s412。

步骤s412:获取游戏区块链客户端生成的异常信息,执行步骤s414。

步骤s413:解析出漏洞解析结果与异常信息中存在的漏洞信息,将漏洞信息所对应的漏洞确定为游戏区块链客户端的漏洞。

图8为本申请实施例提供的一种客户端漏洞挖掘装置,包括:

编写属性获取模块21,用于获取区块链客户端的编写属性,其中,区块链客户端包括区块链节点,编写属性为编写区块链客户端时依据的属性;

测试样本获取模块22,用于获取与编写属性对应的区块链漏洞测试样本;

解析结果获取模块23,用于通过区块链漏洞测试样本对区块链客户端进行漏洞解析处理,得到漏洞解析结果,同时采集区块链客户端生成的异常信息;

漏洞确定模块24,用于解析出漏洞解析结果与异常信息中存在的漏洞信息,将漏洞信息所对应的漏洞确定为区块链客户端的漏洞。

在一种可能实现方式中,编写属性获取模块21,具体可以包括:

编写语言获取子模块,用于获取区块链客户端的编写语言类型;

测试样本获取模块22,具体可以包括:

漏洞分析子模块,用于分析编写语言类型存在的漏洞类型及漏洞对象;

测试样本生成子模块,用于基于漏洞类型及漏洞对象生成区块链漏洞测试样本。

在一种可能实现方式中,测试样本生成子模块,具体可以包括:

测试样本生成单元,用于采用正则表达式形式,生成与漏洞类型及漏洞对象对应的区块链漏洞测试样本。

在一种可能实现方式中,解析结果获取模块23,具体可以包括:

对象匹配子模块,用于在区块链客户端中,匹配与区块链漏洞测试样本的漏洞对象相同的目标对象;

解析结果获取子模块,用于按照区块链漏洞测试样本的漏洞类型对目标对象进行漏洞解析处理,得到漏洞解析结果。

在一种可能实现方式中,解析结果获取子模块,具体可以包括:

运算单元,用于按照区块链漏洞测试样本的运算方式对目标对象进行运算,得到运算结果;

解析单元,用于按照区块链漏洞测试样本的漏洞类型对运算结果进行漏洞解析处理,得到漏洞解析结果。

在一种可能实现方式中,对象匹配子模块,具体可以包括:

对象匹配单元,用于分别将区块链漏洞测试样本与区块链客户端的各个功能模块进行匹配,得到与区块链漏洞测试样本的漏洞对象相同的目标对象。

在一种可能实现方式中,解析结果获取模块23,具体可以包括:

封装单元,用于将区块链漏洞测试样本封装成区块链漏洞测试脚本;

运行单元,用于在区块链客户端中运行区块链漏洞测试脚本,将运行结果作为漏洞解析结果。

在一种可能实现方式中,编写属性获取模块21,具体可以包括:

编写协议获取子模块,用于获取区块链客户端的编写协议;

测试样本获取模块22,具体可以包括:

数据包获取子模块,用于获取与编写协议对应的区块链漏洞数据包,将区块链漏洞数据包作为区块链漏洞测试样本;

解析结果获取模块23,具体可以包括:

解析结果获取单元,用于将区块链漏洞测试样本发送至区块链客户端,获取区块链客户端对区块链漏洞测试样本进行解析的解析结果,将解析结果作为漏洞解析结果。

在一种可能实现方式中,数据包获取子模块,具体可以包括:

数据包获取单元,用于分析编写协议的类型;若编写协议的类型为指令协议,则获取编写协议中的所有指令,选取预设数量的指令组合成随机指令序列,对随机指令序列进行打包,得到区块链漏洞数据包;若编写协议的类型为非指令协议,则获取编写协议的原始区块链数据包,修改原始区块链数据包中的数据,得到区块链漏洞数据包。

在一种可能实现方式中,还可以包括:

发送模块,用于漏洞确定模块24将漏洞信息所对应的漏洞确定为区块链客户端的漏洞之后,若根据匹配结果和异常信息判定区块链客户端存在漏洞,则发送编写属性、区块链漏洞测试样本、漏洞解析结果及异常信息至安全服务器,以使安全服务器基于编写属性、区块链漏洞测试样本、漏洞解析结果及异常信息对区块链客户端进行漏洞分析。

进一步的,本申请实施例还提供了一种区块链节点设备。其中,上述区块链节点设备既可以是如图9所示的服务器30,也可以是如图10所示的终端40;当区块链节点设备为服务器时,本申请客户端漏洞挖掘生成方法的执行主体便可以为服务器,而当区块链节点设备为终端时,本申请客户端漏洞挖掘方法的执行主体便可以为终端。图9和图10均是根据一示例性实施例示出的区块链节点设备结构图,图中的内容不能认为是对本申请的使用范围的任何限制。

图9为本申请实施例提供的一种服务器的结构示意图。该服务器30,具体可以包括:至少一个处理器31、至少一个存储器32、电源33、通信接口34、输入输出接口35和通信总线36。其中,所述存储器32用于存储计算机程序,所述计算机程序由所述处理器31加载并执行,以实现前述任一实施例公开的客户端漏洞挖掘方法中的相关步骤。

本实施例中,电源33用于为服务器30上的各硬件设备提供工作电压;通信接口34能够为服务器30创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口35,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。

另外,存储器32作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统321、计算机程序322以及数据323等,存储方式可以是短暂存储或者永久存储。

其中,操作系统321用于管理与控制服务器30上的各硬件设备以及计算机程序322,以实现处理器31对存储器32中海量数据323的运算与处理,其可以是windowsserver、netware、unix、linux等。计算机程序322除了包括能够用于完成下述任一实施例公开的客户端漏洞挖掘方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。数据323除了可以包括服务器收集到的配置信息和测试指令等数据外,还可以包括数据模型、性能分析结果等数据。

图10为本申请实施例提供的一种终端的结构示意图,该终端40具体可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。

通常,本实施例中的终端40包括有:处理器41和存储器42。

其中,处理器41可以包括一个或者多个处理核心,比如4核心处理器、8核心处理器等。处理器41可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器41也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器41可以集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器41还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器42可以包括一个或者多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器42还可以包括高速随机存取存储器,以及非易失性存储器,比如一个或者多个磁盘存储设备、闪存存储设备。本实施例中,存储器42至少用于存储以下计算机程序421,其中,该计算机程序被处理器41加载并执行之后,能够实现前述任一实施例所公开的客户端漏洞挖掘方法中的相关步骤。另外,存储器42所存储的资源还可以包括操作系统422和数据423等,存储方式可以是短暂存储或者永久存储。其中,操作系统422可以包括windows、unix、linux等。数据423包括但不限于配置信息、数据模型、性能分析结果等。

在一些实施例中,终端40还可以包括有显示屏43、输入输出接口44、通信接口45、传感器46、电源47以及通信总线48。

本领域技术人员可以理解,图8中示出的结构并不构成对终端40的限定,可以包括比图示更多或者更少的组件。

可以理解的是,本申请实施例中并不对区块链节点设备的数量进行限定,其可以是多个区块链节点设备共同协作完成拓扑关系的生成功能。在一种可能的情况中,请参阅图11。由图11可知,该硬件组成框架可以包括第一区块链节点设备51和第二区块链节点设备52,第一区块链节点设备51与第二区块链节点设备52之间通过网络53实现通信连接。

在本申请实施例中,第一区块链节点设备51与第二区块链节点设备52的硬件结构可以参考图9中的服务器、图10中的终端,可以理解为本实施例中具有两个区块链节点设备,两者进行数据交互,实现客户端漏洞挖掘功能。进一步,本申请实施例中并不对网络的形式进行限定,比如,网络53可以是无线网络(如wifi、蓝牙等),也可以是有线网络。

其中,第一区块链节点设备51和第二区块链节点设备52可以是同一种区块链节点设备,比如第一区块链节点设备51和第二区块链节点设备52均为服务器30或者均为终端40;也可以是不同类型的区块链节点设备,比如,第一区块链节点设备51可以是终端40,第二区块链节点设备52可以是服务器30。在有一种可能的情况中,可以利用计算能力强的服务器30作为第二区块链节点设备52来提高数据处理效率及可靠性,进而提高客户端漏洞挖掘效率。同时利用成本低、应用范围广的终端40作为第一区块链节点设备51,用于实现第二区块链节点设备52与用户之间的交互。

进一步,为了便于用户获取目标拓扑关系,第一区块链节点设备51还可以在接收到漏洞挖掘结果后,将该漏洞挖掘结果输出。本申请实施例并不限定第一区块链节点设备51输出形式,如可以利用不同颜色的字体输出不同的漏洞挖掘结果、采用语音输出漏洞挖掘结果等。

举例说明,终端在获取到漏洞挖掘指令后,将漏洞挖掘指令发送给服务器。服务器在接收到漏洞挖掘指令后,对区块链客户端进行漏洞挖掘,并得到相应的漏洞挖掘结果。服务器在得到漏洞挖掘结果后可以将漏洞挖掘结果通过网络发送给终端。终端输出漏洞挖掘结果。

进一步的,本申请实施例还公开了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现前述任一实施例公开的客户端漏洞挖掘方法步骤。

需要指出的是,上述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1