一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于图数据库的组件依赖关系分析方法及系统与流程

2022-07-23 12:02:31 来源:中国专利 TAG:


1.本发明属于网络信息安全技术领域,具体涉及一种基于图数据库的组件依赖关系分析方法及系统。


背景技术:

2.组件主要是指能够完成某些功能服务并且能以某种形式(提供接口或者提供运行环境等形式)对外提供功能服务的对象实体,常见的表现形式有库、包、web服务器、框架和应用程序等。现如今的任何一种网络服务和应用都可以理解为由多个具有不同基础功能的组件通过一种或多种关联关系组建而成的一个功能更强大的组件集合。这种组件概念的推广,大大方便了各种网络服务和应用的开发,开发人员不需要重复去开发基础功能的组件,只需要把别人开发好的基础功能组件、运行环境组件等以某种结构或代码拼在一起就能组成自己需要的网络服务。甚至开发人员都不需要去担心这些结构组件的维护问题,只需要定时更新替换新版本的结构组件即可。
3.但是随着网络服务的逐渐复杂,面临的安全问题也越来越复杂。假如某个组件出现了安全问题,可能看似和自己构建的网络服务毫无关联,但可能它就存在自己所引用的功能组件或者环境组件所引用的子组件中,间接地,自己的网络服务也存在安全问题。一方面,这种组件依赖结构往往是非常复杂的,存在几层,几十层,甚至是循环依赖;另一方面,开发人员对第三方功能组件和环境组件的引用是不可避免的,甚至是有很大需求的。结合这两方面,可以肯定目前这类由单个组件安全问题引发的组件依赖链的安全问题是普遍存在且难以发现的。目前的漏扫技术也没有很好方法对这些组件依赖链的安全问题进行很好的发现和管理。


技术实现要素:

