一种面向Java开源软件供应链的依赖关系分析及可视化方法技术

技术编号:37128022 阅读:14 留言:0更新日期:2023-04-06 21:26
本发明专利技术公开了一种面向Java开源软件供应链的依赖关系分析及可视化方法,包括对软件包元数据集进行解析,获得所有软件包特征属性及依赖信息,使用软件包特征属性及依赖信息数据构建图数据库,根据需求利用图数据库解析软件包的依赖关系,包括直接依赖和间接依赖,得到软件包的依赖关系数据,等步骤,本发明专利技术基于图数据库的Java软件包依赖关系分析,相比Maven命令行解析,大大提高了依赖解析的灵活性和效率。其精简的库表设计及版本迭代算法的运用,进一步提升图数据库依赖解析的效率。通过多种不同的统计分析方案,全面系统地表现Java语言生态的软件包依赖关系全貌和特征。生态的软件包依赖关系全貌和特征。生态的软件包依赖关系全貌和特征。

【技术实现步骤摘要】
一种面向Java开源软件供应链的依赖关系分析及可视化方法


[0001]本专利技术涉及开源软件供应链安全领域,具体地说,一种面向Java开源软件供应链的依赖关系分析及可视化方法。

技术介绍

[0002]随着软件行业的快速发展,软件结构、功能的复杂性不断增长,软件开发组件化、开源化已成为业界的主流形态,从而推动了开源软件供应链中第三方库的蓬勃发展。据统计,开源Java项目至少有45%的代码属于开源软件库,并且只有10%的项目没有使用开源库中的代码。开源软件供应链的日益复杂化和多样化,虽然大大减少了软件开发的成本和时间,但同时,针对软件供应链薄弱环节的网络攻击随之增加,软件供应链安全风险不断加剧,成为影响软件安全的关键因素之一。近年来,全球针对软件供应链的安全事件频发,影响巨大。例如2021年12月公开的Apache Log4j2漏洞和2022年3月公开的Spring Framework漏洞,因为利用难度低、危害性高、波及范围广,对整个Java生态和开源软件供应链的安全产生了巨大的影响。漏洞出现后,除了易于分析的直接影响以外,软件包之间的依赖所造成的供应链传递性影响也不容小觑。根据2021年开源软件供应链安全风险研究报告调查结果显示,受软件包依赖关系的影响,一级传播影响范围扩大125倍。而二级传播影响范围相比原始样本扩大173倍!开源软件供应链安全已然成为一个普遍且影响深远的全球性安全问题,重视并研究应对开源软件供应链安全刻不容缓。
[0003]由于现代软件依赖树的复杂性,理清开源软件包之间的依赖关系,将有助于有效阻止漏洞传播。目前,针对Java语言软件包依赖分析,主要基于Maven包管理工具,通过遍历Maven仓库或者使用Maven命令行解析软件包的依赖关系。这种方法虽然能解析出以单个软件包为根节点的依赖关系树,但无法从叶子节点逆向解析整个依赖关系树,对整个Java生态的依赖关系研究,存在不够灵活,效率低下等不足。同时,解析结果通常以文本数据集的方式显示,缺乏直观性和简洁性。
[0004]因此,需要提供一种方法,能够在Java语言生态依赖关系分析中克服上述问题。

技术实现思路

