一种软件漏洞检测的方法、装置及存储介质转让专利

申请号 : CN202010556358.8

文献号 : CN111797402A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马海龙熊学涛乔建国申成钢杨海峰

申请人 : 北京世纪互联宽带数据中心有限公司

摘要 :

本申请提供一种软件漏洞检测的方法、装置及存储介质,用以提高软件漏洞检测的精确度,及检测效率。在该方法中,若漏洞库中包含有漏洞检测指令中的目标软件,则在漏洞库中获取目标软件对应的版本信息;将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配;根据匹配结果,确定目标软件是否存在漏洞。在漏洞检测的过程中,根据目标软件名称在该漏洞库中获取到该目标软件名称及该目标软件名称对应的版本信息,将目标版本信息与获取的版本信息进行匹配,根据匹配结果确定目标软件是否存在漏洞,直接输出检测结果,无需人为针对多个模糊检测结果进行确认,提高了软件漏洞检测精确度,及检测效率。

权利要求 :

1.一种软件漏洞检测的方法,其特征在于,该方法包括:若漏洞库中包含有漏洞检测指令中的目标软件名称对应的目标软件,则在所述漏洞库中获取所述目标软件对应的版本信息;

将所述漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配;

根据匹配结果,确定所述目标软件是否存在漏洞。

2.如权利要求1所述的方法,其特征在于,该方法还包括:若漏洞库中未包含有漏洞检测指令中的目标软件名称对应的目标软件,则确定所述目标软件不存在漏洞。

3.如权利要求1所述的方法,其特征在于,所述在所述漏洞库中获取所述目标软件对应的版本信息之后,还包括:若确定在所述漏洞库中未获取到所述目标软件对应的版本信息,则确定所述目标软件存在漏洞,并下发提示信息。

4.如权利要求1所述的方法,其特征在于,若获取到的目标软件对应的版本信息存在版本范围;

所述将所述漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配,包括:将所述目标版本信息与所述版本范围的最大值和/或最小值进行匹配,判断所述目标版本信息是否在所述版本范围内;

所述根据匹配结果,确定所述目标软件是否存在漏洞,包括:若所述目标版本信息在所述版本范围内,则确定所述目标软件存在漏洞并下发提示信息,否则确定所述目标软件不存在漏洞。

5.如权利要求1所述的方法,其特征在于,若获取到的目标软件的版本信息为至少一个具体版本;

所述将所述漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配,包括:将所述目标版本信息与所述具体版本进行匹配,判断获取到所述具体版本中是否包含有所述漏洞检测指令中携带的目标版本信息;

所述根据匹配结果,确定所述目标软件是否存在漏洞,包括:若所述具体版本中包含有所述目标版本信息,则确定所述目标软件存在漏洞并下发提示信息,否则确定所述目标软件不存在漏洞。

6.如权利要求1~5任一所述的方法,其特征在于,所述将所述漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配之前,还包括:将所述目标版本信息对应的版本号和获取到的目标软件对应的版本信息中各版本号的非数字转换成点字符,多个连续的点字符替换成一个点字符;

将所述版本信息按点切割,获得所述版本信息中各版本号中的各个目标数字;

将所述目标数字按照数值大小不变,位数替换成预设位数的形式进行扩充,并将扩充后的各个目标数字进行拼接转化成数值性数字。

7.如权利要求1~5任一所述的方法,其特征在于,所述将所述漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配,包括:若确定所述漏洞检测指令中携带的目标版本信息为主版本,则与获取到的所述版本信息中的主版本信息进行匹配,否则与所述版本信息中的精准版本信息进行匹配。

8.一种软件漏洞检测的装置,其特征在于,该装置包括:获取模块,匹配模块及确定模块,其中:所述获取模块,用于若漏洞库中包含有漏洞检测指令中的目标软件名称对应的目标软件,则在所述漏洞库中获取所述目标软件对应的版本信息;

所述匹配模块,用于将所述漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配;

所述确定模块,用于根据匹配结果,确定所述目标软件是否存在漏洞。

9.一种软件漏洞检测的设备,其特征在于,该设备包括:至少一个处理器以及至少一个存储器,其中,存储器存储有程序代码,当程序代码被处理器执行时,处理器具体用于执行如权利要求1~7任一所述的方法。