4.针对现有技术中的缺陷,本发明提供一种基于图数据库的组件依赖关系分析方法及系统,解决现有技术存在的组件资产和组件资产依赖链安全问题难以发现、管理和分析的问题。
5.第一方面,一种基于图数据库的组件依赖关系分析方法,包括:
6.获取目标对象的多个服务文件;
7.分别提取每个服务文件中的多个组件;
8.对目标对象进行漏洞检测,以得到目标对象的漏洞;
9.构建图数据库中的图模型,并将组件和漏洞导入至图数据库中;
10.接收包含已知漏洞的查询指令,根据查询指令查询图数据库,以得到查询结果。
11.进一步地,服务文件包括网络服务文件和/或应用程序文件。
12.进一步地,图模型中的节点包括组件、主机、端口、漏洞和提供者;其中组件和组件之间存在依赖和被依赖的关系,组件和漏洞之间存在危害和被危害的关系,组件和主机之间存在运行和被运行的关系,组件和端口之间存在占用和被占用的关系、主机和端口之间
存在开放和被开放的关系,组件和提供者之间存在开发和被开发的关系。
13.进一步地,组件依赖关系分析方法在将组件和漏洞导入至图数据库之后,还包括:
14.获取官方漏洞数据库中的漏洞,并将漏洞导入至图数据库。
15.进一步地,当查询指令包括用于查询组件的第一查询指令时,图数据库的查询方法包括:
16.查询已知漏洞危害的组件,以得到第一组件;
17.查询第一组件被依赖的组件,以得到第二组件;
18.查询结果包括第一组件和第二组件。
19.进一步地,当查询指令包括用于查询主机和端口的第二查询指令时,图数据库的查询方法包括:
20.查询已知漏洞危害的组件,以得到第三组件;
21.查询第三组件被依赖的组件,以得到第四组件;
22.分别查询第三组件和第四组件被运行的主机,以得到第一主机;
23.分别查询第三组件和第四组件占用的端口,以得到第一端口;
24.查询第一端口被开放的主机,以得到第二主机;
25.查询结果包括第一主机、第一端口和第二主机。
26.进一步地,当查询指令包括用于查询提供者的第三查询指令时,图数据库的查询方法包括:
27.查询已知漏洞危害的组件,以得到第五组件;
28.查询第五组件被开发的提供者,以得到第一提供者;
29.查询第一提供者开发的组件,以得到第六组件;
30.查询结果包括第一提供者和第六组件。
31.进一步地,组件依赖关系分析方法在得到查询结果之后,还包括:
32.通过可视化界面显示查询结果中的节点、以及各节点之间的关系。
33.第二方面,一种基于图数据库的组件依赖关系分析系统,包括:
34.入侵检测模块:用于获取目标对象的多个服务文件;
35.组件分析模块:用于分别提取每个服务文件中的多个组件;
36.漏洞检测模块:用于对目标对象进行漏洞检测,以得到目标对象的漏洞;
37.图数据库模块:用于构建图数据库中的图模型,并将组件和漏洞导入至图数据库中;
38.查询模块:用于接收包含已知漏洞的查询指令,根据查询指令查询图数据库,以得到查询结果。
39.进一步地,还包括:
40.可视化模块:用于通过可视化界面显示查询结果。
41.由上述技术方案可知,本发明提供的基于图数据库的组件依赖关系分析方法及系统,能够快速发现网络服务和应用,再对发现的网络服务和应用进行成分分析,提取出组件及组件的依赖关系,将所有发现的网络服务和应用录入图数据库中建立索引,最后利用图数据库对外提供组件依赖链查询和组件安全漏洞影响链查询等功能。引入了图的概念进行组件管理,结合多种组件和组件依赖发现和丰富技术,有效地解决组件资产和组件资产依
赖链安全问题难以发现、管理和分析的问题。
附图说明
42.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
43.图1为实施例提供的组件依赖关系分析方法的流程图。
44.图2为实施例提供的图模型的示意图。
45.图3为实施例提供的官方漏洞数据库中漏洞录入图数据库的示意图。
46.图4为实施例提供的组件查询的逻辑示意图。
47.图5为实施例提供的主机和端口查询的逻辑示意图。
48.图6为实施例提供的提供者查询的逻辑示意图。
49.图7为实施例提供的组件依赖关系分析系统的模块框图。
具体实施方式
50.下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本技术使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
51.应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
52.还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
53.如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0054]
实施例:
[0055]
一种基于图数据库的组件依赖关系分析方法,参见图1,包括:
[0056]
s1:获取目标对象的多个服务文件;
[0057]
s2:分别提取每个服务文件中的多个组件;
[0058]
s3:对目标对象进行漏洞检测,以得到目标对象的漏洞;
[0059]
s4:构建图数据库中的图模型,并将组件和漏洞导入至图数据库中;
[0060]
s5:接收包含已知漏洞的查询指令,根据查询指令查询图数据库,以得到查询结果。
[0061]
在本实施例中,目标对象可以为需要进行组件依赖分析的计算机。该方法可以通过主机入侵检测系统(例如hids)获取目标对象的服务文件,其中服务文件包括网络服务文
件和/或应用程序文件,例如服务文件包括应用二进制文件或包、应用名称、进程id等信息。主机入侵检测系统可以作为计算机的监视器和分析器,主机入侵检测系统可以为安装在计算机上的代理程序(agent程序),用于监视计算机部分或全部的动态行为和状态。主机入侵检测系统通常会设有对外传输数据的接口或方法,目标对象可以通过代码或脚本对接主机入侵检测系统的接口或方法,获取主机入侵检测系统监测到的主机服务、应用和框架等组件。
[0062]
在本实施例中,该方法可以通过软件组成成分分析系统(例如sca)提取服务文件的组件以及组件的依赖关系。一般情况下,稍微复杂点的服务或应用都会引用很多比较基础的组件,比较基础的组件包括日志框架、发包框架、数据库连接器等等。例如软件组成成分分析系统能够通过分析服务文件包含的信息和特征,来实现对该服务文件中组件的识别、管理和追踪。例如软件组成成分分析系统可以通过扫描应用二进制文件获取提供者、组件cpe和子组件等信息。cpe(通用平台枚举)用于描述和识别企业计算资产中存在的应用程序,操作系统和硬件设备等类。
[0063]
在本实施例中,该方法可以通过漏洞扫描系统对目标对象进行漏洞检测,漏洞扫描系统可以基于internet远程检测目标对象的脆弱点,例如漏洞扫描系统可以通过与目标对象进行网络通信,发送数种特定报文,实现ip检活、端口探测、服务发现和漏洞检测等功能。还例如漏洞扫描系统可以扫描目标对象,获取目标对象的存活状态、开放的端口服务和存在的安全漏洞,再利用获取到的端口服务手动生成cpe或者利用nvd或cnnvd的cpe字典生成cpe。
[0064]
在本实施例中,该方法利用图数据库存储组件和漏洞,图数据库是一种应用图理论来存储实体之间的关系信息的关系型数据库。图数据库可以基于自身存储结构实现高效的图算法。该方法中,主机入侵检测系统和漏洞扫描系统主要承担服务文件的发现,软件组成成分分析系统主要承担组件资产和组件依赖关系的整理和丰富,图数据库主要承担组件资产的存储、管理和分析。
[0065]
在本实施例中,查询指令可以为管理员编写的gsql指令,查询指令可以用来查询受漏洞影响的组件、主机、端口、漏洞和提供者等等。该方法当发生或者收到某个组件的漏洞时,可以通过查询图数据库快速发现和梳理已经存在和可能存在的脆弱性资产。由于图数据库记录了各种组件的关联关系,所以该方法可以直接利用查询指令查询相关数据。
[0066]
该方法能够快速发现网络服务和应用,再对发现的网络服务和应用进行成分分析,提取出组件及组件的依赖关系,将所有发现的网络服务和应用录入图数据库中建立索引,最后利用图数据库对外提供组件依赖链查询和组件安全漏洞影响链查询等功能。该方法引入了图的概念进行组件管理,结合多种组件和组件依赖发现和丰富技术,有效地解决组件资产和组件资产依赖链安全问题难以发现、管理和分析的问题。
[0067]
进一步地,在一些实施例中,参见图2,图模型中的节点包括组件、主机、端口、漏洞和提供者;其中组件和组件之间存在依赖和被依赖的关系,组件和漏洞之间存在危害和被危害的关系,组件和主机之间存在运行和被运行的关系,组件和端口之间存在占用和被占用的关系、主机和端口之间存在开放和被开放的关系,组件和提供者之间存在开发和被开发的关系。
[0068]
在本实施例中,网络服务或应用的提供者主要指厂商或开发者。图2中,组件和组
件之间存在依赖和被依赖的关系,例如组件a引用组件b时,则组件a依赖组件b,组件b被组件a依赖。组件和漏洞之间的关系是漏洞危害组件,组件被漏洞危害。组件和主机之间的关系是主机运行组件,组件被主机运行。组件和端口之间的关系是组件占用端口,端口被组件占用。主机和端口之间的关系是主机开放端口,端口被主机开放。组件和提供者之间的关系是提供者开发组件,组件被提供者开发。
[0069]
进一步地,在一些实施例中,组件依赖关系分析方法在将组件和漏洞导入至图数据库之后,还包括:
[0070]
获取官方漏洞数据库中的漏洞,并将漏洞导入至图数据库。
[0071]
在本实施例中,官方漏洞数据库可以是国家对外开放的漏洞数据库,例如官方漏洞数据库可以采用nvd和cnnvd等数据库。该方法可以通过代码或者手工的方式获取官方漏洞数据库,并将官方漏洞数据库中的漏洞导入至图数据库中。一般官方漏洞数据库中所披露的漏洞都会附上受影响的cpe范围。参见图3,该方法可以定期获取官方漏洞数据库中最新的漏洞特征,当有新的漏洞被披露时,对漏洞的cpe范围进行分词,在图数据库的索引中匹配受影响的组件、主机、端口、提供者等等,将漏洞以及关联关系录入图数据库中,最后标记并通知资产所有者。
[0072]
该方法充分利用官方漏洞数据库,结合hids、sca和漏洞扫描等多种技术发现和丰富组件基本信息及依赖信息。在漏洞安全方面,实现了漏洞和资产的快速关联查询;在资产管理方面,实现了对组件和隐藏组件依赖链的发现和管理;在威胁情报处理方面,实现了快速的安全威胁情报处理链。
[0073]
进一步地,在一些实施例中,参见图4,当查询指令包括用于查询组件的第一查询指令时,图数据库的查询方法包括:
[0074]
查询已知漏洞危害的组件,以得到第一组件;
[0075]
查询第一组件被依赖的组件,以得到第二组件;
[0076]
查询结果包括第一组件和第二组件。
[0077]
在本实施例中,一个组件往往都有好几层的组件依赖关系,甚至存在共生的组件,也就是循环依赖组件。而图数据库能够对这些关系进行非常科学、高效的处理,解决了查询多层依赖关系的性能问题和查询循环依赖的死循环问题。而对于一个存在已知漏洞的问题组件,如何快速获取到直接或者间接引用问题组件的所有组件,计算出漏洞的攻击面,从而大幅减低攻击时间窗口是非常有意义的。该方法可以基于存在已知漏洞的组件发现其他存在该已知漏洞的组件。该方法在进行组件查询时,查询逻辑为:已知漏洞——危害——第一组件——被依赖——第二组件组件。其中通过第一组件查询被依赖的第二组件可以通过预设的最大深度进行循环查询,从而快速获取受到该已知漏洞影响的组件。
[0078]
进一步地,在一些实施例中,参见图5,当查询指令包括用于查询主机和端口的第二查询指令时,图数据库的查询方法包括:
[0079]
查询已知漏洞危害的组件,以得到第三组件;
[0080]
查询第三组件被依赖的组件,以得到第四组件;
[0081]
分别查询第三组件和第四组件被运行的主机,以得到第一主机;
[0082]
分别查询第三组件和第四组件占用的端口,以得到第一端口;
[0083]
查询第一端口被开放的主机,以得到第二主机;
[0084]
查询结果包括第一主机、第一端口和第二主机。
[0085]
在本实施例中,通过存在已知漏洞的问题组件排查出存在问题的主机和端口,能够帮助资产所有者进行受影响资产范围的快速梳理、安全防御计划的快速制定和部署等等操作。该方法能够基于存在已知漏洞的问题组件发现脆弱主机和端口。该方法在进行主机和端口查询时,查询逻辑为:已知漏洞——危害——第三组件——被依赖——第四组件——被运行——第一主机,已知漏洞——危害——第三组件——被依赖——第四组件——占用——第一端口——被开放——第二主机。
[0086]
进一步地,在一些实施例中,参见图6,当查询指令包括用于查询提供者的第三查询指令时,图数据库的查询方法包括:
[0087]
查询已知漏洞危害的组件,以得到第五组件;
[0088]
查询第五组件被开发的提供者,以得到第一提供者;
[0089]
查询第一提供者开发的组件,以得到第六组件;
[0090]
查询结果包括第一提供者和第六组件。
[0091]
在本实施例中,大部分的漏洞都是由于开发人员对某些开发语言、框架等技术的不了解和不良的编程习惯造成的,所以如果通过存在已知漏洞的组件的开发者,可以进一步关联其该开发者参与研发的组件,便可进一步推理出大概率存在漏洞的组件群。另外,统计所有厂商/开发者中所有组件的漏洞覆盖率、发生率等数据信息,对后续开发的组件选型具有重大意义。该方法能够基于已知存在由开发习惯引发的漏洞的组件发现可能存在同样漏洞的同厂商/开发者的其他组件。该方法在进行主机和端口查询时,查询逻辑为:已知漏洞——危害——第五组件——被开发——第一厂商/开发者——开发——第六组件,这样就能够快速获取可能存在漏洞的其他组件。
[0092]
进一步地,在一些实施例中,组件依赖关系分析方法在得到查询结果之后,还包括:
[0093]
通过可视化界面显示查询结果中的节点、以及各节点之间的关系。
[0094]
在本实施例中,该方法可以将查询结果通过可视化界面显示出来,可视化界面可以显示查询结果中的节点、以及各节点之间的关系,例如可视化界面可以显示查询结果中组件、漏洞、提供者、主机、端口之间的关系,通过可视化方式显示查询结果,更加直观形象。可视化界面可以根据用户需求自行设置。
[0095]
一种基于图数据库的组件依赖关系分析系统,参见图7,包括:
[0096]
入侵检测模块1:用于获取目标对象的多个服务文件;
[0097]
组件分析模块2:用于分别提取每个服务文件中的多个组件;
[0098]
漏洞检测模块3:用于对目标对象进行漏洞检测,以得到目标对象的漏洞;
[0099]
图数据库模块4:用于构建图数据库中的图模型,并将组件和漏洞导入至图数据库中;
[0100]
查询模块5:用于接收包含已知漏洞的查询指令,根据查询指令查询图数据库,以得到查询结果。
[0101]
进一步地,在一些实施例中,服务文件包括网络服务文件和/或应用程序文件。
[0102]
进一步地,在一些实施例中,图模型中的节点包括组件、主机、端口、漏洞和提供者;其中组件和组件之间存在依赖和被依赖的关系,组件和漏洞之间存在危害和被危害的
关系,组件和主机之间存在运行和被运行的关系,组件和端口之间存在占用和被占用的关系、主机和端口之间存在开放和被开放的关系,组件和提供者之间存在开发和被开发的关系。
[0103]
进一步地,在一些实施例中,还包括:
[0104]
漏洞采集模块6:用于获取官方漏洞数据库中的漏洞,并将漏洞导入至图数据库。
[0105]
进一步地,在一些实施例中,查询模块5具体用于:
[0106]
查询已知漏洞危害的组件,以得到第一组件;
[0107]
查询第一组件被依赖的组件,以得到第二组件;
[0108]
查询结果包括第一组件和第二组件。
[0109]
进一步地,在一些实施例中,查询模块5具体用于:
[0110]
查询已知漏洞危害的组件,以得到第三组件;
[0111]
查询第三组件被依赖的组件,以得到第四组件;
[0112]
分别查询第三组件和第四组件被运行的主机,以得到第一主机;
[0113]
分别查询第三组件和第四组件占用的端口,以得到第一端口;
[0114]
查询第一端口被开放的主机,以得到第二主机;
[0115]
查询结果包括第一主机、第一端口和第二主机。
[0116]
进一步地,在一些实施例中,查询模块5具体用于:
[0117]
查询已知漏洞危害的组件,以得到第五组件;
[0118]
查询第五组件被开发的提供者,以得到第一提供者;
[0119]
查询第一提供者开发的组件,以得到第六组件;
[0120]
查询结果包括第一提供者和第六组件。
[0121]
进一步地,在一些实施例中,还包括:
[0122]
可视化模块7:用于通过可视化界面显示查询结果。
[0123]
在本技术所提供的几个实施例中,应该理解到,所揭露的系统可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
[0124]
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。
[0125]
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
[0126]
所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式
体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0127]
本发明实施例所提供的系统,为简要描述,实施例部分未提及之处,可参考前述实施例中相应内容。
[0128]
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献