[0005]本专利技术的目的在于针对开源软件供应链安全问题,一种面向Java开源软件供应链的依赖关系分析及可视化方法,基于图数据库和设计算法,能够灵活高效地开展Java语言生态的依赖关系解析,并且利用Gephi软件,将解析结果清晰美观地可视化展示,有利于进一步的研究分析。
[0006]本专利技术的目的是通过以下技术方案来实现的:
[0007]本专利技术公开了一种面向Java开源软件供应链的依赖关系分析及可视化方法,其特征在于,包括以下步骤:
[0008]1)对软件包元数据集进行解析,获得所有软件包特征属性及依赖信息;
[0009]2)使用软件包特征属性及依赖信息数据构建图数据库;
[0010]3)根据需求利用图数据库解析软件包的依赖关系,包括直接依赖和间接依赖,得到软件包的依赖关系数据;
[0011]4)基于软件包的依赖关系数据,通过不同的统计分析方法,研究Java语言生态的软件包依赖关系全貌和特征;
[0012]5)使用绘图工具将包含软件包依赖关系全貌和特征的数据集进行可视化展示。
[0013]作为进一步地改进,本专利技术所述的步骤2)中使用软件包特征属性及依赖信息数据构建图数据库包括以下子步骤:
[0014]2.1)设计图数据库结构表,表中包含软件包特征属性和依赖信息;
[0015]2.2)设计数据库索引结构;
[0016]2.3)将步骤1)得到的软件包属性数据(作为图数据库中的节点)与依赖信息数据(作为图数据库中的边)先后存储到图数据库中;
[0017]2.4)在图数据库中设计运行软件包版本迭代关系插入算法。
[0018]作为进一步地改进,本专利技术所述子步骤中的特征属性包含:GroupID(组号)、ArtifactID(软件包号)、Version(版本)、Timestamp(时间戳)、Packaging(软件包类型)和License(开源协议)。
[0019]作为进一步地改进,本专利技术所述子步骤中的依赖信息包含:依赖对象、依赖类型、依赖属性。
[0020]作为进一步地改进,本专利技术所述的步骤4)中基于软件包的依赖关系数据,通过不同的统计分析方法,研究Java语言生态的软件包依赖关系全貌和特征包括以下子步骤:
[0021]4.1)构建软件包依赖关系自动化查询接口,实现任一软件包依赖关系解析;
[0022]4.2)在步骤4.1)的基础上,通过解析所有软件包的依赖关系,分析Java语言生态的依赖关系全貌和特征。
[0023]作为进一步地改进,本专利技术所述的子步骤4.2)中包括以下几种方法:
[0024]4.2.1)对软件包版本之间的依赖关系进行了抽象和聚合,得到所有软件包之间的直接依赖关系,获得Java生态的依赖关系全貌;
[0025]4.2.2)统计排序Java语言生态中所有软件包的被依赖数量,分析排序前50的软件包之间相互依赖的情况;
[0026]4.2.3)将某关键软件包依赖关系以传播距离进行分层抽象,按层级统计直接依赖和间接依赖软件包(包含所有版本),从而分析关键软件包的层级影响力。
[0027]4.2.4)统计某关键软件包的被依赖项中,又被其他软件包引用的数量,从而分析关键软件包影响力的权重分布。
[0028]作为进一步地改进,本专利技术所述的步骤5)中使用绘图工具将包含软件包依赖关系全貌和特征的数据集进行可视化展示,所述的可视化依赖关系图包括:
[0029]5.1)使用步骤4.2.1)数据绘制的Java生态依赖关系全貌和宏观比例图;
[0030]5.2)使用步骤4.2.2)数据绘制的热门软件包相互依赖关系图;
[0031]5.3)使用步骤4.2.3)数据绘制的某关键软件包依赖关系的传播距离图;
[0032]5.4)使用步骤4.2.4)数据绘制的某关键软件包传播影响力权重分布图。
[0033]本专利技术的有益效果:
[0034]本专利技术针对开源软件供应链安全问题中软件包间依赖所造成的供应链传递性影
响。选取软件包数量大,影响面广的Java软件包管理库Maven作为研究对象。基于搭建的数据库以及设计的分析方法,对Maven软件包间的依赖路径进行多维度地系统性分析及可视化展示。基于图数据库的Java软件包依赖关系分析,相比Maven命令行解析,大大提高了依赖解析的灵活性和效率。其精简的库表设计及版本迭代算法的运用,进一步提升图数据库依赖解析的效率。通过多种不同的统计分析方案,全面系统地表现Java语言生态的软件包依赖关系全貌和特征。同时,采用Gephi绘图工具,极大提高了可视化处理的数据量,而布局算法多样,易扩展的特点,使得可视化展示效果更加清晰美观,为进一步研究分析提供良好条件。从而获取综合性结论,为后期的漏洞传播性威胁分析提供依据。
...

【技术保护点】

【技术特征摘要】
1.一种面向Java开源软件供应链的依赖关系分析及可视化方法,其特征在于,包括以下步骤:1)对软件包元数据集进行解析,获得所有软件包特征属性及依赖信息;2)使用软件包特征属性及依赖信息数据构建图数据库;3)根据需求利用图数据库解析软件包的依赖关系,包括直接依赖和间接依赖,得到软件包的依赖关系数据;4)基于软件包的依赖关系数据,通过不同的统计分析方法,研究Java语言生态的软件包依赖关系全貌和特征;5)使用绘图工具将包含软件包依赖关系全貌和特征的数据集进行可视化展示。2.根据权利要求1所述的面向Java开源软件供应链的依赖关系分析及可视化方法,其特征在于,所述的步骤2)中使用软件包特征属性及依赖信息数据构建图数据库包括以下子步骤:2.1)设计图数据库结构表,表中包含软件包特征属性和依赖信息;2.2)设计数据库索引结构;2.3)将步骤1)得到的软件包属性数据(作为图数据库中的节点)与依赖信息数据(作为图数据库中的边)先后存储到图数据库中;2.4)在图数据库中设计运行软件包版本迭代关系插入算法。3.根据权利要求2所述的面向Java开源软件供应链的依赖关系分析及可视化方法,其特征在于,所述子步骤中的特征属性包含:GroupID(组号)、ArtifactID(软件包号)、Version(版本)、Timestamp(时间戳)、Packaging(软件包类型)和License(开源协议)。4.根据权利要求2所述的面向Java开源软件供应链的依赖关系分析及可视化方法,其特征在于,所述子步骤中的依赖信息包含:依赖对象、依赖类型、依赖属性。5.根据权利要求1或2或3或4所述的面向Java开源软件供应链的依赖关系分析及可视化方法...

【专利技术属性】
技术研发人员:常瑞余丰申文博刘娟王星宇毛天宇任奎
申请(专利权)人:浙江大学嘉兴研究院
类型:发明
国别省市:

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

1