应用程序的漏洞可达性分析方法、装置、设备及介质与流程

文档序号:33033718发布日期:2023-01-24 18:15阅读:35来源:国知局
应用程序的漏洞可达性分析方法、装置、设备及介质与流程

1.本发明涉及漏洞检测领域,尤其涉及一种应用程序的漏洞可达性分析方法、装置、设备以及介质。


背景技术:

2.应用程序的漏洞可达性分析是指为了解决应用程序中所引用的开源组件中漏洞未被使用但被误检测到的问题,找出应用程序中是否存在真正被利用的漏洞,减少漏洞的误报率,而进行的检测应用程序中开源组件的漏洞是否被真正利用的过程。
3.目前市场上有很多软件成分分析工具,能够分析应用程序中第三方的开源组件信息,然后根据对应版本的开源组件的漏洞信息,来识别应用程序中漏洞风险,但基于这种方法的风险识别是不准确的,因为可能该应用程序可能只是引用了这个组件,而没有使用这个组件的任何模块或者方法,又或者使用的模块或者方法没有漏洞利用,在类似这种情况下,该组件是没有漏洞风险的,由于只是做了一层简单的分析和关联,没有深度分析应用程序中是否使用了含有漏洞的模块或者方法,这样会导致一部分的误报情况。因此,应用程序的漏洞可达性分析准确率不足。


技术实现要素:

