一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Gradle的开源组件漏洞检测方法与流程

2022-04-09 08:21:10 来源:中国专利 TAG:

一种基于gradle的开源组件漏洞检测方法
技术领域
1.本发明涉及软件测试技术领域,具体涉及一种基于gradle的开源组件漏洞检测方法。


背景技术:

[0002]“不要重复发明轮子”已经成为了软件开发领域里的一个金科玉律。随着技术的发展,无论是后端工程师还是前端工程师,开发的时候不会再像以前那样写很多原生的代码,取而代之的是使用各种开发框架以及开源组件。这些框架和组件都有一个共同的特点,就是简单、高效,极大的提高了我们的开发效率。
[0003]
但近年来开源软件的安全性事件频发,也打破了人们传统观念中的“开源等于安全”的认知。开源软件具有开放、共同参与、自由传播等特性,一方面由于开发者自身安全意识和技术水平不足容易产生软件漏洞,另一方面也无法避免恶意人员向开源软件注入木马程序进行软件供应链攻击等安全风险引入行为。
[0004]
为了检测开源组件的漏洞,首先需要明确使用了什么组件,现有方法可通过开源组件指纹识别工具识别出开源组件及其版本。指纹识别往往通过提取某部分的关键字或某文件的md5值进行判断,这种方式得到的组件信息尤其是组件版本号不一定准确,并且此方法还要建立一个庞大的指纹数据库。
[0005]
许多项目在引入了开源组件后,也引入了自动构建工具,对这些组件进行统一管理,配置依赖关系等。由此也有方法针对maven构建的项目,通过maven的pom文件解析组件信息。但gradle已是后起之秀,是目前android主流的构建工具,也吸引了众多的ant和maven的使用者。maven的组件信息存储方式和gradle不同,其解析方式也无法通用。


技术实现要素:

[0006]
本发明的目的在于提供一种基于gradle的开源组件漏洞检测方法,以期解决背景技术中存在的技术问题。
[0007]
为了实现上述目的,本发明采用以下技术方案:
[0008]
一种基于gradle的开源组件漏洞检测方法,
[0009]
s1:建立初始组件清单:收集被测试对象常用组件清单,存入数据库中;
[0010]
s2:建立本地漏洞库:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库;
[0011]
s3:更新本地漏洞库:以预设频率执行步骤s2的爬虫脚本,如果有新的漏洞即时更新到数据库中;
[0012]
s4:解析项目使用组件:编写脚本解析gradle的项目的配置文件,获得项目所使用组件的清单;
[0013]
s5:更新组件清单:如步骤s4中检出组件清单里有未存储的组件,则更新步骤s1中的组件清单,并执行步骤s2更新漏洞库;
[0014]
s6:检测组件漏洞:编写比对脚本与本地漏洞库进行对比,检测项目使用组件是否存在漏洞,并输出结果。
[0015]
所述步骤s2:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库,包括:
[0016]
s21:遍历组件清单中的组件名,使用组件名在安全机构网站中搜索该组件的漏洞;
[0017]
s22:解析漏洞结果页面的数据,获得漏洞相关的版本号以及漏洞名称,漏洞编号;
[0018]
s23:将s21、s22的步骤编写为爬虫脚本,并通过爬虫脚本将结果存入数据库的漏洞表中。
[0019]
所述步骤s3中的预设频率为一天一次。
[0020]
本技术所披露的一种基于gradle的开源组件漏洞检测方法可能带来的有益效果包括但不限于:
[0021]
本发明提供的方法基于gradle的项目通过groovy语言配置组件名称以及版本号,同时cnvd、cnnvd等机构的网站会及时披露已发现的开源组件的漏洞信息。通过爬虫工具获取安全漏洞库披露的常用组件漏洞信息,建立本地漏洞库,再通过解析gradle项目的配置文件获得项目依赖的组件信息。若组件漏洞尚未收集,则立即使用爬虫工具完善漏洞信息。最后将项目所有组件信息与本地漏洞库进行对比,即可检测出项目是否存在漏洞。通过传入gradle的项目的配置文件,自动解析并检测开源组件是否存在漏洞并输出结果。
附图说明
[0022]
图1是基于gradle的开源组件漏洞检测方法的流程示意图。
具体实施方式
[0023]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
[0024]
相反,本技术涵盖任何由权利要求定义的在本技术的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本技术有更好的了解,在下文对本技术的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本技术。
[0025]
以下将对本技术实施例所涉及的一种基于gradle的开源组件漏洞检测方法进行详细说明。值得注意的是,以下实施例仅仅用于解释本技术,并不构成对本技术的限定。
[0026]
实施例1:
[0027]
如图1所示,本发明旨在及时检测出开源组件的漏洞,提出一种基于gradle的开源组件漏洞检测方法。以下实施例中编程语言使用python3,数据库使用mysql。具体实施方式如下:
[0028]
s1:建立初始组件清单:
[0029]
s11:梳理被测项目常用组件,将这些组件名称保存到数据库的组件名称表中。
[0030]
s2:建立本地漏洞库:
[0031]
s21:遍历s11所述组件名称表中的组件名,使用组件名在cnvd网站中搜索该组件的漏洞;
[0032]
s22:解析漏洞结果页面的数据,获得漏洞相关的版本号以及漏洞名称,漏洞编号;
[0033]
s23:将s21、s22的步骤编写为python爬虫脚本,并通过爬虫脚本将结果存入数据库的漏洞表中。
[0034]
s3:更新本地漏洞库:
[0035]
s31:以一天一次的频率执行s23爬虫脚本,将解析到的新数据即时更新到数据库中。
[0036]
s4:解析项目使用组件:
[0037]
s41:输入gradle的项目的配置文件,通过python的re库解析出项目所使用的组件及版本信息。
[0038]
s5:更新组件清单:
[0039]
s51:查看s41解析的组件是否已在s1所建清单存在,若不存在,将新组件添加到s1所建清单位中。
[0040]
s52:启动s23所编写的爬虫脚本,更新本地漏洞库。
[0041]
s6:检测组件漏洞:
[0042]
s61:编写python比对脚本在数据库中查询是否存在s41所得的项目组件的漏洞信息,并输出结果。
[0043]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献