掌桥专利:专业的专利平台
掌桥专利
首页

一种基于知识图谱的组件版本确认方法、存储介质及终端

文献发布时间:2024-01-17 01:26:37


一种基于知识图谱的组件版本确认方法、存储介质及终端

技术领域

本发明涉及软件安全技术领域,尤其涉及一种基于知识图谱的组件版本确认方法、存储介质及终端。

背景技术

软件成分分析(SCA)的研究背景主要与软件安全和分析等领域有关,随着软件开发的日益普及,软件安全问题也越发严重,许多软件面临着被黑客攻击和数据泄露的风险,其中,第三方组件的安全性问题就占了很大一部分,另外开源软件的使用也越来越普遍,但是与商业软件不同,开源软件的安全性和质量往往难以保证;因此,如何识别和评估软件中使用的第三方组件以及开源软件的安全性和合规性,就成了目前一个重要的研究方向。

目前软件成分分析主要包括以下内容:1、依赖检测:通过包管理器解析配置文件获取依赖的组件;2、文件树检测:基于目录和文件的哈希值在SCA知识库中匹配相关组件和版本;3、二进制检测:提取二进制文件中的信息和相关指纹,在SCA知识库中匹配相关组件和版本;4、代码片段检测:通过相似的代码片段在SCA知识库中匹配相关组件和版本;5、对提取的组件和库进行分类和归纳,以便对它们进行更细致的分析;这些分类可以基于组件的语言、版本、作者等等信息;对每个组件进行详细的分析,包括漏洞扫描、安全性评估、许可证分析等等。组合分析结果,确定组件的安全性和合规性。

但是当前的SCA技术不能很好的处理同一个目录或者文件在多个项目、组件和版本中出现的归属判定问题,容易造成漏波和误报的情况;虽然通过采集不同的属性信息,比如文件名、文件大小、路径等,来提取不同维度的指纹可以一定程度缓解这个问题,但是对于路径、内容完全一致的目录或文件,则无法处理。且属性采集过多,也会造成匹配时限制过多,而产生漏报。

需要说明的是,在上述背景技术部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

发明内容

本发明的目的在于克服现有技术的缺点,提供了一种基于知识图谱的组件版本确认方法、存储介质及终端,解决了现有技术存在的不足。

本发明的目的通过以下技术方案来实现:一种基于知识图谱的组件版本确认方法,所述组件版本确认方法包括:

S1、获取开源组件代码并确定开源组件的依赖关系和克隆关系;

S2、根据依赖关系和克隆关系将开源组件解析成三元组{组件A,组件B,克隆于}和{组件A,组件B,依赖于}存入图数据库,判断图数据库中是否存在组件实体A或者B;

S3、解析开源组件A,并从中提取目录D和文件F,将文件关系存入图数据库中,判断图数据库中是否存在相应实体;重新步骤S3,解析开源组件B;

S4、根据步骤S2和S3建立的图关系知识图谱,统计组件节点被克隆和被依赖的数据值;

S5、针对目录与文件类实体节点,通过目录/文件版本确认算法计算该节点实际应该归属的组件节点,遍历所有目录/文件类节点计算得到所有目录/文件类节点的实际归属组件信息,并输出到关系型数据库以便查询。

所述判断图数据库中是否存在组件实体A或者B包括:

如果图数据库中存在组件实体A或组件实体B,则建立实体A和B之间的边,并添加类型属性值为克隆或依赖,如果不存在组件实体A或者B,则新建组件实体。

所述判断图数据库中是否存在相应实体包括:

如果图数据库中存在组件实体A、目录实体D和文件实体F,则新建组件实体A和目录实体D与组件实体A和文件实体F之间的边,并添加路径属性值,即将目录D和文件F在A中的路径记录在边的属性中;

如果图数据库中不存在组件实体A、目录实体D和文件实体F,则新建组件实体A、目录实体D和文件实体F。

所述根据步骤S2建立的图关系知识图谱,统计组件节点被克隆和被依赖的数据值包括:

以组件、目录和文件为节点,组件之间的关系、组件与目录、文件关系为边构建图关系知识图谱;

当一个组件包含某目录和某文件时,则有边从组件指向该目录和文件,当边连接组件和目录/文件时,边的属性信息为路径信息,当边连接组件时,边的属性为克隆或依赖标识;

统计组件被直接依赖数量和间接依赖数量以及组件被克隆数量。

所述通过目录/文件版本确认算法计算该节点实际应该归属的组件节点包括:

判断该节点是否属于多个组件,如果是属于一个组件,则该节点归属于该组件;

如果该节点属于多个组件,则判断组件之间是否有克隆和依赖关系,如果有,则将节点优先归属于被克隆和被依赖的组件;

如果有多个被克隆或被依赖的组件,则向上回溯这些组件的祖先节点之间的克隆与依赖关系,则将节点优先归属于被克隆和被依赖的祖先节点的子节点所属的组件,如果这些组件与其祖先节点都无克隆与依赖关系,则依据路径相关规则和组件热度规则进行归属。

所述依据路径相关规则和组件热度规则进行归属包括:

