一种在无编译环境下对项目的动态组件分析方法及系统技术方案

技术编号:37331918 阅读:16 留言:0更新日期:2023-04-21 23:09
本发明专利技术涉及一种在无编译环境下对项目的动态组件分析方法及系统,包括:SCA扫描工具从代码仓库获取项目代码,由SCA扫描工具的模型构建对象解析功能进行解析,生成项目直接依赖关系,最终通过查询SCA知识库的图关系库获取项目依赖组件的漏洞信息。本发明专利技术在使用SCA工具时,无需准备项目构建工具和项目的编译环境,也可以减少因为编译环境问题引起的无法扫描,导致扫描结果的误差问题。其次,可以大大提高扫描的效率,使用图关系数据库,改变存储方式,通过存储大量组件的间接依赖关系和漏洞信息,可以快速准确的找到某一个组件的深层次间接依赖组件及对应的漏洞信息,相较于之前提高了扫描效率。了扫描效率。了扫描效率。

【技术实现步骤摘要】
一种在无编译环境下对项目的动态组件分析方法及系统


[0001]本专利技术涉及软件分析
,尤其涉及一种在无编译环境下对项目的动态组件分析方法及系统。

技术介绍

[0002]动态组件扫码理论上来说是一种通用的分析方法,可以对任何开发语言对象进行分析,Java、C/C++、Golang、Python、JavaScript等等,它对关注的对象是从文件层面的文件内容,以及文件与文件之间的关联关系以及彼此组合成目标的过程细节。从动态组件扫码分析的目标程序形式上分,既可以是源代码也可以是编译出来的各种类型的二进制文件,分析的数据对象对程序架构,编译方式都是不敏感的,比如:类名称、方法/函数名称、常量字符串等等,不管目标程序运行在x86平台还是ARM平台,不管是windows程序还是Linux程序,都是一样的,简而言之动态组件扫码是一种跨开发语言的应用程序分析技术。
[0003]动态组件分析类型主要分为4种类型:依赖匹配、文件目录匹配、代码片段匹配、二进制文件匹配,后3种匹配类型是从源代码文件中提取特征,再对特征进行识别和分析,从而获得软件包的画像:【组件名称+版本号】,而依赖匹配类型,在各计算机语言的编译或者运行环境下,根据源代码中的直接依赖配置,生成出直接依赖组件和间接依赖组件。
[0004]现有技术中通常SCA(动态组件分析)工具扫描Java项目时,需要搭建Java项目的编译环境和项目构建工具,如果没有编译环境,SCA工具扫描项目源代码时,会因为无法编译导致扫描失败或者扫描结果中依赖组件的相关漏洞信息的缺失,因此也影响了扫描的结果的准确性。而搭建编译环境,又涉及到编译环境的版本、项目构建工具的版本的选择及系统环境变量的配置等因素,如果其中一个因素出现问题,会导致项目源代码无法编译,从而影响SCA工具扫描结果的准确性。而且现有技术的扫描过程中,虽然使用项目构建工具,能够较为准确的解析出项目的直接依赖和间接依赖组件,但前置要求是扫描前,要保证项目构建工具的环境是正确的,否则无法扫描结构会因为无法解析pom.xml文件,导致扫描结果不准确。而如果间接依赖的组件数如果过多,也会影响SCA知识库匹配的效率。因此,如何解决现有技术存在的不足,是现阶段需要解决的问题。
[0005]需要说明的是,在上述
技术介绍
部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。

技术实现思路

