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

软件成分分析方法、装置、计算机设备及计算机可读存储介质

文献发布时间:2024-04-18 20:01:55


软件成分分析方法、装置、计算机设备及计算机可读存储介质

技术领域

本申请涉及软件技术领域,尤其涉及一种软件成分分析方法、装置、计算机设备及计算机可读存储介质。

背景技术

随着互联网技术的兴起,第三方开源软件已逐步成为主流。在目前软件开发过程中,工程师们越来越多的选择使用开源软件作为开源组件来减少重复的工作。然而使用开源组件时,常常会因为开源组件版本没有及时更新而带来安全漏洞。因而,为确保开源组件版本的正确性,通常需要对软件的成分进行分析,即获取软件使用开源组件的名称和版本号,再核对开源组件对应的版本号是否正确。

目前的软件成分分析方法,主要是通过对二进制字符串特征比对、机器学习模型对软件的源代码进行分析识别。上述软件成分分析方法均针对二进制编译软件的开源组件进行软件成分分析,且需要另外编写程序对二进制源代码进行分析进而获得第三方开源组件的名称和对应的版本号。

因现有技术的软件成分分析方法需要另外编写程序,实现方式复杂,增加了代码编写量,且对开源软件识别准确率低,无法对二进制以外的语言编写的应用程序进行开源组件识别。

针对现存方法存在的问题,急需提供一种准确率高、实现方式简单、适用性广的软件成分分析的方法、装置、计算机设备及计算机可读存储介质。

发明内容

本申请的目的在于提供一种准确率高、实现方式简单、适用性广的软件成分分析的方法、装置、计算机设备及计算机可读存储介质,旨在解决上述技术问题之一。

第一方面,一种软件成分分析方法,包括:设置安全监控探针;所述安全监控探针遍历文件系统获取开源组件的进程启动位置;所述安全监控探针在所述进程启动位置处获取所述开源组件名称和版本号;所述开源组件包括第三方开源组件和自研的开源组件。

优选地,上述安全监控探针在所述进程启动位置处获取所述开源组件名称和版本号具体为:

所述安全监控探针在所述进程启动位置处获取所述开源组件的压缩包;

解压所述开源组件的压缩包获得解压文件;

遍历所述开源组件的解压文件获取所有所述开源组件名称和版本号。

优选地,上述安全监控探针遍历文件系统获取开源组件的进程启动位置具体包括:

所述安全监控探针遍历文件系统获得所有文件信息;

在所述文件信息查找出所有具有开源组件后缀的启动程序的进程编号;

获取所有所述进程编号对应的所有进程启动位置。

优选地,上述获取所有所述进程编号对应的所有进程启动位置具体为:

获取查找出的所有所述进程编号对应的进程参数:

分别在各所述进程参数获取其对应的所有开源组件名称;

分别在各所述进程编号对应的进程启动目录内获取所有所述开源组件名称对应的进程启动位置。

优选地,上述遍历所述开源组件的解压文件获取所有所述开源组件名称和版本号的步骤之后还包括:遍历各所述进程编号对应的内存运行目录文件,在所述内存运行目录文件获取所有正在运行的开源组件名称和版本号。

优选地,上述在所述内存运行目录文件获取正在运行的所述开源组件名称和版本号的步骤之后还包括:

按所述进程编号对在所述进程启动位置处获取的所述开源组件名称和版本号、和在所述内存运行目录文件获取所有正在运行的开源组件名称和版本号进行并集处理后获得总的开源组件名称和版本号。

优选地,上述按所述进程编号对在所述进程启动位置处获取的所述开源组件名称和版本号、和在所述内存运行目录文件获取所有正在运行的开源组件名称和版本号进行并集处理后获得总的开源组件名称和版本号的步骤之后还包括:

设置包含所有开源组件名称和与所述开源组件名称一一对应的最新版本号的开源组件标准库;

判断总的所述开源组件名称对应的版本号与所述开源组件标准库内的所述开源组件名称对应的所述最新版本号是否一致,如果不一致,启动系统漏洞处理。

第二方面,本申请实施例提供了一种软件成分分析装置,包括:

探针设置模块,用于设置安全监控探针;

启动位置模块,用于所述安全监控探针遍历文件系统获取开源组件的进程启动位置;

版本号获取模块,用于所述安全监控探针在所述进程启动位置处获取所述开源组件名称和版本号。

第三方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的软件成分分析方法的步骤。

第四方面,本申请实施例提供了一种计算机设备,包括:一个或多个处理器;存储器;以及一个或多个计算机程序,所述处理器和所述存储器通过总线连接,其中所述一个或多个计算机程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述处理器执行所述计算机程序时实现如上所述的软件成分分析方法的步骤。

本申请实施例的软件成分分析方法,设置现有技术的安全监控探针,通过安全监控探针遍历文件系统获取开源组件的进程启动位置,最后通过安全监控探针在进程启动位置处获取开源组件名称和版本号。开源组件包括第三方开发的开源组件和工程师自己内部研发的开源组件,每个开源组件具有其各自的版本号。

本申请实施例的软件成分分析方法通过设置安全监控探针在进程启动位置处获取开源组件名称和版本号,无需另外编写程序,实现方式简单,大大减少了代码编写量,且对开源软件识别准确率高,可以对二进制以外的语言(如JAVA语言等)编写的应用程序进行开源组件识别,适用性广。

附图说明

图1是本申请一实施例提供的软件成分分析方法的流程图;

图2是本申请一实施例提供的软件成分分析的安全监控探针在进程启动位置处获取开源组件名称和版本号方法的流程图;

图3是本申请一实施例提供的软件成分分析的安全监控探针遍历文件系统获取开源组件的进程启动位置方法的流程图;

图4是本申请一实施例提供的软件成分分析的获取所有所述进程编号对应的所有进程启动位置方法的流程图;

图5是本申请一实施例提供的软件成分分析装置的结构示意图;

图6是本申请一实施例提供的计算机设备的具体结构框图。

具体实施方式

为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

为了说明本申请的技术方案,下面通过具体实施例来进行说明。

为了使本申请的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

为了说明本申请的技术方案,下面通过具体实施例来进行说明。

请参阅图1,是本申请一实施例提供的软件成分分析方法的流程图,本申请实施例提供了一种软件成分分析方法,包括:

S101、设置安全监控探针;

S102、安全监控探针遍历文件系统获取开源组件的进程启动位置;

S103、安全监控探针在进程启动位置处获取开源组件名称和版本号;

具体地,开源组件包括第三方开源组件和自研的开源组件。

安全监控探针Agent,是现有技术的一种用于监测系统安全状况的工具,通过部署在需要监测的系统环境中,收集、分析和报告系统安全事件和风险情况。主要功能是通过收集系统日志、系统数据等信息,对系统异常进行分析和报告。

具体地,在Linux系统上,可以通过命令/proc获得文件系统,当然在其他系统上,可以通过其它命令获得文件系统。进程启动位置是在系统部署业务方面的开源组件时,存储该开源组件的物理位置,如系统需启动该开源组件时,在该进程启动位置内获取启动文件。一个进程启动位置内通常包括了一个或一个以上的开源组件,因而,在一个进程启动位置处会获取一个或一个以上的开源组件名称和该开源组件名称对应的版本号。

本申请实施例的软件成分分析方法,设置现有技术的安全监控探针,通过安全监控探针遍历文件系统获取开源组件的进程启动位置,最后通过安全监控探针在进程启动位置处获取开源组件名称和版本号。开源组件包括第三方开发的开源组件和工程师自己内部研发的开源组件,每个开源组件具有其各自的版本号。

本申请实施例的软件成分分析方法通过设置安全监控探针在进程启动位置处获取开源组件名称和版本号,无需另外编写程序,实现方式简单,大大减少了代码编写量,且对开源软件识别准确率高,可以对二进制以外的语言(如JAVA语言等)编写的应用程序进行开源组件识别,适用性广。

请参阅图2,是本申请一实施例提供的软件成分分析的安全监控探针在进程启动位置处获取开源组件名称和版本号方法的流程图,本申请一实施例提供的软件成分分析的安全监控探针在进程启动位置处获取开源组件名称和版本号方法,包括以下步骤:

S201、安全监控探针在进程启动位置处获取开源组件的压缩包;

S202、解压开源组件的压缩包获得解压文件;

S203、遍历开源组件的解压文件获取所有开源组件名称和版本号。

如果在进程启动位置处获取的是开源组件的压缩包,则需要解压开源组件的压缩包获得解压文件,最后遍历开源组件的解压文件获取所有开源组件名称和版本号。通常,在Linux系统中,在进程启动位置处通常获取的是开源组件的Jar压缩包,当然,在其它系统上,可能会是不同的压缩包。

请参阅图3,是本申请一实施例提供的软件成分分析的安全监控探针遍历文件系统获取开源组件的进程启动位置方法的流程图,本申请一实施例提供的软件成分分析的安全监控探针遍历文件系统获取开源组件的进程启动位置方法,包括以下步骤:

S301、安全监控探针遍历文件系统获得所有文件信息;

S302、在文件信息查找出所有具有开源组件后缀的启动程序的进程编号;

S303、获取所有进程编号对应的所有进程启动位置。

在文件系统的文件信息中,包含了很多带进程编号的启动程序,需要先在文件信息查找出所有具有开源组件后缀的启动程序的进程编号。例如如果开源组件是JAVA格式的开源组件,那么这类开源组件的后缀名是“.jar”,此时,是在文件信息查找出所有具有后缀名为“.jar”的启动程序的进程编号,如果是其他格式的开源组件,则使用其它相对应的后缀名。具有开源组件后缀的启动程序,说明其内使用了该格式的开源组件。

通常文件系统内有多个具有开源组件后缀的启动程序的进程编号,将所有的具有开源组件后缀的启动程序的进程编号都找出来,最后再根据这些进程编号找到其对应的进程启动位置,方法非常简单可靠。

请参阅图4,是本申请一实施例提供的软件成分分析的获取所有进程编号对应的所有进程启动位置方法的流程图,本申请一实施例提供的软件成分分析的获取所有进程编号对应的所有进程启动位置方法,包括以下步骤:

S401、获取查找出的所有进程编号对应的进程参数:

S402、分别在各进程参数获取其对应的所有开源组件名称;

S403、分别在各进程编号对应的进程启动目录内获取所有开源组件名称对应的进程启动位置。

具体地,在Linux系统中,根据其部署规则,可以通过cmdline命令查找出的所有进程编号对应的进程参数;当然,在其它系统中,也可以通过其它命令获得查找出的所有进程编号对应的进程参数。一个进程编号对应一个进程参数,查找出多个进程编号则对应有多个进程参数。再分别在各进程参数获取其对应的所有开源组件名称,具体地,一个进程参数内通常包含有一个或一个以上的开源组件名称。

具体地,在Linux系统中,根据其部署规则,可以通过cwd命令在进程编号对应的进程启动目录内获取所有开源组件名称对应的进程启动位置,即一个开源组件名称对应一个进程启动位置。当然,在其它系统中,可以通过其它命令在进程编号对应的进程启动目录内获取所有开源组件名称对应的进程启动位置。

本申请实施例的软件成分分析通过上述方法获得进程启动位置,不会出现漏识别业务方面的开源组件的情况,方法简单可靠。

较佳地,遍历开源组件的解压文件获取所有开源组件名称和版本号的步骤之后还包括:遍历各进程编号对应的内存运行目录文件,在内存运行目录文件获取所有正在运行的开源组件名称和版本号。

内存运行目录文件即可以显示系统正在运行的文件目录,在Linux系统中,根据其部署规则,可以通过fd句柄命令获取系统正在运行的文件目录。当然,在其它系统中,也可以通过其它命令获取系统正在运行的文件目录。

因在文件系统中,一般只显示业务部署的开源组件,而一些系统初始化部署的开源组件,如网页容器组件等,在文件系统中是无法显示的,因而,通过安全监控探针遍历文件系统获取开源组件的进程启动位置、并在进程启动位置获取开源组件名称和版本号,是无法获得系统初始化部署的开源组件的。

