一种对过滤出的漏洞数据进行验证的方法和系统与流程

文档序号:29317055发布日期:2022-03-19 22:00阅读:101来源:国知局
一种对过滤出的漏洞数据进行验证的方法和系统与流程

1.本发明涉及软件安全检测技术领域,尤其涉及一种对过滤出的漏洞数据进行验证的方法和系统。


背景技术:

2.目前,主要是依据已知漏洞库、漏洞公开信息进行目标软件的安全性检测,尤其是根据cve安全漏洞库,进行漏洞检测。通过设定条件对已知漏洞库进行过滤操作,但是,虽然cve安全漏洞库具有权威性,毕竟它属于国外,对于很多国内软件的安全漏洞并没有记载,即使记载,软件名称也存在不一致的情况。在国内软件安全检测时,还需要考虑其他多种来源。实践中,根据目标软件,过滤出来的与目标软件相关的漏洞数据经常存在误报漏洞的情况。


技术实现要素:

3.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的技术方案。因此,本发明的一个方面,提供了一种对过滤出的漏洞数据进行验证的方法,该方法包括:对与目标软件相关的漏洞数据的cpe 信息提取版本号信息;基于语义匹配或者分词匹配判断所述版本号信息是否与漏洞描述信息相符;如果相符,则判断所述版本号信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;如果不相符,则判断所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并根据漏洞描述信息更新cpe信息;如果所述所述漏洞描述信息未覆盖目标软件的版本号,则通过预定平台查询所述漏洞数据的cpe信息、漏洞描述信息;基于所述查询到的所述cpe信息的版本号信息,判断是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并更新漏洞过滤数据;如果没有覆盖,则判断所述查询到的所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并更新漏洞过滤数据;如果所述漏洞描述信息没有覆盖目标软件的版本号,则确定该漏洞过滤数据未通过验证。
4.可选的,该方法还包括:判断查询到的漏洞数据是否具有reject或者 reserved标识,如果是,则则确定该漏洞过滤数据未通过验证。
5.可选的,通过正则表达式实现所述语义匹配或者分词匹配。
6.本发明还提供一种对过滤出的漏洞数据进行验证的系统,该系统包括:
7.版本号信息提取模块,用于与目标相关的漏洞数据cpe信息提取版本号信息;
8.漏洞数据自身检测模块,用于基于语义匹配或者分词匹配判断所述版本号信息是否与漏洞描述信息相符;第一版本号匹配模块,如果相符,则判断所述版本号信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;第二版本号匹配模块,如果不相符,则判断所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;漏洞数据更新模块,根据所述漏洞描述信息更新cpe信息;漏洞数据查
询模块,用于如果所述所述漏洞描述信息未覆盖目标软件的版本号,通过预定平台查询所述漏洞数据的cpe信息、漏洞描述信息;所述第一版本号匹配模块基于所述查询到的所述cpe信息的版本号信息,判断是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;所述漏洞数据更新模块,根据所述查询到的所述cpe信息更新漏洞过滤数据;如果没有覆盖,第二版本号匹配模块判断所述查询到的所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并更新;所述漏洞数据更新模块,如果所述漏洞描述信息没有覆盖目标软件的版本号,则确定该漏洞过滤数据未通过验证。
9.可选的,该系统还包括:漏洞数据标识识别模块,用于判断查询到的漏洞数据是否具有reject或者reserved标识,如果是,则确定该漏洞过滤数据未通过验证,该漏洞不存在。
10.可选的,所述第二版本号匹配模块通过语义匹配方式或者分词匹配方式判断所述漏洞描述信息是否覆盖目标软件的版本号。
11.可选的,所述第二版本号匹配模块通过正则表达式判断所述漏洞描述信息是否覆盖目标软件的版本号。
12.本技术提供的技术方案,至少具有如下技术效果或优点:通过本发明,一方面能够对与目标软件相关的漏洞数据进行自身准确性验证,一方面对目标软件存在漏洞过滤数据表达的漏洞进行验证,从而保证对目标软件进行漏洞检测的准确性。
13.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述技术方案和其目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
14.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
15.图1示出了本发明涉及到的一种漏洞数据过滤方法的流程图;
16.图2示出了本发明提出的一种对过滤出的漏洞数据进行验证的方法的流程图。
具体实施方式
17.下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
18.本领域安全专家一般会通过漏洞库平台了解最新发现的漏洞信息,目前国内外常用的漏洞平台有:美国国家信息安全漏洞库nvd、全球信息安全漏洞指纹库与文件检测服务cvescan、cve平台、securityfocus平台、cnvd 平台、cnnvd平台,还有绿盟科技的nsfocus平台,这些平台会按期公布发现的软件漏洞。前面已经详细说明,在此不再赘述。另外,各软件厂商、网络公司也会公布发现的软件漏洞;商业软件在软件版本升级时一般会公布软件升级所修复的之前版本出现存在的漏洞。通过上述说明可发现,漏洞公开信息来源广泛。利用
已知的漏洞进行预定软件的安全性检测工作时,首先需要在多源的漏洞数据中过滤出与目标软件相关的漏洞数据,再根据这些相关的漏洞数据解析、判断目标软件存在什么漏洞。
19.cve为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出的一个公共的名称。使用一个共同的名称可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据。具体地,cve官网中具有漏洞的详细信息,其中包括漏洞的cpe信息,一个cve漏洞可能包括多个cpe信息,而一个cpe信息也可能存在于多个cve漏洞之中,因此cpe信息和cve漏洞存在对应关系,能够通过cpe信息匹配其对应的cve漏洞,而cpe信息中存在有对应开源组件的名称及版本信息,可使开源组件与cve漏洞之间相匹配。
20.cpe的格式如下:
21.cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_s w:target_hw:other其中,part表示目标类型,part可以是a、h、o中的任意一种, a表示应用程序,h表示硬件平台,o表示操作系统;vendor表示厂商;product 表示产品名称;version表示版本号;update表示更新包;edition表示版本;language 表示语言项。下面给出了一示例cpe信息。其中,cpe开头是格式,2.3表示的采用2.3版本协议的cpe,o表示os操作系统,redhat表示的某一个厂商, enterprise_linux表示该厂商的某一产品,6.0表示的是该产品的版本号。
22.nvd官网提供的cve漏洞的详细描述中就包括有cpe信息(officialcommon platform enumeration(cpe)dictionary),如: cpe:2.3:a:fasterxml:jackson-databind:2.7.8:*:*:*:*:*:*:*;可通过匹配cpe信息和开源组件信息来获得开源组件的cve漏洞。cpe信息的标准格式大致为:cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:tar get_hw:other,其中,cpe开头是格式;2.3表示采用2.3版本协议的cpe(现在基本都是采用2.3版本协议);part表示目标类型,允许的值有a(应用程序)、h (硬件平台)、o(操作装置);vendor表示厂商;product表示厂商的产品名称; version表示产品的版本号;update表示更新包;edition表示版本;language表示语言项。再例如,cpe:2.3:o:redhat:enterprise_linux:6.0:*:*:*:*:*:*:*,cpe开头是格式,2.3表示的采用2.3版本协议的cpe,o表示os操作装置,redhat表示厂商, enterprise_linux表示这个厂商的产品,6.0表示这个产品的版本号。
23.cpe信息具有规定的格式,规范性地存有漏洞软件的各种不同属性信息。下面首先给出一种基于目标软件进行漏洞数据过滤的方法,再给出对于过滤出的漏洞数据进行准确性验证的过程。
24.本发明的一个方面,提供了一种漏洞数据过滤方法,如图1所示,该方法包括:
25.提取漏洞数据的cpe信息;将目标软件的包名与所述cpe信息中的原始包名进行匹配;
26.如果原始包名匹配失败,则基于所述原始包名查询软件包命名矩阵,以获取所述原始包名的别名,有关软件包命名矩阵,后续再进行详细说明。
27.将目标软件的包名与所述cpe信息中的别名进行匹配;
28.如果原始包名匹配成功或者如果别名匹配成功,则将目标软件的版本号与所述cpe信息中的版本号进行匹配;
29.如果别名匹配失败,则判断该漏洞数据不影响目标软件。
30.如果版本号匹配成功,则过滤出该漏洞数据,作为第一优先漏洞数据;
31.如果版本号匹配失败,则过滤出该漏洞数据,作为第二优先漏洞数据;
32.该方法能够根据目标软件包及版本号列表,对多个来源的漏洞数据进行过滤,以过滤出与目标软件相关的漏洞,其中包含通过软件包名矩阵来进行包名的匹配,从而提高过滤器的覆盖率,并为目标软件的最终安全漏洞分析结果提供了全面的数据基础。
33.由于有的软件限制有运行环境,比如运行在windows操作系统、android 安卓系统、或者ios系统,那就只能运行在这些操作系统,比如说;表明运行在 windows操作系统的软件不大可能能够运行在android操作系统或者ios系统,那么运行在windows操作系统的软件,即使与运行在android操作系统或者ios 系统的软件包名称相同,也不可能存在相同的漏洞。有的软件不限制运行环境,那么有可能在不同的操作系统上运行,或者不确定在哪个操作系统上运行。这种情况下,只要软件包名称以及版本信息能够匹配上,就有可能存在同样的漏洞。因此该方法还包括:判断所述cpe信息是否包含漏洞数据运行环境信息;如果不包含运行环境信息,则不需要进行运行环境信息的匹配;如果包含运行环境信息,则还需要进行运行环境信息的匹配;如果运行环境信息不匹配,则确定该漏洞数据不影响目标软件。所述运行环境信息一般为包含running with或者running on的字段。
34.将目标软件的版本号与所述cpe信息中的版本号进行匹配,包括:输入目标软件的版本号与所述cpe信息中的版本号;判断版本号数据是否存在“.”以外的字符,如果存在,则将其他字符替换为“.”;利用“.”分割版本号;从最前面位起按照位比较版本号。
35.从最前面位起按照位比较版本号,包括:判断是否存在字母;如果存在,将当前位的数字转换为整数类型,再比较大小,数字较大的,确定为较新版本;如果目标软件的版本为较新版本,则判断为模糊漏洞;如果漏洞数据的版本为较新版本,则判断为存在漏洞。
36.相对应上述漏洞数据过滤方法,本发明还提供一种漏洞数据过滤系统,该系统包括:cpe信息提取模块,用于提取漏洞数据的cpe信息;包名匹配模块,用于将目标软件的包名与所述cpe信息中的原始包名进行匹配;版本号匹配模块,如果原始包名匹配成功,则将目标软件的版本号与所述cpe信息中的版本号进行匹配;软件包命名矩阵查询模块,如果原始包名匹配失败,则基于所述原始包名查询软件包命名矩阵,以获取所述原始包名的别名;所述包名匹配模块还用于将目标软件的包名与所述cpe信息中的别名进行匹配;如果别名匹配成功,则版本号匹配模块,将目标软件的版本号与所述cpe信息中的版本号进行匹配;漏洞数据过滤模块,如果版本号匹配成功,则过滤出该漏洞数据,作为第一优先漏洞数据;如果版本号匹配失败,则过滤出该漏洞数据,作为第二优先漏洞数据;如果别名匹配失败,则判断该漏洞数据不影响目标软件。
37.该系统还包括:运行环境判断模块,用于判断所述cpe信息是否包含漏洞数据运行环境信息;如果不包含运行环境信息,则不需要进行运行环境信息的匹配;环境信息匹配模块,如果包含运行环境信息,用于进行运行环境信息的匹配,如果运行环境信息不匹配,则确定该漏洞数据不影响目标软件。
38.所述版本号匹配模块包括:版本号获取子模块,用于输入目标软件的版本号与所述cpe信息中的版本号;信息处理子模块,用于判断版本号数据是否存在“.”以外的字符,如果存在,则将其他字符替换为“.”;利用“.”分割版本号;比较子模块,用于从最前面位起按照位比较版本号。
39.所述比较子模块执行下述步骤:判断是否版本信息中是否存在字母;如果存在,则指示信息处理子模块将当前位的数字转换为整数类型,再比较大小,数字较大的,确定为较新版本。
40.本发明还提供一种信息存储介质,该信息存储介质存储有计算机程序,所述计算机程序用于执行前面所述的漏洞数据过滤方法。
41.通过上面说明,本发明提供了一种对漏洞数据进行过滤的解决方案,使得能够根据目标软件包及版本号列表,对多个来源的漏洞数据进行过滤,以过滤出与目标软件相关的漏洞,其中包含通过软件包名矩阵来进行包名的匹配,从而提高过滤器的覆盖率,该技术方案为目标软件的最终安全漏洞分析结果提供了全面的数据基础。
42.前面提到软件包命名矩阵,下面对建软件包命名矩阵进行说明。
43.在进行漏洞数据的信息收集时,需要实时提取很多不同的操作系统中的软件包信息,包括软件包的名称,但是不同的操作系统中对软件包的命名方式不同,从而导致名称不同。在漏洞识别时,如果仅仅根据已知漏洞的软件包名称进行收集、识别,很容易就将名称不同但实质上相同的软件遗漏,从对漏洞的识别产生影响。
44.本技术通过抽取所有操作系统的软件包的spec文件的上游源的信息,如果上游源相同,说明这两个软件包实质上是同一个软件包。基于所述上游源的信息确定基于相同上游源的软件包,这些软件包的包名称之间建立映射关系,互为别名,基于这些包名称构建软件包命名矩阵。举例来说,openeuler操作系统的软件包的名称是“python-memcached”,而opensuse操作系统的软件包的名称却是“memcached”,两个软件包名称不同,但是由相同的上游源文件编译的,但其实是同一个软件包。因此可通过下述方法构建软件包命名矩阵:
45.获取各操作系统的已知漏洞软件的开源文件信息;根据所述开源文件信息解析出漏洞受影响的上游开源组件信息;对各已知漏洞软件的上述上游开源组件信息进行匹配,如果匹配成功,则建立所述上游组件名称、漏洞软件包名称的映射关系;基于所述映射关系形成软件包命名矩阵。
46.除了上述方式,还可通过另一种方式构建软件包命名矩阵,包括:
47.根据已知漏洞软件的cpe信息,获取到该漏洞对应软件包中的上游开源组件名称;实时根据上游开源组件名称获取基于该上游开源组件开发的其他软件包名称,并建立所述上游组件名称、所述对应软件包名称、其他软件包名称之间的映射关系;基于所述映射关系形成软件包命名矩阵。
48.上述方法主要用于lunix开源工程,通过解析软件包中的spec文件、control 文件等配置文件,这些配置文件记录了软件是由上游的哪些开源组件编译来的,基于同样的上游开源组件编译的软件,被认为实质上是同一软件,可能存在同样的漏洞。
49.本技术不仅利用目标软件的包名进行匹配,还通过目标软件的别名、构建的已知漏洞软件的别名进行匹配,以全面检测并过滤出与目标软件有关的漏洞,从而保证漏洞数据获取的全面性。
50.虽然通过上述技术手段过滤出了与目标软件相关的漏洞数据,如果直接依据这些漏洞数据就认为目标软件存在相应的漏洞并进行安全警报的话,会出现漏洞识别错误的情况。因此本发明提出一种对过滤出的漏洞数据进行验证的方法。
51.下面,本发明试图利用漏洞数据的影响范围信息进行漏洞数据自身的准确性验证
以及是否覆盖目标软件的验证。漏洞的影响范围信息,即影响的版本范围,可通过三种方式抽取,一种是直接从cpe信息中提取,第二种是漏洞描述信息中抽取,第三种是通过修复软件信息中提取出。利用漏洞数据的自身数据特点,即具有cpe信息和漏洞描述信息,进行漏洞数据自身的校准,再利用漏洞数据的影响范围信息(软件版本范围信息)与目标软件的版本信息进行匹配,判断漏洞数据的影响范围是否覆盖目标软件的版本,从而进行漏洞数据的验证过程。
52.鉴于此,本发明的一个方面,如图2所示,提供了一种对过滤出的漏洞数据进行验证的方法,该方法包括:对与目标软件相关的漏洞数据的cpe信息提取版本号信息;基于语义匹配或者分词匹配判断所述版本号信息是否与漏洞描述信息相符;如果相符,则判断所述版本号信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;如果不相符,则判断所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并根据漏洞描述信息更新cpe信息;如果所述漏洞描述信息未覆盖目标软件的版本号,则通过预定平台查询所述漏洞数据的cpe信息、漏洞描述信息;基于所述查询到的所述cpe信息的版本号信息,判断是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并更新漏洞过滤数据;如果没有覆盖,则判断所述查询到的所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并更新漏洞过滤数据;如果所述漏洞描述信息没有覆盖目标软件的版本号,则确定该漏洞过滤数据未通过验证。
53.本发明创新性地通过将过滤出的漏洞数据本身的cpe信息中版本号段信息与漏洞描述信息中的版本号段信息进行匹配,来对漏洞数据的正确性进行验证。而且确定以漏洞描述描述信息优先,毕竟cpe信息是系统格式化处理的结果,相对于漏洞描述数据,更容易出错。另一方面,充分利用权威平台上公布的漏洞数据,进行错误漏洞数据的补充以及验证。
54.该方法还包括:判断查询到的漏洞数据是否具有reject或者reserved 标识,如果是,则确定该漏洞过滤数据未通过验证。因为在cvd平台有些漏洞数据临时是被进行了不是漏洞数据或者有待进一步验证的特别标识,由于漏洞数据本来是从多个方面收集来的,通过权威平台验证到漏洞数据标识有类似标记时,就可排除目标软件存在对应漏洞的可能。
55.可选的,通过正则表达式实现所述语义匹配或者分词匹配。
56.本发明还提供一种对过滤出的漏洞数据进行验证的系统,该系统包括:版本号信息提取模块,用于与目标相关的漏洞数据cpe信息提取版本号信息;漏洞数据自身检测模块,用于基于语义匹配或者分词匹配判断所述版本号信息是否与漏洞描述信息相符;第一版本号匹配模块,如果相符,则判断所述版本号信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;第二版本号匹配模块,如果不相符,则判断所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;漏洞数据更新模块,根据所述漏洞描述信息更新cpe信息;漏洞数据查询模块,用于如果所述所述漏洞描述信息未覆盖目标软件的版本号,通过预定平台查询所述漏洞数据的cpe信息、漏洞描述信息;所述第一版本号匹配模块基于所述查询到的所述cpe信息的版本号信息,判断是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证;所述漏洞数据更新模块,根据所述查询到的所述 cpe信息更新漏洞过滤数据;如果没有覆盖,第二版本号匹配
模块判断所述查询到的所述漏洞描述信息是否覆盖目标软件的版本号,如果覆盖,则确定该漏洞过滤数据通过验证,并更新;所述漏洞数据更新模块,如果所述漏洞描述信息没有覆盖目标软件的版本号,则确定该漏洞过滤数据未通过验证。
57.可选的,该系统还包括:漏洞数据标识识别模块,用于判断查询到的漏洞数据是否具有reject或者reserved标识,如果是,则确定该漏洞过滤数据未通过验证,该漏洞不存在。
58.可选的,所述第二版本号匹配模块通过语义匹配方式或者分词匹配方式判断所述漏洞描述信息是否覆盖目标软件的版本号。
59.可选的,所述第二版本号匹配模块通过正则表达式判断所述漏洞描述信息是否覆盖目标软件的版本号。
60.本技术提供的技术方案,至少具有如下技术效果或优点:通过本发明,一方面能够对与目标软件相关的漏洞数据进行自身准确性验证,一方面对目标软件存在漏洞过滤数据表达的漏洞进行验证,从而保证对目标软件进行漏洞检测的准确性。
61.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
62.类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
63.应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1