10.一种计算机可读存储介质,其特征在于,该计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时,实现如权利要求1~7任一所述的方法。

说明书 :

一种软件漏洞检测的方法、装置及存储介质

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种软件漏洞检测的方法、装置及存储介质。

背景技术

[0002] 在检测某个软件或某个软件的版本是否存在漏洞时,主要根据该软件名称中的关键词进行搜索,因此查询出来的结果中很多都是模糊查询结果。
[0003] 目前,需要在模糊查询结果中通过人工检查的方式,逐个分析模糊查询结果的漏洞信息对查询的软件及软件的版本是否有影响,效率低下,且容易产生人工筛选失误的情况。

发明内容

[0004] 本申请提供一种软件漏洞检测的方法及设备,用以提高软件漏洞检测的精确度,及检测效率。
[0005] 第一方面,本申请实施例提供一种软件漏洞检测的方法,该方法包括:
[0006] 若漏洞库中包含有漏洞检测指令中的目标软件名称对应的目标软件,则在漏洞库中获取目标软件对应的版本信息;
[0007] 将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配;
[0008] 根据匹配结果,确定目标软件是否存在漏洞。
[0009] 在该方法中,在针对软件和软件的版本进行漏洞检测时,将目标软件名称和对应的目标版本信息作为漏洞检测指令输入,因此在漏洞检测的过程中,可以根据目标软件名称在该漏洞库中获取到该目标软件名称及该目标软件名称对应的版本信息,之后将目标版本信息与获取的版本信息进行匹配,根据匹配结果确定目标软件是否存在漏洞,在该过程中直接输出检测结果,无需人为的针对多个模糊检测结果进行确认,提高了软件漏洞检测精确度,及检测效率,同时节省人力。
[0010] 在一种可能的实现方式中,若漏洞库中未包含有漏洞检测指令中的目标软件名称对应的目标软件,则确定目标软件不存在漏洞。
[0011] 在该方法中,先根据软件名称确定漏洞库中是否有该软件名称对应的软件,在确定漏洞库中未存储有该目标软件,则确定该目标软件不存在漏洞,提高效率。
[0012] 在一种可能的实现方式中,在漏洞库中获取目标软件对应的版本信息之后,若确定未获取到目标软件对应的版本信息,则确定目标软件存在漏洞。
[0013] 在一种可能的实现方式中,若获取到的目标软件对应的版本信息存在版本范围;
[0014] 将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配,包括:
[0015] 将目标版本信息与版本范围的最大值和/或最小值进行匹配,判断目标版本信息是否在版本范围内;
[0016] 根据匹配结果,确定目标软件是否存在漏洞,包括:
[0017] 若目标版本信息在版本范围内,则确定目标软件存在漏洞并下发提示信息,否则确定目标软件不存在漏洞。
[0018] 在一种可能的实现方式中,若获取到的目标软件的版本信息为至少一个具体版本;
[0019] 将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配,包括:
[0020] 将目标版本信息与具体版本进行匹配,判断获取到具体版本中是否包含有漏洞检测指令中携带的目标版本信息;
[0021] 根据匹配结果,确定目标软件是否存在漏洞,包括:
[0022] 若具体版本中包含有目标版本信息,则确定目标软件存在漏洞并下发提示信息,否则确定目标软件不存在漏洞。
[0023] 在该方法中,在确定漏洞库中存储有漏洞检测指令中的目标软件时,进一步在漏洞库中获取该目标软件对应的版本信息,即该目标软件的哪些版本存在漏洞,在漏洞库中获取该目标软件的版本信息时,存在获取到目标软件的版本信息和未获取到目标软件的版本信息的两种情况。当获取到目标软件的版本信息时,确定获取到的是版本范围还是具体版本,并将目标版本信息与获取到的版本范围或具体版本进行匹配,在匹配成功后确定存在漏洞并下发提示信息;当未获取到目标软件的版本信息,则确定目标软件的目标版本信息存在漏洞并下发提示信息,直接提示该目标软件及对应的目标版本信息存在漏洞,无需人为在多个查询结果中确定目标软件及对应的目标版本信息是否存在漏洞,提高软件漏洞检测精确度,及检测效率。
[0024] 在一种可能的实现方式中,将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配之前,还包括:
[0025] 将目标版本信息对应的版本号和获取到的目标软件对应的版本信息中各版本号的非数字转换成点字符,多个连续的点字符替换成一个点字符;
[0026] 将版本信息按点切割,获得版本信息中各版本号中的各个目标数字;
[0027] 将目标数字按照数值大小不变,位数替换成预设位数的形式进行扩充,并将扩充后的各个目标数字进行拼转化成数值性数字。
[0028] 在该方法中,在将目标版本信息与从漏洞库中获取到的目标软件对应的版本信息进行匹配时,即将目标版本信息的版本号与获取到的版本信息的版本号进行对比,但由于一个软件可以对应多个版本,版本又可以分为主版本和精准版本,因此在对比时数字位数不同,导致对比的结果存在误差,本申请提供一种对版本号进行扩充处理的方式,以保证版本号对比的准确性,最终保证的漏洞检测的准确性。
[0029] 在一种可能的实现方式中,述将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配,包括:
[0030] 若确定漏洞检测指令中携带的目标版本信息为主版本,则与获取到的版本信息中的主版本信息进行匹配,否则与版本信息中的精准版本信息进行匹配。
[0031] 在该方法中,在进行版本信息匹配,即版本号进行对比的过程中,可以先确定是主版本还是精准版本,因为主版本的位数相对于精准版本的位数较少,在匹配的过程中相对于精准版本的匹配速度快,因此先确定是哪种版本形式,在确定如何匹配方式,可以提升匹配效率,最终提高检测效率。
[0032] 第二方面,本申请实施例提供一种软件漏洞检测的装置,该装置包括:获取模块,匹配模块及确定模块,其中:
[0033] 获取模块,用于若漏洞库中包含有漏洞检测指令中的目标软件名称对应的目标软件,则在漏洞库中获取目标软件对应的版本信息;
[0034] 匹配模块,用于将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配;
[0035] 确定模块,用于根据匹配结果,确定目标软件是否存在漏洞。
[0036] 第三方面,本申请实施例提供一种软件漏洞检测的设备,该设备包括:至少一个处理器以及至少一个存储器,其中,存储器存储有程序代码,当程序代码被处理器执行时,处理器具体用于执行上述软件漏洞检测的方法。
[0037] 第四方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令被处理器执行时实现本申请实施例提供的软件漏洞检测的方法。
[0038] 本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