计算目录/文件路径与组件名称的相关性,则将节点优先归属于相关性大的组件,如果路径无关联,则使用热度规则,则将节点优先归属于被依赖数量更高和被克隆数量更高的组件。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述组件版本确认方法的步骤。

一种终端设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现所述组件版本确认方法的步骤。

本发明具有以下优点:一种基于知识图谱的组件版本确认方法、存储介质及终端,利用知识图谱有效的提升了SCA软件通过目录/文件进行第三方组件检出的精度,且使用图数据库实现,拥有较好的查询性能。

附图说明

图1为本发明方法的流程示意图;

图2为知识图谱结构示意图;

图3为目录/文件版本确认算法示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下结合附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的保护范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。下面结合附图对本发明做进一步的描述。

如图1所示,本发明其中一种实施方式涉及一种基于知识图谱的组件版本确认方法,所述组件版本确认方法包括:

S1、获取开源组件代码并确定开源组件的依赖关系和克隆关系;

S2、根据依赖关系和克隆关系将开源组件解析成三元组{组件A,组件B,克隆于}和{组件A,组件B,依赖于}存入图数据库,判断图数据库中是否存在组件实体A或者B;

S3、解析开源组件A,并从中提取目录D和文件F,将文件关系存入图数据库中,判断图数据库中是否存在相应实体;重新步骤S3,解析开源组件B;

S4、根据步骤S2和S3建立的图关系知识图谱,统计组件节点被克隆和被依赖的数据值;

S5、针对目录与文件类实体节点,通过目录/文件版本确认算法计算该节点实际应该归属的组件节点,遍历所有目录/文件类节点计算得到所有目录/文件类节点的实际归属组件信息,并输出到关系型数据库以便查询。

进一步地,判断图数据库中是否存在组件实体A或者B包括:

如果图数据库中存在组件实体A或组件实体B,则建立实体A和B之间的边,并添加类型属性值为克隆或依赖,如果不存在组件实体A或者B,则新建组件实体。

进一步地,判断图数据库中是否存在相应实体包括:

如果图数据库中存在组件实体A、目录实体D和文件实体F,则新建组件实体A和目录实体D与组件实体A和文件实体F之间的边,并添加路径属性值,即将目录D和文件F在A中的路径记录在边的属性中;

如果图数据库中不存在组件实体A、目录实体D和文件实体F,则新建组件实体A、目录实体D和文件实体F。

进一步地,传统的SCA知识库一般基于关系型数据库,在发明中,以组件(带版本)、目录、文件为节点,组件之间关系,组件与目录、文件关系为边,将传统的关系型知识库转换为图关系的知识图谱。

如图2所示,其中CompVer表示组件节点,DirSha1表示目录节点,FileSha1表示文件节点,当一个组件包含某目录和某文件时,则有边从组件指向该目录和文件;组件之间的关系主要有克隆关系、依赖被依赖关系等。边有相应的属性信息,比如边连接组件和目录/文件时,边的属性信息为路径信息;当边连接组件时,则边的属性为克隆或依赖标识。

进一步地,通过目录/文件版本确认算法计算该节点实际应该归属的组件节点包括:

判断该节点是否属于多个组件,如果是属于一个组件,则该节点归属于该组件;

如果该节点属于多个组件,则判断组件之间是否有克隆和依赖关系,如果有,则将节点优先归属于被克隆和被依赖的组件;

如果有多个被克隆或被依赖的组件,则向上回溯这些组件的祖先节点之间的克隆与依赖关系,则将节点优先归属于被克隆和被依赖的祖先节点的子节点所属的组件,如果这些组件与其祖先节点都无克隆与依赖关系,则依据路径相关规则和组件热度规则进行归属。

其中,依据路径相关规则和组件热度规则进行归属包括:

计算目录/文件路径与组件名称的相关性,则将节点优先归属于相关性大的组件,如果路径无关联,则使用热度规则,则将节点优先归属于被依赖数量更高和被克隆数量更高的组件。

如图3所示,图3的a图中组件A、B具有相同的图关系,通过路径关联规则和组件热度进行判定文件归属;图3的b图中组件A、B的祖先具有相同的图关系,因此也通过路径关联规则和组件热度进行判定文件归属;图3的c图中组件A、B的祖先中,组件C被组件D克隆或依赖,因此文件归属到组件A。

进一步地,路径关联规则主要包括:对于包含3rdparty、third-party、third_party等关键词的路径,降低优先级;根据业务知识,收集关键词字典;对于包含对方组件名的路径,降低优先级。热度规则包括:根据组件统计的被依赖数、克隆数,以及从公开信息中获取的,比如github-star数量等降序排序,取排序最靠前的作为结果。

通过以上算法,能够有效的降低目录/文件在知识库中被错误归属的问题,且通过图数据库来存储知识谱图,拥有比传统关系数据库更高效的查询性能。

本发明的又一实施方式涉及一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述组件版本确认方法的步骤。

其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

本发明的再一实施方式涉及一种终端设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现所述组件版本确认方法的步骤。

以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

技术分类

06120116219039