一种检测.net项目组件及其漏洞的方法和装置与流程

文档序号:25355088发布日期:2021-06-08 14:34阅读:83来源:国知局
一种检测.net项目组件及其漏洞的方法和装置与流程

1.本发明涉及软件安全技术领域,具体涉及一种检测.net项目组件及其漏洞的方法和装置。


背景技术:

2.目前,开发人员在进行.net项目开发时会广泛使用开源组件,据估计,每个应用程序的80%

90%都由开源组件组成。有研究显示,软件应用程序中使用的第三方组件中有一半已经过时,可能不安全。而在使用了开源组件的所有应用程序中,超过60%包含已知的软件漏洞。那么分析每个开源组件的漏洞,将会给项目的组成分析(sca)提供有效的信息支持。而在现有的对.net项目组件及漏洞检测的技术中,一是无法根据不同的项目类型识别出项目的组件,二是由于非完全自研组件一般是结合有自研内容和公开组件的内容,导致完全无法识别出非完全自研组件及其漏洞信息(包括不存在漏洞的信息)。
3.因此,有必要提供一种新的检测.net项目组件及其漏洞的方法,以解决上述问题。


技术实现要素:

4.本发明的目的在于提供一种检测.net项目组件及其漏洞的方法、装置、电子设备及计算机可读存储介质,能够识别出非完全自研组件及其漏洞信息。
5.为实现上述目的,本发明提供了一种检测.net项目组件及其漏洞的方法,包括:
6.(1)从.net项目的配置文件中提取其使用的所有组件的信息;
7.(2)将提取到的所有组件的信息与.net组件库中的开源组件的信息进行匹配,如果提取到的所述组件的信息匹配成功,进入步骤(3),如果提取到的所述组件的信息匹配不成功,进入步骤(4);
8.(3)将匹配成功的组件的信息与漏洞库进行匹配并获取对应组件的漏洞信息;
9.(4)将匹配不成功的组件与所述.net组件库中的开源组件进行内容相似度比较,如果所述.net组件库存在内容相似度达到预设标准的开源组件,进入步骤(5);
10.(5)将所述.net组件库中内容相似度达到预设标准的开源组件与所述漏洞库进行匹配并获取对应的漏洞信息。
11.可选地,所述步骤(1)包括:根据不同框架结构下的所述配置文件选择对应的编译工具进行编译,以提取所述.net项目所使用的所有组件的信息。
12.可选地,所述.net组件库通过定时器实时监控开源组件平台获取所述开源组件平台中的组件信息并实时更新。
13.可选地,所述漏洞库包括cve官网的漏洞信息;所述漏洞信息包括cpe信息,所述cpe信息与cve漏洞存在对应关系。
14.可选地,所述步骤(4)包括:
15.获取该匹配不成功的组件的文件哈希并与所述.net组件库中的开源组件进行比较以找出与该匹配不成功的组件具有最多哈希完全相同的文件个数的待判断开源组件;
16.判断哈希完全相同的文件个数占该所述待判断开源组件中的所有文件的比例;
17.如果哈希完全相同的文件个数所占的比例达到预设比例,则认为该待判断开源组件的内容相似度达到预设标准;
18.和/或
19.获取该匹配不成功的组件的文件内容并与所述.net组件库中的开源组件进行逐行比对以找出与该匹配不成功的组件具有最多内容完全相同的文件行数的待判断开源组件;
20.判断内容完全相同的文件行数占该所述待判断开源组件中的所有文件行数的比例;
21.如果内容完全相同的文件行数所占的比例达到预设比例,则认为该待判断开源组件的内容相似度达到预设标准。
22.可选地,所述步骤(4)中,如果所述.net组件库不存在内容相似度达到预设标准的开源组件,则判定该匹配不成功的组件为自研组件。
23.可选地,在所述步骤(2)之后,还包括:
24.将该匹配不成功的组件在所述开源组件平台中进行检索,确认该匹配不成功的组件是否存在于所述开源组件平台,若存在,则进入所述步骤(3),并将该匹配不成功的组件收录于所述.net组件库中;若不存在,则进入所述步骤(4)。
25.为实现上述目的,本发明还提供了一种检测.net项目组件及其漏洞的装置,包括:
26.提取模块,用于从.net项目的配置文件中提取其使用的所有组件的信息;
27.组件匹配模块,用于将提取到的所有组件的信息与.net组件库中的开源组件的信息进行匹配,如果提取到的所述组件的信息匹配成功,进入第一漏洞匹配模块,如果提取到的所述组件的信息匹配不成功,进入比较模块;
28.第一漏洞匹配模块,用于将匹配成功的组件的信息与漏洞库进行匹配并获取对应组件的漏洞信息;
29.比较模块,用于将匹配不成功的组件与所述.net组件库中的开源组件进行内容相似度比较,如果所述.net组件库存在内容相似度达到预设标准的开源组件,进入第二漏洞匹配模块;
30.第二漏洞匹配模块,用于将所述.net组件库中内容相似度达到预设标准的开源组件与所述漏洞库进行匹配并获取对应的漏洞信息。
31.为实现上述目的,本发明还提供了一种电子设备,包括:
32.处理器;
33.存储器,其中存储有所述处理器的可执行指令;
34.其中,所述处理器配置为经由执行所述可执行指令来执行如上所述的检测.net项目组件及其漏洞的方法。
35.为实现上述目的,本发明还提供了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现如上所述的检测.net项目组件及其漏洞的方法。
36.本发明在提取到的组件的信息与.net组件库中的开源组件的信息匹配不成功时,将该匹配不成功的组件与.net组件库中的开源组件进行内容相似度比较,如果.net组件库存在内容相似度达到预设标准的开源组件,则可以将其与漏洞库进行匹配并获取对应的漏
洞信息,进而本发明能够识别出非完全自研组件及其漏洞信息。
附图说明
37.图1是本发明实施例检测.net项目组件及其漏洞的方法的流程图。
38.图2是本发明实施例检测.net项目组件及其漏洞的方法的另一流程图。
39.图3是本发明实施例检测.net项目组件及其漏洞的方法的再一流程图。
40.图4是本发明实施例检测.net项目组件及其漏洞的装置的示意框图。
41.图5是本发明实施例电子设备的示意框图。
具体实施方式
42.为了详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
43.实施例一
44.请参阅图1至图3,本发明公开了一种检测.net项目组件及其漏洞的方法,包括:
45.s1、从.net项目的配置文件中提取其使用的所有组件的信息。
46.具体地,.net平台目前具有三个主流框架,一个是.netframework,另一个是.netcore,还有一个是xamarin,而针对不同框架的.net项目的配置文件需要对应的编译工具去进行项目组件的解析;针对.netframework框架的packages.config文件会选择nuget编译工具;针对.netcore框架的global.json文件会选择dotnet编译工具;针对xamarin框架的.csproj文件会选择dotnet编译工具。针对不同框架结构下的配置文件使用与之对应的编译工具进行编译,从而获得.net项目使用的所有组件的信息。
47.进一步地,若无法通过编译工具从配置文件中获取组件信息,则可硬解析配置文件的内容,提取出组件信息。
48.s2、将提取到的所有组件的信息与.net组件库中的开源组件的信息进行匹配,如果提取到的组件的信息匹配成功,进入步骤s3,如果提取到的组件的信息匹配不成功,进入步骤s4。
49.具体地,.net组件库通过定时器实时监控开源组件平台获取开源组件平台中的组件信息并实时更新组件信息;由此可以使得.net组件库不断更新收录新的开源组件,避免.net项目的一些出现于开源组件平台的新组件无法在.net组件库中找到。
50.这里的开源组件平台主要包括一些汇聚了各大厂商和个人开发者所开发的项目的社区,还可以包括一些代码托管平台,如github、gittee等。
51.具体地,请参阅图2,在步骤s2之后,还可以包括:步骤s6:将该匹配不成功的组件在开源组件平台中进行检索,确认该匹配不成功的组件是否存在于开源组件平台,若存在,则进入步骤s3,并将该匹配不成功的组件收录于.net组件库中;若不存在,则进入步骤s4。在.net组件库存在手动更新数据的情况时,.net组件库可能未能及时收录开源组件平台的新组件,通过将匹配不成功的组件在开源组件平台中进行检索,可以确保不会出现存在于开源组件平台的组件却未能匹配的情况。
52.s3、将匹配成功的组件的信息与漏洞库进行匹配并获取对应组件的漏洞信息。
53.具体地,漏洞库包括cve(common vulnerabilities and exposures)官网的漏洞
信息,cve为广泛认同的信息安全漏洞或者已经暴露出来的弱点给出的一个公共的名称。使用一个共同的名称可以帮助用户在各自独立的各种漏洞数据库中和漏洞评估工具中共享数据。
54.具体地,cve官网中具有漏洞的详细信息,其中包括漏洞的cpe信息,一个cve漏洞可能包括多个cpe信息,而一个cpe信息也可能存在于多个cve漏洞之中(参照下表),因此cpe信息和cve漏洞存在对应关系,能够通过cpe信息匹配其对应的cve漏洞,而cpe信息中存在有对应开源组件的名称及版本信息,可使开源组件与cve漏洞之间相匹配。
[0055][0056]
cpe的格式如下:
[0057]
cpe:2.3:part:vendor:product:version:update:edition:language:sw_edition:target_sw:target_hw:other
[0058]
其中,part表示目标类型,part可以是a、h、o中的任意一种,a表示应用程序,h表示硬件平台,o表示操作系统;vendor表示厂商;product表示产品名称;version表示版本号;update表示更新包;edition表示版本;language表示语言项。
[0059]
下表给出了一示例cpe信息的示意图。
[0060][0061]
其中,cpe开头是格式,2.3表示的采用2.3版本协议的cpe,o表示os操作系统,redhat表示的某一个厂商,enterprise_linux表示该厂商的某一产品,6.0表示的是该产品的版本号。
[0062]
具体地,由于某些开源组件的信息可能未收录于漏洞库,可能存在即使待检测组件在.net组件库中能够匹配成功,也无法在漏洞库中匹配成功的情况。
[0063]
s4、将匹配不成功的组件与.net组件库中的开源组件进行内容相似度比较,如果.net组件库存在内容相似度达到预设标准的开源组件,进入步骤s5。
[0064]
具体地,预设标准可以为百分比数据,可以根据多次实践的经验得到,也可直接按需求个性化设置。
[0065]
进一步地,如果.net组件库存在内容相似度达到预设标准的开源组件,则可认为该匹配不成功的组件修改自开源组件。
[0066]
具体地,步骤s4可以包括:
[0067]
获取该匹配不成功的组件的文件哈希并与.net组件库中的开源组件进行比较以
找出与该匹配不成功的组件具有最多哈希完全相同的文件个数的待判断开源组件;
[0068]
判断哈希完全相同的文件个数占该待判断开源组件中的所有文件的比例;
[0069]
如果哈希完全相同的文件个数所占的比例达到预设比例,则认为该待判断开源组件的内容相似度达到预设标准。
[0070]
比如,若匹配不成功的组件有10个文件与待判断开源组件的文件哈希完全相同,且该待判断开源组件总共有20个文件,则这两个组件的相似度为50%。
[0071]
具体地,步骤s4可以包括:
[0072]
获取该匹配不成功的组件的文件内容并与.net组件库中的开源组件进行逐行比对以找出与该匹配不成功的组件具有最多内容完全相同的文件行数的待判断开源组件;
[0073]
判断内容完全相同的文件行数占该待判断开源组件中的所有文件行数的比例;
[0074]
如果内容完全相同的文件行数所占的比例达到预设比例,则认为该待判断开源组件的内容相似度达到预设标准。
[0075]
比如,若匹配不成功的组件有50行文件内容与待判断开源组件的文件内容完全相同,且该待判断开源组件总共有100行文件内容,则这两个组件的相似度为50%。
[0076]
上述两种判断组件之间相似度的方法既可以单独使用,也可组合使用。而且,判断组件之间相似度的方法也不局限于此。
[0077]
进一步地,请参阅图3,在步骤s4中,如果.net组件库不存在内容相似度达到预设标准的开源组件,则判定该匹配不成功的组件为自研组件,该组件无法与漏洞库进行匹配并获取对应漏洞信息。
[0078]
s5、将.net组件库中内容相似度达到预设标准的开源组件与漏洞库进行匹配并获取对应的漏洞信息。
[0079]
本发明在提取到的组件的信息与.net组件库中的开源组件的信息匹配不成功时,将该匹配不成功的组件与.net组件库中的开源组件进行内容相似度比较,如果.net组件库存在内容相似度达到预设标准的开源组件,则可以将其与漏洞库进行匹配并获取对应的漏洞信息,进而本发明能够识别出非完全自研组件及其漏洞信息。
[0080]
实施例二
[0081]
请参阅图4,本发明还提供了一种检测.net项目组件及其漏洞的装置,包括:
[0082]
提取模块100,用于从.net项目的配置文件中提取其使用的所有组件的信息;
[0083]
组件匹配模块200,用于将提取到的所有组件的信息与.net组件库中的开源组件的信息进行匹配,如果提取到的组件的信息匹配成功,进入第一漏洞匹配模块300,如果提取到的组件的信息匹配不成功,进入比较模块400;
[0084]
第一漏洞匹配模块300,用于将匹配成功的组件的信息与漏洞库进行匹配并获取对应组件的漏洞信息;
[0085]
比较模块400,用于将匹配不成功的组件与.net组件库中的开源组件进行内容相似度比较,如果.net组件库存在内容相似度达到预设标准的开源组件,进入第二漏洞匹配模块500;
[0086]
第二漏洞匹配模块500,用于将.net组件库中内容相似度达到预设标准的开源组件与漏洞库进行匹配并获取对应的漏洞信息。
[0087]
本发明在提取到的组件的信息与.net组件库中的开源组件的信息匹配不成功时,
将该匹配不成功的组件与.net组件库中的开源组件进行内容相似度比较,如果.net组件库存在内容相似度达到预设标准的开源组件,则可以将其与漏洞库进行匹配并获取对应的漏洞信息,进而本发明能够识别出非完全自研组件及其漏洞信息。
[0088]
实施例三
[0089]
请参阅图5,本发明还提供了一种电子设备,包括:
[0090]
处理器40;
[0091]
存储器50,其中存储有处理器40的可执行指令;
[0092]
其中,处理器40配置为经由执行可执行指令来执行如实施例一的检测.net项目组件及其漏洞的方法。
[0093]
实施例四
[0094]
本发明还提供一种计算机可读存储介质,其上存储有程序,程序被处理器执行时实现如上述实施例一的检测.net项目组件及其漏洞的方法。
[0095]
本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该电子设备执行上述检测.net项目组件及其漏洞的方法。
[0096]
应当理解,在本发明实施例中,所称处理器可以是中央处理模块(centralprocessing unit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0097]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read

only memory,rom)或随机存储记忆体(random accessmemory,ram)等。
[0098]
以上所揭露的仅为本发明的较佳实例而已,不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,均属于本发明所涵盖的范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1