[0039] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040] 图1为相关技术中软件漏洞检测的模糊查询结果的示意图;
[0041] 图2为相关技术中漏洞标题列表中某个漏洞标题对应的漏洞信息的示意图;
[0042] 图3为本申请实施例提供的一种软件漏洞检测的场景示意图;
[0043] 图4为本申请实施例提供的一种软件漏洞检测的方法流程图;
[0044] 图5为本申请实施例提供的一种进行软件漏洞检测的界面示意图;
[0045] 图6为本申请实施例提供的另一种进行软件漏洞检测的界面示意图;
[0046] 图7为本申请实施例提供的一种软件漏洞检测的整体方法流程图;
[0047] 图8为本申请实施例提供的一种软件漏洞检测的装置结构示意图;
[0048] 图9为本申请实施例提供的一种软件漏洞检测的设备结构示意图。

具体实施方式

[0049] 本申请实施例描述的架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
[0050] 下面将结合附图对本申请实施例中的技术方案进行清楚、详尽地描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,另外,在本申请实施例的描述中,“多个”是指两个或多于两个。
[0051] 以下,术语“第一”、“第二”仅用于描述目的,而不能理解为暗示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征,在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0052] 下面对本申请实施例的设计构思进行简要介绍。
[0053] 目前在对软件或该软件的某个版本进行漏洞检测时,仅能将该软件名称中的关键词作为漏洞检测指令,即仅能根据漏洞检测指令中的关键词进行漏洞检测,此时得到的检测结果是模糊检测结果,即包含有关键词的软件的漏洞检测结果。
[0054] 模糊检测结果以列表的形式展示给用户,此时展示的仅是存在有关键词的漏洞标题,无法直接显示各个漏洞标题对应的版本号及漏洞信息等,如图1所示,为相关技术中软件漏洞检测的模糊查询结果的示意图。用户需要针对该模糊查询结果中的每个漏洞标题对应的漏洞信息进行查看,筛选确定需要查找的软件及对应的版本信息是否存在漏洞,如图2所示,为相关技术中漏洞标题列表中某个漏洞标题对应的漏洞信息的示意图。
[0055] 可以,目前在针对某个软件及对应的某个软件的版本进行漏洞查询时,技能进行模糊查询,进一步需要人为的进行筛选才能确定需要确定的软件及对应的版本信息是否存在漏洞。但是人为筛选过程中由于信息较多,导致眼疲劳造成数据浏览不够仔细,因此检测结果不够准确,且时间长。
[0056] 有鉴于此,本申请实施例提供了一种软件漏洞检测的方法、装置及存储介质。
[0057] 在该方法中,将目标软件名称及对应的目标版本信息作为漏洞检测指令中的输入参数,因此在漏洞检测过程中,先确定漏洞库中是否存有目标软件名称对应的目标软件,在确定漏洞库中存有该目标软件后,在漏洞库中确定目标软件对应的版本信息,在从漏洞库中获取到目标软件对应的版本信息后,将漏洞检测指令中的目标版本信息与获取到的版本信息进行匹配,并根据匹配结果,确定目标软件是否存在漏洞,确定匹配成功,则说明目标软件存在漏洞,下发提示信息。根据目标软件名称及对应的目标版本信息确定漏洞库中是否存有该目标软件及对应的版本,在确定存有该目标软件及对应的版本后,确定存在漏洞并下发提示信息,无需人为筛选,提高检测效率及准确性,同时节省人力资源。
[0058] 在介绍完本申请实施例的设计构思之后,下面对本申请设置的应用场景进行简要说明。
[0059] 如图3所示,为本申请实施例提供的一种软件漏洞检测的场景示意图,在该场景中包括多个终端设备31和服务器32。
[0060] 其中,终端设备31为安装有各种应用软件及用于软件漏洞检测的检测平台,或不安装用于软件漏洞检测的检测平台但可以通过网站访问用于软件漏洞检测的检测平台的设备;服务器32可以是任何能够提供互联网服务的设备,服务器中可以存储有漏洞库,漏洞库中存储有大量的存有漏洞的软件的版本信息。
[0061] 在实际应用中,服务器32通过网络与终端设备31进行通信连接,网络可以是但不限于局域网、城域网或广域网等。
[0062] 在一种可能的应用场景中,为了降低通信时延,可以在各个地区部署服务器32;或为了负载均衡,由不同的服务器32分别服务各个终端设备31进行软件漏洞检测的过程。多个服务器32可以通过区块链实现数据的共享,比如多个服务器32通过区块链实现存有漏洞的软件及对应的版本信息的共享。
[0063] 在本申请中,使用者在终端设备31中开启用于软件漏洞检测的检测平台,并在检测平台中输入目标软件名称及对应的目标版本信息,在触发搜索指令后确定触发了包含有目标软件名称对应的目标版本信息的漏洞检测指令。服务器32接收到漏洞检测指令后,获取漏洞检测指令中的目标软件名称,并确定存储的漏洞库中是否存有该目标软件名称对应的目标软件,在确定漏洞库中存有该目标软件名称对应的目标软件后,进一步在漏洞库中获取目标软件的版本信息,并将获取到的版本信息与漏洞检测指令中携带的目标版本信息进行匹配,确定是否存在漏洞,在确定匹配成功后,确定目标软件及对应的版本存在漏洞,并下发提示信息,以提示使用者当前软件的版本存在漏洞,主动提示使用者,无需人为筛选,提高检测效率及精确性。
[0064] 在一种可能的实现方式中,为了匹配的准确性,对从漏洞库中获取到目标软件对应的版本信息中各版本号,及漏洞检测指令中的目标版本信息的版本号进行处理,具体处理过程为:
[0065] 将目标版本信息对应的版本号和获取到的目标软件对应的版本信息中各版本号的非数字转换成点字符,多个连续的点字符替换成一个点字符;
[0066] 将版本信息按点切割,获得版本信息中各版本号中的各个目标数字;
[0067] 将目标数字按照数值大小不变,位数替换成预设位数的形式进行扩充,并将扩充后的各个目标数字进行拼接转化成数值性数字。
[0068] 在一种可能的实现方式中,本申请提供的软件漏洞检测的方法可以应用于订阅场景,即使用者在用于软件漏洞检测的检测平台的显示界面中触发订阅功能,之后服务器针对漏洞检测指令中的目标软件名称或目标版本信息进行周期或不定时的进行漏洞检测,在检测到漏洞是下发提示信息,无需使用者针对同一软件多次输入,简化操作。
[0069] 需要说明的是,本申请中的漏洞库可以进行周期更新,或通过爬虫软件等检测到漏洞问题时及时更新。
[0070] 需要说明的是,本申请提供的软件漏洞检测的方法既可以在终端设备31中执行,也可以在服务器32中执行,相同步骤不在重复赘述。
[0071] 下面结合上述描述的应用场景,参考附图来描述本申请是示例性实施方式提供的软件漏洞检测的方法,需要说明的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
[0072] 如图4所示,为本申请实施例提供的一种软件漏洞检测的方法流程图,包括如下步骤:
[0073] 步骤400,若漏洞库中包含有漏洞检测指令中的目标软件名称对应的目标软件,获取目标软件对应的版本信息。
[0074] 在本申请中,使用者输入目标软件名称及对应的目标版本信息,并触发漏洞检测指令后,针对该目标软件名称对应的目标软件及对应的目标版本信息进行漏洞检测,检测该目标软件及对应的目标版本信息是否存在漏洞。
[0075] 如图5所示,为本申请实施例提供的一种进行软件漏洞检测的界面示意图,在该显示界面中包含有目标软件名称的输入框,及对应的目标版本信息的输入框,还包括有触发搜索的按键。
[0076] 在确定使用者触发了漏洞检测指令,获取漏洞检测指令中携带的目标软件名称和/或目标版本信息。
[0077] 需要说明的是,使用者可能只针对某个软件进行检测,并不会检测该软件下的某个版本是否存在漏洞,因此可以仅输入软件的名称;还可以检测软件下的某个版本是否存在漏洞,该目标版本信息可以是主版本,也可以是精准版本。
[0078] 在获取到漏洞检测指令中的目标软件名称后,根据该目标软件名称确定漏洞库中是否有与该目标软件名称对应的目标软件。
[0079] 在一种可能的实现方式中,漏洞库中未包含有漏洞检测指令中的目标软件名称对应的目标软件,则确定该目标软件不存在漏洞。
[0080] 在一种可能的实现方式中,漏洞库中包含有漏洞检测指令中的目标软件名称对应的目标软件,进一步在漏洞库中获取该目标软件对应的版本信息。
[0081] 在漏洞中获取目标软件对应的版本信息时,存在从漏洞库中获取到目标软件对应的版本信息和未获取到目标软件对应的版本信息两种情况。
[0082] 当为情况一:从漏洞库中未获取到目标软件对应的版本信息时,则针对目标版本信息无法进行匹配,且说明目标软件存在漏洞。
[0083] 当为情况二:从漏洞中获取到目标软件对应的版本信息时,则针对目标版本信息与获取到的版本信息进行匹配,具体详见步骤402的实施。
[0084] 需要说明的是,漏洞库中存储有存在漏洞的软件名称,及该软件名称对应的存有漏洞的版本信息,比如漏洞库中存有软件名称A,对应的版本信息为1.1.01,则说明1.1.01版的软件A存在漏洞。
[0085] 在一种可能的实现方式中,本申请的软件漏洞检测方法还可以用于订阅的场景中,即定时的针对漏洞检测指令中的目标软件名称及对应的目标版本信息进行漏洞检测。
[0086] 具体的,使用者在输入目标软件名称及对应的目标版本信息的时候,还可以选择订阅功能。如图6所示,为本申请实施例提供的另一种软件漏洞检测的界面示意图。从图6中可知该界面中不仅包含有目标软件名称的输入框及目标版本信息的输入框,还包含有可选项“订阅”。当使用者选择了“订阅”项后,在漏洞检测指令中还包含有定时检测的指令。定时检测具体在什么时候检测可以是使用者选择的,也可以是预先设置的检测周期,还可以是在检测到目标软件名称对应的目标软件有版本更新时进行检测。
[0087] 步骤401,将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配。
[0088] 在漏洞库中获取到目标软件对应的版本信息后,将获取到的目标软件对应的版本信息与漏洞检测指令中携带的目标版本信息进行匹配。
[0089] 在进行匹配之前,先确定获取到的目标软件对应的版本信息是否存在版本范围,比如大于第一版本,或小于第二版本,或大于第三版本且小于第四版本。
[0090] 情况A:当确定获取到的目标软件对应的版本信息存在版本范围时,将目标版本信息与版本范围进行匹配,确定目标版本信息是否在该版本范围内,若目标版本信息在该版本范围内,则确定匹配成功,否则确定匹配失败。
[0091] 具体的,将目标版本信息与获取到的目标软件对应的版本范围进行匹配时,主要是将目标版本信息对应的版本号,与获取到的目标软件对应的版本范围的上限版本号和/或下限版本号进行匹配。
[0092] 比如,获取到的目标软件对应的版本范围为:大于等于m,且小于等于n,此时将目标版本信息对应的版本号与m进行比较,且与n进行比较,确定目标版本信息对应的版本号是否在大于等于m且小于等于n的区间内;或
[0093] 版本范围为:小于等于n,此时将目标版本信息对应的版本号与n进行比较,确定目标版本信息的版本号是否小于等于n;或
[0094] 版本范围为:大于等于m,此时将目标版本信息对应的版本号与m进行比较,确定目标版本信息的版本号是否大于等于m。
[0095] 在本申请中,在将目标版本信息的版本号与获取到的目标软件对应的版本信息的版本号进行匹配的过程中,为了保证匹配的准确性,对目标版本信息的版本号及获取到的目标软件对应的版本信息中各版本号进行处理,具体处理过程如下:
[0096] 将版本号中的非数字转换成点字符,多个连续的点字符替换成一个点字符;
[0097] 将替换后的版本号按点切割,获得版本号中的各个目标数字;
[0098] 将目标数字按照数值大小不变,位数替换成预设位数的形式进行扩充,并将扩充后的各个目标数字进行拼接。
[0099] 以对获取到目标软件的版本信息为版本范围,对版本范围的版本号进行处理说明,在对版本范围的版本号进行处理的时候,仅对版本范围中的上限和/或下限进行处理。比如目标软件的版本信息对应的版本范围为:大于等于9.0.0.M1,小于等于9.0.0.M11;此时仅对版本号9.0.0.M1和9.0.0.M11进行处理。
[0100] 将9.0.0.M1和9.0.0.M11中的“M”替换成“.”,转换成9.0.0..1和9.0.0..11;
[0101] 将多个连续的点替换成一个点,转换成9.0.0.1和9.0.0.11;
[0102] 将9.0.0.1按点分割,获得版本号中的目标数字,分别为数字9,数字0,数字0和数字1;之后将目标数字按照数值大小不变,位数替换成预设位数的形式进行扩充。在本申请中,将预设位数设置为8位,因为少于8位数会影响匹配的精确度,大于8位数匹配过程计算量比较大。因此扩充后分别为:00000009、00000000、00000000、00000001,最后将扩充后的进行拼接,转化成数值性数字为9000000000000000000000001;同理对9.0.0.11进行处理,转化成数值性数字为9000000000000000000000011;此时目标软件的版本信息对应的版本范围为[9000000000000000000000001,9000000000000000000000011]。
[0103] 在本申请中,若目标软件的版本信息对应的版本范围仅存在上限值时,比如,小于等于9.0.0.M11,则仅对9.0.0.M11进行处理,目标软件的版本信息对应的版本范围的下限值采用0,因此目标软件的版本信息对应的版本范围为[0,9000000000000000000000011];或
[0104] 若目标软件的版本信息对应的版本范围仅存在下限值时,比如大于等于9.0.0.M1,则仅对9.0.0.M1进行处理,目标软件的版本信息对应的版本范围的上限值中每位均 采用“9”填充 ,因 此目标 软件 的版 本信 息对应 的版 本范围 内 为[900000000000000000000001,99999999999999999999999999999999]。
[0105] 在一种可能的实现方式中,当目标软件的版本信息对应的版本范围为大于9.0.0.M1,小于9.0.0.M11时,先对9.0.0.M1和9.0.0.M11进行处理,分别形成处理后的
9000000000000000000000001和9000000000000000000000011,因为目标软件的版本信息对应的版本范围内不包含有9.0.0.M1和9.0.0.M11,即不包含有9000000000000000000000001和9000000000000000000000011。因此针对9000000000000000000000001做加1处理,得到
9000000000000000000000002;针对9000000000000000000000011做减1处理,得到
9000000000000000000000010;最终目标软件的版本信息对应的版本范围为[9000000000000000000000002,9000000000000000000000010]。
[0106] 同理,对目标版本信息中的版本号进行处理,并将处理后的版本号与上述处理得到的目标软件的版本信息对应的版本范围中的版本号进行匹配。
[0107] 比 如 ,经 过处 理后的 目 标软 件的版 本 信息对 应的 版本 范围 为[9000000000000000000000001,9000000000000000000000011],目标版本信息的版本号为9 .0 .0 .M3 ,处理后形成9000000000000000000000003 ,此时在
[9000000000000000000000001,9000000000000000000000011]范围内,则说明存在漏洞。
[0108] 情况B:当获取到的目标软件的版本信息不存在版本范围时,则确定获取到的目标软件对应的版本信息为至少一个具体版本,此时将目标版本信息与获取到的目标软件对应的至少一个具体版本进行一一匹配,即将目标版本信息的版本号与获取到的目标软件对应的具体版本的版本号进行匹配,判断获取到的目标软件对应的具体版本的版本号中是否包含有该目标版本信息的版本号。
[0109] 需要说明的是,在进行匹配的过程中需要对版本进行处理,处理过程同情况A中类似,在此不再赘述。
[0110] 在一种可能的实现方式中,在将目标版本信息与获取到的目标软件对应的版本信息进行匹配时,确定目标版本信息是主版本还是精确版本,若是主版本在进行主版本匹配,否则进行精准版本匹配。
[0111] 以是目标版本信息为主版本,且漏洞库中存在目标软件对应的版本范围进行举例:比如主版本为9.2;目标软件对应的版本范围为大于等于9.0.0.M1,小于等于9.10.0.M11,则对应的版本查找范围为[900000000,900000010],即确定900000002大于等于90000000,且小于等于900000010是否成立,若成立则说明存在漏洞,此时无需将获取到的目标软件对应的版本信息中的版本号按点分割得到的所有目标数字进行处理,仅需对与主版本对应的目标数字为进行处理即可,减少计算压力。
[0112] 步骤402,根据匹配结果,确定目标软件是否存在漏洞。
[0113] 在本申请中,若匹配成功,则确定存在漏洞,并下发提示信息;若匹配失败,则确定不存在漏洞。
[0114] 提示信息包括但不限于:短信提示,邮件提示,语音提示。
[0115] 需要说明的是,提示信息中还包括有存在的漏洞问题,及对应的解决方式。
[0116] 如图7所示,为本申请实施例提供的一种软件漏洞检测的整体方法流程图,包括如下步骤:
[0117] 步骤700,接收漏洞检测指令,确定漏洞检测指令中携带的目标软件名称及对应的目标版本信息;
[0118] 步骤701,判断漏洞库中是否存在有目标软件名称对应的目标软件,若有则执行步骤702,否则执行步骤706;
[0119] 步骤702,判断漏洞库中是否存储有目标软件对应的版本信息,若有则执行步骤703,否则执行步骤705;
[0120] 步骤703,将目标版本信息与漏洞库中存储的目标软件对应的版本信息进行匹配;
[0121] 步骤704,判断匹配是否成功,若成功则执行步骤705,否则执行步骤706;
[0122] 步骤705,确定存在漏洞并下发提示信息;
[0123] 步骤706,确定不存在漏洞。
[0124] 基于同一发明构思,本申请实施例中还提供了一种软件漏洞检测的装置,该装置用于实现本申请中软件漏洞检测的方法,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见本申请中方法的实施,重复之处不再赘述。
[0125] 如图8所示,为本申请实施例提供的一种软件漏洞检测的装置800的结构示意图,该装置800包括:获取模块801,匹配模块802及确定模块803,其中:
[0126] 获取模块801,用于若漏洞库中包含有漏洞检测指令中的目标软件名称对应的目标软件,获取目标软件对应的版本信息;
[0127] 匹配模块802,用于将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配;
[0128] 确定模块803,用于根据匹配结果,确定目标软件是否存在漏洞。
[0129] 在一种可能的实现方式中,获取模块801还用于:
[0130] 若漏洞库中未包含有漏洞检测指令中的目标软件名称对应的目标软件,则确定目标软件不存在漏洞。
[0131] 在一种可能的实现方式中,获取模块801还用于:
[0132] 在漏洞库中获取目标软件对应的版本信息之后,若确定在漏洞库中未获取到目标软件对应的版本信息,则确定目标软件存在漏洞,并下发提示信息。
[0133] 在一种可能的实现方式中,若获取到的目标软件对应的版本信息存在版本范围;
[0134] 匹配模块802具体用于:将目标版本信息与版本范围的最大值和/或最小值进行匹配,判断目标版本信息是否在版本范围内;
[0135] 确定模块803具体用于:若目标版本信息在版本范围内,则确定目标软件存在漏洞并下发提示信息,否则确定目标软件不存在漏洞。
[0136] 在一种可能的实现方式中,若获取到的目标软件的版本信息为至少一个具体版本;
[0137] 匹配模块802具体用于:将目标版本信息与具体版本进行匹配,判断获取到具体版本中是否包含有漏洞检测指令中携带的目标版本信息;
[0138] 确定模块803具体用于:若具体版本中包含有目标版本信息,则确定目标软件存在漏洞并下发提示信息,否则确定目标软件不存在漏洞。
[0139] 在一种可能的实现方式中,匹配模块802还用于:
[0140] 将漏洞检测指令中携带的目标版本信息,与获取到的目标软件对应的版本信息进行匹配之前,将目标版本信息对应的版本号和获取到的目标软件对应的版本信息中各版本号的非数字转换成点字符,多个连续的点字符替换成一个点字符;
[0141] 将版本信息按点切割,获得版本信息中各版本号中的各个目标数字;
[0142] 将目标数字按照数值大小不变,位数替换成预设位数的形式进行扩充,并将扩充后的各个目标数字进行拼接转化成数值性数字。
[0143] 在一种可能的实现方式中,匹配模块802具体用于:
[0144] 若确定漏洞检测指令中携带的目标版本信息为主版本,则与获取到的版本信息中的主版本信息进行匹配,否则与版本信息中的精准版本信息进行匹配。
[0145] 为了描述的方便,以上各部分按照功能划分为各单元(或模块)分别描述。当然,在实施本申请时可以把各单元(或模块)的功能在同一个或多个软件或硬件中实现。
[0146] 在介绍了本申请示例性实施方式软件漏洞检测方法和装置之后,接下来,介绍根据本申请的另一示例性实施方式的软件漏洞检测的设备。
[0147] 所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
[0148] 在一种可能的实现方式中,本申请实施例还提供一种软件漏洞检测的设备。如图9所示,为本申请实施例提供的一种软件漏洞检测的设备结构图。该设备中可以至少包括存储器901、处理器902和总线903。
[0149] 其中,存储器901和处理器902通过总线903进行连接,且总线903用于存储器901和处理器902之间传输数据;
[0150] 存储器901存储有程序代码,当程序代码被处理器902执行时,使得处理器902执行本申请中各种示例性实施方式的软件漏洞检测的方法中的任一步骤。
[0151] 具体的,执行软件漏洞检测的方法步骤可以参见上述方法实施例,在此不再赘述。
[0152] 本申请实施例提供一种可读存储介质,该可读存储介质为非易失性存储介质,可读存储介质为非易失性可读存储介质,包括程序代码,当程序代码在计算设备上运行时,程序代码用于使计算设备执行上述软件漏洞检测的方法中的任一步骤。
[0153] 本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,使计算设备执行上述软件漏洞检测的方法中的任一步骤。
[0154] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0155] 本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0156] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0157] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0158] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。