[0006]本专利技术的目的在于克服现有技术的缺点,提供了一种在无编译环境下对项目的动态组件分析方法、系统、存储介质及终端,解决了现有技术存在的不足。
[0007]本专利技术的目的通过以下技术方案来实现:一种在无编译环境下对项目的动态组件分析方法,所述动态组件分析方法包括:
[0008]拉取代码步骤:用户通过SCA扫描工具配置项目的代码仓库地址,并触发扫描,SCA扫描工具根据用户配置的代码仓库地址,拉取对应项目的源代码到SCA扫描工具所在服务
器上;
[0009]解析项目模型对象步骤:SCA工具扫描项目源代码中所有文件,将所有模型构建对象文件都循环遍历并根据解析规则进行解析得到直接依赖组件信息;
[0010]漏洞查询步骤:SCA扫描工具将直接依赖组件的列表信息发送给SCA知识库,由SCA知识库通过图关系数据库查询直接依赖组件的漏洞信息,以及直接依赖组件对应的间接依赖组件的漏洞信息,然后形成一个项目依赖组件的漏洞信息列表,并返回给SCA扫描工具;
[0011]漏洞展示步骤:SCA扫描工具获取所有直接依赖和间接依赖组件的漏洞信息,并通过页面展示给用户。
[0012]所述动态组件分析方法还包括:数据准备步骤和环境搭建步骤;
[0013]所述数据准备步骤:获取采集开源组件的源码、漏洞信息和组件信息、组件的直接和间接依赖关系数据,并采用图关系数据库存储,将关系型数据库的历史数据导出到CSV文件,然后将CSV文件导入到图关系数据库中;
[0014]所述环境搭建步骤:搭建SCA知识库和SCA扫描工具。
[0015]所述解析项目模型对象步骤具体包括:
[0016]SCA工具循环遍历源代码中的所有目录,找到所有的模型构建对象文件,然后逐一对模型构建对象文件进行解析;
[0017]提取模型构建对象文件中所有的依赖组件说明项标签对里的内容,然后将每对依赖组件说明项标签里的开源项目所属组织、开源项目或模块名称、开源项目版本的内容进行封装,形成一个组件列表,列表里的值为开源项目所属组织的值、开源项目或模块名称的值、开源项目版本的值,这些组件列表的组件即为项目的直接依赖组件信息。
[0018]所述图关系数据库包括组件漏洞的图关系,所述组件漏洞图关系根据图关系模型分为组件信息节点和漏洞信息节点,组件信息节点之间的存在依赖关系,且同一个组件信息根据版本信息的不同分为不同组件信息节点,组件信息节点与漏洞信息节点之间存在关联关系。
[0019]一种在无编译环境下对项目的动态组件分析系统,它包括代码仓库、SCA扫描工具和SCA知识库;
[0020]所述代码仓库:用于存放用户项目的源代码,通过客户配置的代码仓库的账号、密码和代码库分支,从代码仓库中远程获取代码;
[0021]所述SCA扫描工具:用于从代码仓库中获取用户的项目源代码,并对项目源代码进行全量循环遍历扫描,找到所有的模型构建对象文件,然后解析依赖组件说明项,获取项目的直接依赖组件的信息,然后通过api接口发送给SCA知识库进行查询;
[0022]所述SCA知识库:用于存储数据信息,接收SCA扫描工具发送的项目的直接依赖组件的信息,通过查询SCA知识库中的图关系数据库找出与直接依赖组件相关的间接依赖组件和具体的漏洞信息,然后返回给SCA扫描工具。
[0023]所述SCA扫描工具包括代码拉取模块和项目模型对象解析模块;
[0024]所述拉取代码步模块:用于用户通过SCA扫描工具配置项目的代码仓库地址,并触发扫描,SCA扫描工具根据用户配置的代码仓库地址,拉取对应项目的源代码到SCA扫描工具所在服务器上;
[0025]所述项目模型对象解析模块:用于通过SCA工具扫描项目源代码中所有文件,将所
有模型构建对象文件都循环遍历并根据解析规则进行解析得到直接依赖组件信息。
[0026]所述图关系数据库包括组件漏洞的图关系,所述组件漏洞图关系根据图关系模型分为组件信息节点和漏洞信息节点,组件信息节点之间的存在依赖关系,且同一个组件信息根据版本信息的不同分为不同组件信息节点,组件信息节点与漏洞信息节点之间存在关联关系。
[0027]一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述动态组件分析方法的步骤。
[0028]一种终端设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现所述动态组件分析方法的步骤。
[0029]本专利技术具有以下优点:一种在无本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述动态组件分析方法包括:拉取代码步骤:用户通过SCA扫描工具配置项目的代码仓库地址,并触发扫描,SCA扫描工具根据用户配置的代码仓库地址,拉取对应项目的源代码到SCA扫描工具所在服务器上;解析项目模型对象步骤:SCA工具扫描项目源代码中所有文件,将所有模型构建对象文件都循环遍历并根据解析规则进行解析得到直接依赖组件信息;漏洞查询步骤:SCA扫描工具将直接依赖组件的列表信息发送给SCA知识库,由SCA知识库通过图关系数据库查询直接依赖组件的漏洞信息,以及直接依赖组件对应的间接依赖组件的漏洞信息,然后形成一个项目依赖组件的漏洞信息列表,并返回给SCA扫描工具;漏洞展示步骤:SCA扫描工具获取所有直接依赖和间接依赖组件的漏洞信息,并通过页面展示给用户。2.根据权利要求1所述的一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述动态组件分析方法还包括:数据准备步骤和环境搭建步骤;所述数据准备步骤:获取采集开源组件的源码、漏洞信息和组件信息、组件的直接和间接依赖关系数据,并采用图关系数据库存储,将关系型数据库的历史数据导出到CSV文件,然后将CSV文件导入到图关系数据库中;所述环境搭建步骤:搭建SCA知识库和SCA扫描工具。3.根据权利要求1所述的一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述解析项目模型对象步骤具体包括:SCA工具循环遍历源代码中的所有目录,找到所有的模型构建对象文件,然后逐一对模型构建对象文件进行解析;提取模型构建对象文件中所有的依赖组件说明项标签对里的内容,然后将每对依赖组件说明项标签里的开源项目所属组织、开源项目或模块名称、开源项目版本的内容进行封装,形成一个组件列表,列表里的值为开源项目所属组织的值、开源项目或模块名称的值、开源项目版本的值,这些组件列表的组件即为项目的直接依赖组件信息。4.根据权利要求1所述的一种在无编译环境下对项目的动态组件分析方法,其特征在于:所述图关系数据库包括组件漏洞的图关系,所述组件漏洞图关系根据图关系模型分为组件信息节点和漏洞信息节点,组件信息节点之间的存在依赖关系,且同一个组件信息根据版本信息的不同分为不同...

【专利技术属性】
技术研发人员:朱辉娄俊
申请(专利权)人:软安科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1