4.本发明提供了一种应用程序的漏洞可达性分析方法、装置、设备以及介质,至少能够解决相关技术中所提供的应用程序漏洞可达性分析手段的准确率不足的问题。
5.第一方面,本发明提供了一种应用程序的漏洞可达性分析方法,包括:获取应用程序及预构建的漏洞组件库,所述漏洞组件库通过漏洞信息、组件信息以及源码信息进行构建;在所述应用程序中存在包管理器时,解析所述应用程序中的组件坐标,基于所述组件坐标,从所述漏洞组件库中查询所述应用程序的组件源码和组件漏洞,以执行对所述应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果;在所述应用程序中未存在包管理器时,解析所述应用程序中的组件特征,基于所述组件特征,从所述漏洞组件库中查询所述应用程序的组件漏洞特征,以执行对所述应用程序进行组件漏洞可达分析,得到第二漏洞可达分析结果。
6.第二方面,本发明提供了一种应用程序的漏洞可达性分析装置,所述装置包括:组件库构建模块、第一结果确定模块及第二结果确定模块;
7.组件库构建模块,用于获取应用程序及预构建的漏洞组件库,所述漏洞组件库通过漏洞信息、组件信息以及源码信息进行构建;第一结果确定模块,用于在所述应用程序中存在包管理器时,解析所述应用程序中的组件坐标,基于所述组件坐标,从所述漏洞组件库中查询所述应用程序的组件源码和组件漏洞,以执行对所述应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果;第二结果确定模块,用于在所述应用程序中未存在包管理器时,解析所述应用程序中的组件特征,基于所述组件特征,从所述漏洞组件库中查询所述应用程序的组件漏洞特征,以执行对所述应用程序进行组件漏洞可达分析,得到第二漏洞
可达分析结果。
8.第三方面,本发明提供了一种电子设备,包括:
9.至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
10.其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,以使所述至少一个处理器能够执行如上述第一方面中任意一项所述的应用程序的漏洞可达性分析方法。
11.第四方面,本发明提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面中任意一项所述的应用程序的漏洞可达性分析方法。
12.与现有技术相比,本方案的技术原理及有益效果在于:
13.本发明实施例通过获取应用程序及预构建的漏洞组件库,以用于分析所述应用程序中是否引用了开源组件所携带的漏洞,进一步地,本发明实施例在所述应用程序中存在包管理器时,通过解析所述应用程序中的组件坐标,以用于确定利用所述组件坐标确定所述应用程序中存在的组件,保障后续分析应用程序中的组件的漏洞是否被引用,进一步地,本发明实施例通过基于所述组件坐标,从所述漏洞组件库中查询所述应用程序的组件源码和组件漏洞,以用于执行对所述应用程序的组件漏洞可达分析,保障对漏洞检测的准确率,进一步地,本发明实施例通过对所述应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果,以用于检测被应用程序所引用的开源组件中的漏洞是否也同样被所述应用程序所引用,提升对漏洞可达性分析的准确率;
14.进一步地,本发明实施例在所述应用程序中未存在包管理器时,通过解析所述应用程序中的组件特征,以用于利用所述组件特征标记所述应用程序中的组件信息,提升了对应用程序中的组件信息进行全文检索的效率,进一步地,本发明实施例通过基于所述组件特征,从所述漏洞组件库中查询所述应用程序的组件漏洞特征,以用于利用所查询到的组件漏洞特征时确定所述应用程序中的漏洞可达性,进一步地,本发明实施例通过对所述应用程序进行组件漏洞可达分析,以用于检测被应用程序所引用的开源组件中的漏洞是否也同样被所述应用程序所引用,提升对漏洞可达性分析的准确率。因此,本发明实施例提出的一种应用程序的漏洞可达性分析方法、装置、设备以及介质,可以提高应用程序的漏洞可达性分析准确性。
附图说明
15.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
16.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明一实施例提供的一种应用程序的漏洞可达性分析方法的流程示意图;
18.图2为本发明一实施例中提供的所述漏洞信息的采集过程的流程示意图;
19.图3至图4为本发明一实施例中提供的所述漏洞调用方法的查询过程的流程示意
图;
20.图5为本发明一实施例提供的一种应用程序的漏洞可达性分析装置的模块示意图;
21.图6为本发明一实施例提供的实现应用程序的漏洞可达性分析方法的电子设备的内部结构示意图。
具体实施方式
22.应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
23.本发明实施例提供一种应用程序的漏洞可达性分析方法,应用程序的漏洞可达性分析方法的执行主体包括但不限于服务端、终端等能够被配置为执行本发明实施例提供的该方法的电子设备中的至少一种。换言之,应用程序的漏洞可达性分析方法可以由安装在终端设备或服务端设备的软件或硬件来执行,软件可以是区块链平台。服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(content delivery network,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。
24.参阅图1所示,是本发明一实施例提供的应用程序的漏洞可达性分析方法的流程示意图。其中,图1中描述的应用程序的漏洞可达性分析方法包括:
25.s1、获取应用程序及预构建的漏洞组件库,漏洞组件库通过漏洞信息、组件信息以及源码信息进行构建。
26.本发明实施例通过获取应用程序及预构建的漏洞组件库,以用于分析应用程序中是否引用了开源组件所携带的漏洞。其中,应用程序是指为了完成某项或某几项特定任务而被开发运行于操作系统之上的计算机程序,简而言之是程序代码。预构建的漏洞组件库是指包含开源组件、开源组件的漏洞数据、开源组件的源代码信息的组件库,在漏洞组件库中,一个组件信息表包括组件的名称与版本号等信息;根据漏洞信息可以将组件与组件的漏洞进行映射,不同版本的组件可能有多个漏洞,所以组件和漏洞是1对多的关系;源码信息即这个组件对应的所有源码信息,不同版本的组件包括这个组件的所有方法与所有类这块的信息,且一个组件对应多个源码信息,通过漏洞的reference可以知道漏洞所在的代码位置信息和方法名称信息,每个漏洞可能涉及多个方法,同样的每个方法可能存在多个漏洞,所以源码信息和漏洞信息是多对多的关系。
27.需要说明的是,漏洞组件库通过漏洞信息、组件信息以及源码信息进行构建。其中,漏洞信息是指在网上所能搜集到的代码漏洞信息,利用网上漏洞信息的收集器收集各种漏洞平台的漏洞信息,并根据漏洞信息的链接信息查找对应的代码片段信息,例如,目前最常用的是cve漏洞收集器,某cve漏洞收集器的漏洞收集结果的页面展示为https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2022-24434的网址页面,页面展示中包含references模块,用于记录关于漏洞的代码片段信息的链接网址,例如https://github.com/mscdex/busboy/issues/250记录的是漏洞的发现的信息,而https://github.com/mscdex/dicer/pull/22记录的是漏洞的代码片段信息,通过这个cve漏洞收集
器可以将漏洞相关信息保存到数据库中,如cve漏洞的风险等级、各种利用分数以及描述信息等等,其中最重要的信息为references信息,这样可以生成漏洞库信息。组件信息是指包含漏洞信息的组件信息,源码信息是指组件信息所涉及的源码信息,首先提取漏洞库中含有代码库标记的信息,如上述的分析漏洞库中每一个漏洞的references信息,将references中含有代码托管平台的漏洞整理出来,代码平台比如github,gittee等等,其次分析该代码托管平台中的url信息,如上述例子中的https://github.com/mscdex/busboy/issues/250链接中可以提取该漏洞代码对应的仓库信息,在仓库信息中可以得知该组件是busboy组件,在这个组件页面的release信息中可以看到该组件的所有版本信息,即包含所有版本的组件信息;最后,根据busboy组件页面的release信息中的https://github.com/mscdex/dicer/pull/22/commits/b7fca2e93e8e9d4439d8acc5c02f5e54a0112dac网址,可以找到组件代码提交的信息,即该漏洞影响的代码文件以及代码片段信息,即源码信息。
28.为进一步了解漏洞信息的采集过程,可以参阅图2所示,是漏洞信息的采集结果,表示通过cve漏洞收集器收集到的漏洞信息的展示页面https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2022-24434,页面展示中包含references模块,用于记录关于漏洞的代码片段信息的链接网址,例如https://github.com/mscdex/busboy/issues/250记录的是漏洞的发现的信息,而https://github.com/mscdex/dicer/pull/22记录的是漏洞的代码片段信息。
29.本发明的一实施例中,漏洞组件库的构建过程,包括:在组件信息与源码信息中查询漏洞信息对应的漏洞调用方法;利用组件信息中的方法调用关系标识组件信息的组件版本;根据漏洞信息、组件信息以及源码信息之间的关联关系、漏洞调用方法以及组件版本,确定漏洞组件库。
30.其中,漏洞调用方法是指漏洞信息在组件信息中被引用过程中所使用的方法,同时也是指漏洞信息在源码信息中被引用的过程中所使用的方法,例如在上述的busboy组件页面的release信息中的https://github.com/mscdex/dicer/pull/22/commits/b7fca2e93e8e9d4439d8acc5c02f5e54a0112dac网址中,可以查询到漏洞信息影响的是headerparser.js文件的parserheader方法,headerparser.js文件可以属于组件信息,也可以属于漏洞信息。
31.为进一步了解漏洞调用方法的查询过程,可以参阅图3-图4所示,其中,图3表示漏洞调用方法对应的组件信息的页面,如上述例子中的https://github.com/mscdex/busboy/issues/250链接中可以提取该漏洞代码对应的仓库信息,在仓库信息中可以得知该组件是busboy组件信息,图4表示busboy组件信息页面的release信息中的https://github.com/mscdex/dicer/pull/22/commits/b7fca2e93e8e9d4439d8acc5c02f5e54a0112dac网址中,可以查询到漏洞信息影响的是headerparser.js文件的parserheader方法,headerparser.js文件可以属于组件信息,也可以属于漏洞信息。
32.进一步地,本发明的又一实施例中,利用组件信息中的方法调用关系标识组件信息的组件版本,包括:在组件信息中的方法调用关系中查询组件信息中每个组件信息对应的方法调用关系,得到目标调用关系;识别目标调用关系中每个目标调用关系之间的调用关系差异;利用调用关系差异标识组件信息的组件版本。
33.其中,方法调用关系是指组件信息中的方法函数的调用关系。可选地,识别目标调
用关系中每个目标调用关系之间的调用关系差异可以通过语法抽象树技术,分析每个版本的代码之间的差异。示例性地,在1.0版本的组件信息中有a,b,c,d四个方法函数,在2.0版本的组件信息中有a,b,c,e四个方法函数,那么1.0版本的组件信息和2.0版本的组件信息之间的调用关系差异就是d和e两个方法函数,则将这两个方法函数作为对应版本的组件的“指纹”标识。
34.进一步地,本发明的又一实施例中,根据漏洞信息、组件信息以及源码信息之间的关联关系、漏洞调用方法以及组件版本,确定漏洞组件库,包括:在漏洞信息、组件信息以及源码信息之间的关联关系中,查询漏洞信息与组件信息之间的第一关联关系、漏洞信息与源码信息之间的第二关联关系以及组件信息与源码信息之间的第三关联关系;根据第一关联关系、第二关联关系以及第三关联关系,将漏洞调用方法与组件版本进行第一漏洞映射、漏洞调用方法与源码信息进行第二漏洞映射、组件版本与源码信息进行第三组件映射,得到第一映射结果、第二映射结果与第三映射结果;利用第一映射结果、第二映射结果与第三映射结果确定漏洞组件库。
35.其中,漏洞信息、组件信息以及源码信息之间的关联关系是指漏洞信息、组件信息以及源码信息之间的关联代码关系,包括代码出现位置、代码与代码之间的调用以及代码名称等,例如漏洞信息的代码出现在组件信息的第32行代码中。第一映射结果包括漏洞调用方法在组件版本中的映射信息的角度与组件版本在漏洞调用方法中的映射信息的角度,例如,若漏洞调用方法包括a、b、c、d四个方法函数,其中的a方法函数被1.0版本的组件信息引用,则第一映射结果可以为漏洞a被1.0版本的组件信息引用、1.0版本的组件信息引用漏洞a,第二映射结果与第三映射结果与第一映射结果同理,在此不做进一步地赘述。漏洞组件库包括组件信息表、源码信息与漏洞信息,一个组件信息表包括组件的名称与版本号等信息,可以将组件与漏洞进行映射,映射结果为每个组件不同的版本可能有多个漏洞,组件和漏洞是1对多的关系;源码信息即这个组件对应的所有源码信息,由于不同版本的组件包括这个组件的所有方法函数与所有类这块的信息,因此一个组件对应多个源码信息;通过漏洞的reference可以知道漏洞所在的代码位置信息和方法名称信息,每个漏洞可能涉及多个方法函数,同样每个方法函数可能存在多个漏洞,所以源码信息和漏洞信息是多对多的关系。
36.s2、在应用程序中存在包管理器时,解析应用程序中的组件坐标,基于组件坐标,从漏洞组件库中查询应用程序的组件源码和组件漏洞,以执行对应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果。
37.在应用程序中存在包管理器时,表示应用程序被包管理器管理,对应用程序的代码解析可以通过包管理器进行。其中,包管理器是指软件包管理器,是种管理工具,它允许用户在操作系统上安装、删除、升级、配置和管理软件包,软件包管理器可以是像“软件中心”这样的图形化应用,也可以是像apt-get或pacman这样的命令行工具,包管理器可以用于复用别人写好的代码、管理包之间的依赖关系等。
38.进一步地,本发明实施例通过解析应用程序中的组件坐标,以用于确定利用组件坐标确定应用程序中存在的组件,保障后续分析应用程序中的组件的漏洞是否被引用。其中,组件坐标是指应用程序中的组件位置。
39.本发明的一实施例中,解析应用程序中的组件坐标,包括:利用应用程序的程序语
言类型识别应用程序对应的待解析文件;在待解析文件中进行属性解析,得到属性解析结果;根据属性解析结果,确定应用程序中的组件坐标。
40.示例性地,应用程序在有包管理器的情况下,只要对包管理器自带的配置文件进行解析即可,例如,一个java开发的应用程序,其包管理器为maven,那么针对这个应用程序,只需要分析该程序中的pom.xml文件即可,在pom.xml文件中可以查看到程序代码:
41.《dependency》
42.《groupid》com.liferay《/groupid》
43.《artifactid》com.fasterxml.jackson.da《/artifactid》
44.《version》2.10.5.1.lieeray-patched-1《/version》
45.《/dependency》
46.其中,groupid、artifactid与version表示属性解析结果,groupid、artifactid以及version三个属性对应组件的坐标,可以确定唯一的某个版本的组件。
47.进一步地,本发明实施例通过基于组件坐标,从漏洞组件库中查询应用程序的组件源码和组件漏洞,以用于执行对应用程序的组件漏洞可达分析,保障对漏洞检测的准确率。
48.本发明的一实施例中,基于组件坐标,从漏洞组件库中查询应用程序的组件源码和组件漏洞,包括:基于组件坐标,从漏洞组件库中查询应用程序的组件源码;提取组件源码对应的组件漏洞。
49.进一步地,本发明实施例通过对应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果,以用于检测被应用程序所引用的开源组件中的漏洞是否也同样被应用程序所引用,提升对漏洞可达性分析的准确率。
50.本发明的一实施例中,对应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果,包括:查询组件漏洞的最外层方法及其对应的方法路径;利用最外层方法及其对应的方法路径确定应用程序的目标组件文件与目标组件方法;对应用程序进行第一漏洞插桩检测,得到第一插桩检测结果;根据目标组件文件、目标组件方法与第一插桩检测结果,确定第一漏洞可达分析结果。
51.进一步地,本发明的又一实施例中,利用最外层方法及其对应的方法路径确定应用程序的目标组件文件与目标组件方法,包括:提取应用程序的组件路径;利用方法路径与组件路径确定应用程序的目标组件文件;在目标组件文件中识别与最外层方法匹配的目标组件方法。
52.示例性地,如果组件漏洞的调用方法c,而方法c被方法b调用,方法b被方法a1和a2调用,a1和a2没有被任何方法调用,则这个组件漏洞最外层的方法入口就是a1和a2方法,即最外层方法,a1和a2方法的完整路径是com.github.methond.a1和com.github.methond.a2,其中com.github表示目录路径,methond表示文件,表示a1和a2是methon.java文件中的两个方法,即可以得到方法路径;提取应用程序的组件路径可以为:以java程序为例,在每个java文件代码中的头部找到import语句,import语句后面是引用的组件的包路径信息,若包路径信息是com或者com.github或者com.github.methond,则都有可能用到methond,则确定包含methond的组件路径;利用方法路径与组件路径确定应用程序的目标组件文件可以为:利用包含methond的组件路径找到java文件代码中的methond
文件,即目标组件文件;在目标组件文件中识别与最外层方法匹配的目标组件方法可以为:在methond文件中若查询methond m1,m1.a1(),则表示这个java文件使用了a1方法,即目标组件方法;对应用程序进行第一漏洞插桩检测,得到第一插桩检测结果可以为:将一段漏洞程序代码插入至应用程序的代码中,当该应用程序启动的时候,这段漏洞程序代码就会跟踪数据流,从而可以分析得出哪些方法被漏洞程序遍历到了,即得到第一插桩检测结果;根据目标组件文件、目标组件方法与第一插桩检测结果,确定第一漏洞可达分析结果可以为:在找不到目标组件文件时,则表示不具备漏洞可达性,在找到目标组件方法时,则表示这个java文件使用了a1,也就表明该应用程序可能使用到这个漏洞了,若第一插桩检测结果同时也显示漏洞中的方法被医用程序调用了,则应用程序具备漏洞可达性。
53.s3、在应用程序中未存在包管理器时,解析应用程序中的组件特征,基于组件特征,从漏洞组件库中查询应用程序的组件漏洞特征,以执行对应用程序进行组件漏洞可达分析,得到第二漏洞可达分析结果。
54.在应用程序中未存在包管理器时,表示对应用程序的组件分析不需要通过包管理器完成。
55.进一步地,本发明实施例通过解析应用程序中的组件特征,以用于利用组件特征标记应用程序中的组件信息,提升了对应用程序中的组件信息进行全文检索的效率。其中,组件特征是指表征组件核心成分的代码特征,例如应用程序中代码的函数、方法与属性等。
56.本发明的一实施例中,解析应用程序中的组件特征,包括:利用预先构建的解析度量值解析应用程序中的目标代码;构建目标代码的抽象语法树;将抽象语法树作为应用程序中的组件特征。
57.其中,解析度量值是指对应用程序中的代码解析的标准,例如按照函数、方法块、代码行、词等解析度量值提取应用程序中包含函数、方法块、代码行、词的代码,目标代码是指符合解析度量值的代码,例如包含函数、方法块、代码行、词的代码,抽象语法树是指源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,抽象语法树并不会表示出真实语法出现的每一个细节,例如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现,抽象语法树并不依赖于源语言的语法,也就是说语法分析阶段所采用的上下文无文文法,抽象语法树的结构可以由所解析到的对象构成,这个对象包括函数、方法、变量以及表达式等。
58.进一步地,本发明实施例通过基于组件特征,从漏洞组件库中查询应用程序的组件漏洞特征,以用于利用所查询到的组件漏洞特征时确定应用程序中的漏洞可达性。
59.其中,组件漏洞特征是指与在漏洞组件库中与组件特征相匹配的特征,例如组件特征为a,在漏洞组件库中查询到了与a一致的组件漏洞特征。漏洞可达性是指漏洞在应用程序中是否被实际引用的性质,例如包含漏洞的开源组件被应用程序所引用,但开源组件中的漏洞未被应用程序所引用,则此漏洞不可达,即在此应用程序中没有漏洞可达性,相反,若漏洞被实际引用了,则此漏洞可达,即有漏洞可达性。
60.本发明的一实施例中,基于组件特征,从漏洞组件库中查询应用程序的组件漏洞特征,包括:从漏洞组件库中提取漏洞代码;将漏洞代码与组件特征进行一致性校验;在漏洞代码与组件特征的一致性校验成功时,确定应用程序的组件漏洞特征。
61.进一步地,本发明实施例通过对应用程序进行组件漏洞可达分析,以用于检测被
应用程序所引用的开源组件中的漏洞是否也同样被应用程序所引用,提升对漏洞可达性分析的准确率。
62.本发明的一实施例中,对应用程序进行组件漏洞可达分析,得到第二漏洞可达分析结果,包括:对应用程序进行第二漏洞插桩检测,得到第二插桩检测结果;根据组件漏洞特征与第二插桩检测结果,确定第二漏洞可达分析结果。
63.进一步地,本发明的又一实施例中,对应用程序进行第二漏洞插桩检测,得到第二插桩检测结果的原理与上述对应用程序进行第一漏洞插桩检测,得到第一插桩检测结果的原理类似,在此不做进一步地赘述。
64.可选地,根据组件漏洞特征与第二插桩检测结果,确定第二漏洞可达分析结果可以为:在组件漏洞特征与第二插桩检测结果同时存在时,应用程序具备漏洞可达性;在组件漏洞特征与第二插桩检测结果中任意一项不存在时,应用程序不具备漏洞可达性。
65.可以看出,本发明实施例通过获取应用程序及预构建的漏洞组件库,以用于分析应用程序中是否引用了开源组件所携带的漏洞;
66.进一步地,本发明实施例在应用程序中存在包管理器时,通过解析应用程序中的组件坐标,以用于确定利用组件坐标确定应用程序中存在的组件,保障后续分析应用程序中的组件的漏洞是否被引用,进一步地,本发明实施例通过基于组件坐标,从漏洞组件库中查询应用程序的组件源码和组件漏洞,以用于执行对应用程序的组件漏洞可达分析,保障对漏洞检测的准确率,进一步地,本发明实施例通过对应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果,以用于检测被应用程序所引用的开源组件中的漏洞是否也同样被应用程序所引用,提升对漏洞可达性分析的准确率;
67.进一步地,本发明实施例在应用程序中未存在包管理器时,通过解析应用程序中的组件特征,以用于利用组件特征标记应用程序中的组件信息,提升了对应用程序中的组件信息进行全文检索的效率,进一步地,本发明实施例通过基于组件特征,从漏洞组件库中查询应用程序的组件漏洞特征,以用于利用所查询到的组件漏洞特征时确定应用程序中的漏洞可达性,进一步地,本发明实施例通过对应用程序进行组件漏洞可达分析,以用于检测被应用程序所引用的开源组件中的漏洞是否也同样被应用程序所引用,提升对漏洞可达性分析的准确率。因此,本发明实施例提出的一种应用程序的漏洞可达性分析方法可以提高应用程序的漏洞可达性分析准确性。
68.如图5所示,是本发明应用程序的漏洞可达性分析装置功能模块图。
69.本发明应用程序的漏洞可达性分析装置500可以安装于电子设备中。根据实现的功能,应用程序的漏洞可达性分析装置可以包括组件库构建模块501、第一结果确定模块502以及第二结果确定模块503。本发明模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
70.在本发明实施例中,关于各模块/单元的功能如下:
71.组件库构建模块501,用于获取应用程序及预构建的漏洞组件库,漏洞组件库通过漏洞信息、组件信息以及源码信息进行构建;
72.第一结果确定模块502,用于在应用程序中存在包管理器时,解析应用程序中的组件坐标,基于组件坐标,从漏洞组件库中查询应用程序的组件源码和组件漏洞,以执行对应
用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果;
73.第二结果确定模块503,用于在应用程序中未存在包管理器时,解析应用程序中的组件特征,基于组件特征,从漏洞组件库中查询应用程序的组件漏洞特征,以执行对应用程序进行组件漏洞可达分析,得到第二漏洞可达分析结果。
74.详细地,本发明实施例中应用程序的漏洞可达性分析装置500中的各模块在使用时采用与上述的图1至图4中的应用程序的漏洞可达性分析方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
75.如图6所示,是本发明实现应用程序的漏洞可达性分析方法的电子设备的结构示意图。
76.电子设备可以包括处理器60、存储器61、通信总线62以及通信接口63,还可以包括存储在存储器61中并可在处理器60上运行的计算机程序,如应用程序的漏洞可达性分析程序。
77.其中,处理器60在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(central processing unit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。处理器60是电子设备的控制核心(control unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在存储器61内的程序或者模块(例如执行应用程序的漏洞可达性分析程序等),以及调用存储在存储器61内的数据,以执行电子设备的各种功能和处理数据。
78.存储器61至少包括一种类型的可读存储介质,可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器61在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。存储器61在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(smart media card,smc)、安全数字(secure digital,sd)卡、闪存卡(flash card)等。进一步地,存储器61还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器61不仅可以用于存储安装于电子设备的应用软件及各类数据,例如数据库配置化连接程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
79.通信总线62可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。总线被设置为实现存储器61以及至少一个处理器60等之间的连接通信。
80.通信接口63用于上述电子设备6与其他设备之间的通信,包括网络接口和用户接口。可选地,网络接口可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light-emitting diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。
81.图6仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图6示出的结构并不构成对电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
82.例如,尽管未示出,电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与至少一个处理器60逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。电子设备还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。
83.应该了解,实施例仅为说明之用,在专利发明范围上并不受此结构的限制。
84.电子设备中的存储器61存储的数据库配置化连接程序是多个计算机程序的组合,在处理器60中运行时,可以实现:
85.获取应用程序及预构建的漏洞组件库,漏洞组件库通过漏洞信息、组件信息以及源码信息进行构建;
86.在应用程序中存在包管理器时,解析应用程序中的组件坐标,基于组件坐标,从漏洞组件库中查询应用程序的组件源码和组件漏洞,以执行对应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果;
87.在应用程序中未存在包管理器时,解析应用程序中的组件特征,基于组件特征,从漏洞组件库中查询应用程序的组件漏洞特征,以执行对应用程序进行组件漏洞可达分析,得到第二漏洞可达分析结果。
88.具体地,处理器60对上述计算机程序的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。
89.进一步地,电子设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非易失性计算机可读取存储介质中。存储介质可以是易失性的,也可以是非易失性的。例如,计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)。
90.本发明还提供一种存储介质,可读存储介质存储有计算机程序,计算机程序在被电子设备的处理器所执行时,可以实现:
91.获取应用程序及预构建的漏洞组件库,漏洞组件库通过漏洞信息、组件信息以及源码信息进行构建;
92.在应用程序中存在包管理器时,解析应用程序中的组件坐标,基于组件坐标,从漏洞组件库中查询应用程序的组件源码和组件漏洞,以执行对应用程序进行组件漏洞可达分析,得到第一漏洞可达分析结果;
93.在应用程序中未存在包管理器时,解析应用程序中的组件特征,基于组件特征,从漏洞组件库中查询应用程序的组件漏洞特征,以执行对应用程序进行组件漏洞可达分析,得到第二漏洞可达分析结果。
94.在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
95.作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
96.另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
97.对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
98.因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
99.需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
100.以上仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所发明的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1