在内存运行目录文件获取所有正在运行的开源组件名称和版本号,是获取实际正在运行的开源组件名称和版本号,这样可以获得系统初始化部署的开源组件。本申请实施例的软件成分分析方法通过在内存运行目录文件获取所有正在运行的开源组件名称和版本号,可以获得系统初始化部署的开源组件名称和版本号,可以避免系统因初始化部署的开源组件版本不正确而出现系统漏洞的情况,获取的开源组件名称和版本号更加全面、可靠。

较佳地,在内存运行目录文件获取正在运行的开源组件名称和版本号的步骤之后还包括:

按进程编号对在进程启动位置处获取的开源组件名称和版本号、和在内存运行目录文件获取所有正在运行的开源组件名称和版本号进行并集处理后获得总的开源组件名称和版本号。

因有些业务开源组件虽然部署了,但并没有实际运行,故没有实际运行开源组件能按进程编号在进程启动位置处获得,而在内存运行目录文件却无法获得;而一些系统初始化部署的开源组件,如网页容器组件等,在文件系统中是无法显示的,却可以在内存运行目录文件中获得。做并集处理,可以去除重复的开源组件名称和版本号,在满足开源组件全面的前提下,为后续开源组件版本号比对减轻工作量,提高比对效率。

较佳地,按进程编号对在进程启动位置处获取的开源组件名称和版本号、和在内存运行目录文件获取所有正在运行的开源组件名称和版本号进行并集处理后获得总的开源组件名称和版本号的步骤之后还包括:

设置包含所有开源组件名称和与开源组件名称一一对应的最新版本号的开源组件标准库;

判断总的开源组件名称对应的版本号与开源组件标准库内的开源组件名称对应的最新版本号是否一致,如果不一致,启动系统漏洞处理。

即获得总的开源组件名称和版本号的步骤之后,与预设的开源组件标准库进行版本号比对,找出没有及时更新版本的开源组件,方法非常简单可靠。

请参阅图5,一种软件成分分析装置10,包括:

探针设置模块11,用于设置安全监控探针;

启动位置模块12,用于安全监控探针遍历文件系统获取开源组件的进程启动位置;

版本号获取模块13,用于安全监控探针在进程启动位置处获取开源组件名称和版本号。

本申请一实施例提供的软件成分分析装置10与本申请上述实施例提供的软件成分分析方法属于同一构思,其具体实现过程详见说明书全文,此处不再赘述。

本申请一实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现如本申请上述实施例提供的软件成分分析方法的步骤。

图6示出了本申请一实施例提供的计算机设备的具体结构框图,一种计算机设备100包括:一个或多个处理器101、存储器102、以及一个或多个计算机程序,其中处理器101和存储器102通过总线连接,一个或多个计算机程序被存储在存储器102中,并且被配置成由一个或多个处理器101执行,处理器101执行计算机程序时实现如本申请如上所述实施例提供的软件成分分析方法的步骤。

计算机设备可以是台式计算机、移动终端等,移动终端包括手机、平板电脑、笔记本电脑、个人数字助理等。

本申请实施例的软件成分分析方法,设置现有技术的安全监控探针,通过安全监控探针遍历文件系统获取开源组件的进程启动位置,最后通过安全监控探针在进程启动位置处获取开源组件名称和版本号。开源组件包括第三方开发的开源组件和工程师自己内部研发的开源组件,每个开源组件具有其各自的版本号。

本申请实施例的软件成分分析方法通过设置安全监控探针在进程启动位置处获取开源组件名称和版本号,无需另外编写程序,实现方式简单,大大减少了代码编写量,且对开源软件识别准确率高,可以对二进制以外的语言(如JAVA语言等)编写的应用程序进行开源组件识别,适用性广。

应该理解的是,本申请各实施例中的各个步骤并不是必然按照步骤标号指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM

(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 一种基于电磁蘑菇头啮合器的水面回收UUV装置及方法
  • 一种高效油气回收吸附罐再生装置及再生方法
  • 一种碳刷粉尘回收装置及其吸附头和其应用方法
  • 粉尘吸附剂及其制备方法和粉尘吸附过滤装置
技术分类

06120116570546