一种从容器镜像中提取开源组件的检测方法及系统与流程

文档序号:35962616发布日期:2023-11-09 01:28阅读:29来源:国知局
一种从容器镜像中提取开源组件的检测方法及系统与流程

本发明涉及软件安全,尤其涉及一种从容器镜像中提取开源组件的检测方法及系统。


背景技术:

1、容器中开源组件漏洞的发现和修复是容器安全领域中的一个重要问题。由于容器技术的高效性和灵活性,越来越多的企业和组织开始采用容器技术来构建和部署应用程序。然而,容器中使用的开源组件往往存在漏洞,这些漏洞可能会被攻击者利用,导致应用程序或容器本身的安全性受到威胁。因此,及早发现和修复容器中的漏洞,对于保障应用程序和容器的安全至关重要。

2、在容器中获取组件信息的常规方法是先通过容器镜像还原平铺,然后通过读取容器镜像中包管理器所在目录的数据库文件来获取组件信息;对于alpine linux系统,包管理器为apk,其数据库文件位于/lib/apk/db/installed目录下;对于debian系统,包管理器为dpkg,其数据库文件位于/var/lib/dpkg/status目录下;对于fedora系统,包管理器为rpm,其数据库文件位于/var/lib/rpm目录下。通过编写代码解析数据库文件,可以获取已安装组件的详细信息,如名称、版本、依赖关系等。

3、但是这种获取组件信息的方法需要解析多种包管理器,每种包管理器的数据文件格式都不一样,需要对每种格式都有深入理解,才能编写出正确的解析代码;其次,对于一些包管理器的更新,其数据文件格式也可能会发生变化,需要不断修正代码以适应新的格式;此外,不同的包管理器还可能存在一些特殊情况,例如软件包的依赖关系复杂、存在多个版本等,这些情况也需要特殊处理。因此,这种方法需要花费较多的时间和精力来编写和维护代码,且需要有深入的包管理器知识和编程技能。

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


技术实现思路

1、本发明的目的在于克服现有技术的缺点,提供了一种从容器镜像中提取开源组件的检测方法及系统,解决了现有技术存在的不足。

2、本发明的目的通过以下技术方案来实现:一种从容器镜像中提取开源组件的检测方法,所述检测方法包括:

3、用户在sca扫描工具的客户端软件上通过上传或配置相关镜像地址发起镜像扫描;

4、拷贝镜像到资源共享目录,解析镜像并确认包管理器类型,封装资源申请参数并发起资源申请请求;

5、资源调度中心收到分析分析服务申请资源的请求后根据当前资源类型创建对应的资源,并返回资源创建结果给分析服务;

6、分析服务与镜像分析工具交互,分析服务解析相应文件,返回组件关联的漏洞信息完成容器组件的检测。

7、所述拷贝或下载镜像到资源共享目录,解析镜像并确认包管理器类型,封装资源申请参数并发起资源申请请求具体包括以下内容:

8、拷贝客户端上传的镜像到资源共享目录下,通过共享目录主机和容器之间的文件和文件夹进行共享,容器访问主机上的文件和文件夹并对它们进行读取、写入和修改操作;

9、通过解析待测镜像中的指定文件获取镜像的第一层文件,判断第一层文件是否包含特定目录或文件判断出镜像所属的操作系统和包管理器类型;

10、分析服务封装资源申请参数,参数包括待测镜像所在的共享目录位置、操作系统、包管理器类型、镜像大小、扫描id、当前扫描任务的项目信息、扫描发起人、扫描发起时间和扫描类型;

11、分析服务件封装好的资源申请请求发送给资源调度系统,并等待资源信息返回。

12、所述分析服务与镜像分析工具交互具体包括以下内容:

13、分析服务建立与镜像分析工具服务之间的通信,并按照oci规范将待测镜像还原平铺;

14、初始化镜像分析工具服务所在容器的包管理器相关文件,并删除相关文件保留相关文件所在的目录;

15、拷贝待测镜像平铺后的包管理器相关文件到镜像分析工具服务所在容器的对应目录,镜像工具服务调用系统命令获取包管理器列表,并将包管理器列表字符转换为特定组件信息文件后释放出物理资源。

16、所述按照oci规范将待测镜像还原平铺具体包括以下内容:

17、解析镜像的manifest文件,以获取镜像的层次结构和配置信息;

18、通过将各个层的文件和目录复制到一个目标目录中实现将镜像中的各个层的文件进行合并,还原镜像的完整文件系统;

19、根据manifest文件中的配置信息,应用镜像的配置,进而将镜像还原为最终状态。

20、所述将包管理器列表字符转换为特定组件信息文件具体包括以下内容:

21、提取每个包管理器中软件包的组件信息,组件信息包括软件包名称、版本号和依赖关系;

22、根据提取的软件包的组件信息和其它相关信息构建sbom文件;

23、将构建的sbom文件导出到指定的位置,以便后续的分析和管理。

24、一种从容器镜像中提取开源组件的检测系统,它包括镜像扫描模块、扫描请求处理模块、镜像分析资源创建模块、交互模块和组件分析模块;

25、所述镜像扫描模块:用于用户在sca扫描工具的客户端软件上通过上传或配置相关镜像地址发起镜像扫描;

26、所述扫描请求处理模块:用于拷贝镜像到资源共享目录,解析镜像并确认包管理器类型,封装资源申请参数并发起资源申请请求;

27、所述镜像分析资源创建模块:用于通过资源调度中心收到分析分析服务申请资源的请求后根据当前资源类型创建对应的资源,并返回资源创建结果给分析服务;

28、所述交互模块:用于分析服务与镜像分析工具的交互;

29、所述组件分析模块:用于分析服务解析相应文件,返回组件关联的漏洞信息完成容器组件的检测。

30、所述扫描请求处理模块包括镜像解析单元、资源申请参数封装单元和资源申请单元;

31、所述镜像解析单元:用于在镜像拷贝到资源共享目录下后通过解析待测镜像中的指定文件获取镜像的第一层文件,判断第一层文件是否包含特定目录或文件判断出镜像所属的操作系统和包管理器类型;

32、所述资源申请参数封装单元:用于分析服务封装资源申请参数,参数包括待测镜像所在的共享目录位置、操作系统、包管理器类型、镜像大小、扫描id、当前扫描任务的项目信息、扫描发起人、扫描发起时间和扫描类型;

33、所述资源申请单元:用于分析服务件封装好的资源申请请求发送给资源调度系统,并等待资源信息返回。

34、所述交互模块包括镜像还原平铺单元、分析服务与镜像分析工具服务交互单元和包管理器列表转换单元;

35、所述镜像还原平铺单元:用于在建立分析服务与镜像分析工具服务之间的通信后按照oci规范将待测镜像还原平铺;

36、所述分析服务与镜像分析工具服务交互单元:用于初始化镜像分析工具服务所在容器的包管理器相关文件,删除相关文件保留相关文件所在的目录,拷贝待测镜像平铺后的包管理器相关文件到镜像分析工具服务所在容器的对应目录;

37、所述包管理器列表转换单元:用于镜像工具服务调用系统命令获取包管理器列表,并将包管理器列表字符转换为特定组件信息文件后释放出物理资源。

38、本发明具有以下优点:一种从容器镜像中提取开源组件的检测方法及系统,通过将待测镜像的包管理数据文件复制到一个通用容器中,并使用包管理命令直接读取组件信息,以更高效地获取待测镜像中的组件信息。相比于解析不同包管理器数据文件格式的复杂性和维护成本,这种方法更具优势,并且可以提高组件信息读取的速度和准确性。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1