CN114297664A - 一种基于Gradle的开源组件漏洞检测方法 - Google Patents

一种基于Gradle的开源组件漏洞检测方法 Download PDF

Info

Publication number
CN114297664A
CN114297664A CN202111658709.7A CN202111658709A CN114297664A CN 114297664 A CN114297664 A CN 114297664A CN 202111658709 A CN202111658709 A CN 202111658709A CN 114297664 A CN114297664 A CN 114297664A
Authority
CN
China
Prior art keywords
component
vulnerability
list
library
gradle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111658709.7A
Other languages
English (en)
Inventor
张荣芸
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sichuan Qiruike Technology Co Ltd
Original Assignee
Sichuan Qiruike Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sichuan Qiruike Technology Co Ltd filed Critical Sichuan Qiruike Technology Co Ltd
Priority to CN202111658709.7A priority Critical patent/CN114297664A/zh
Publication of CN114297664A publication Critical patent/CN114297664A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于Gradle的开源组件漏洞检测方法,包括:S1:建立初始组件清单:收集被测试对象常用组件清单,存入数据库中;S2:建立本地漏洞库:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库;S3:更新本地漏洞库:以预设频率执行步骤S2的爬虫脚本,如果有新的漏洞即时更新到数据库中;S4:解析项目使用组件:编写脚本解析Gradle的项目的配置文件,获得项目所使用组件的清单;S5:更新组件清单:如步骤S4中检出组件清单里有未存储的组件,则更新步骤S1中的组件清单,并执行步骤S2更新漏洞库;S6:检测组件漏洞:编写比对脚本与本地漏洞库进行对比,检测项目使用组件是否存在漏洞,并输出结果。

Description

一种基于Gradle的开源组件漏洞检测方法
技术领域
本发明涉及软件测试技术领域,具体涉及一种基于Gradle的开源组件漏洞检测方法。
背景技术
“不要重复发明轮子”已经成为了软件开发领域里的一个金科玉律。随着技术的发展,无论是后端工程师还是前端工程师,开发的时候不会再像以前那样写很多原生的代码,取而代之的是使用各种开发框架以及开源组件。这些框架和组件都有一个共同的特点,就是简单、高效,极大的提高了我们的开发效率。
但近年来开源软件的安全性事件频发,也打破了人们传统观念中的“开源等于安全”的认知。开源软件具有开放、共同参与、自由传播等特性,一方面由于开发者自身安全意识和技术水平不足容易产生软件漏洞,另一方面也无法避免恶意人员向开源软件注入木马程序进行软件供应链攻击等安全风险引入行为。
为了检测开源组件的漏洞,首先需要明确使用了什么组件,现有方法可通过开源组件指纹识别工具识别出开源组件及其版本。指纹识别往往通过提取某部分的关键字或某文件的MD5值进行判断,这种方式得到的组件信息尤其是组件版本号不一定准确,并且此方法还要建立一个庞大的指纹数据库。
许多项目在引入了开源组件后,也引入了自动构建工具,对这些组件进行统一管理,配置依赖关系等。由此也有方法针对maven构建的项目,通过maven的pom文件解析组件信息。但Gradle已是后起之秀,是目前Android主流的构建工具,也吸引了众多的ant和maven的使用者。Maven的组件信息存储方式和gradle不同,其解析方式也无法通用。
发明内容
本发明的目的在于提供一种基于Gradle的开源组件漏洞检测方法,以期解决背景技术中存在的技术问题。
为了实现上述目的,本发明采用以下技术方案:
一种基于Gradle的开源组件漏洞检测方法,
S1:建立初始组件清单:收集被测试对象常用组件清单,存入数据库中;
S2:建立本地漏洞库:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库;
S3:更新本地漏洞库:以预设频率执行步骤S2的爬虫脚本,如果有新的漏洞即时更新到数据库中;
S4:解析项目使用组件:编写脚本解析Gradle的项目的配置文件,获得项目所使用组件的清单;
S5:更新组件清单:如步骤S4中检出组件清单里有未存储的组件,则更新步骤S1中的组件清单,并执行步骤S2更新漏洞库;
S6:检测组件漏洞:编写比对脚本与本地漏洞库进行对比,检测项目使用组件是否存在漏洞,并输出结果。
所述步骤S2:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库,包括:
S21:遍历组件清单中的组件名,使用组件名在安全机构网站中搜索该组件的漏洞;
S22:解析漏洞结果页面的数据,获得漏洞相关的版本号以及漏洞名称,漏洞编号;
S23:将S21、S22的步骤编写为爬虫脚本,并通过爬虫脚本将结果存入数据库的漏洞表中。
所述步骤S3中的预设频率为一天一次。
本申请所披露的一种基于Gradle的开源组件漏洞检测方法可能带来的有益效果包括但不限于:
本发明提供的方法基于Gradle的项目通过Groovy语言配置组件名称以及版本号,同时CNVD、CNNVD等机构的网站会及时披露已发现的开源组件的漏洞信息。通过爬虫工具获取安全漏洞库披露的常用组件漏洞信息,建立本地漏洞库,再通过解析Gradle项目的配置文件获得项目依赖的组件信息。若组件漏洞尚未收集,则立即使用爬虫工具完善漏洞信息。最后将项目所有组件信息与本地漏洞库进行对比,即可检测出项目是否存在漏洞。通过传入Gradle的项目的配置文件,自动解析并检测开源组件是否存在漏洞并输出结果。
附图说明
图1是基于Gradle的开源组件漏洞检测方法的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
相反,本申请涵盖任何由权利要求定义的在本申请的精髓和范围上做的替代、修改、等效方法以及方案。进一步,为了使公众对本申请有更好的了解,在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。
以下将对本申请实施例所涉及的一种基于Gradle的开源组件漏洞检测方法进行详细说明。值得注意的是,以下实施例仅仅用于解释本申请,并不构成对本申请的限定。
实施例1:
如图1所示,本发明旨在及时检测出开源组件的漏洞,提出一种基于Gradle的开源组件漏洞检测方法。以下实施例中编程语言使用Python3,数据库使用Mysql。具体实施方式如下:
S1:建立初始组件清单:
S11:梳理被测项目常用组件,将这些组件名称保存到数据库的组件名称表中。
S2:建立本地漏洞库:
S21:遍历S11所述组件名称表中的组件名,使用组件名在CNVD网站中搜索该组件的漏洞;
S22:解析漏洞结果页面的数据,获得漏洞相关的版本号以及漏洞名称,漏洞编号;
S23:将S21、S22的步骤编写为Python爬虫脚本,并通过爬虫脚本将结果存入数据库的漏洞表中。
S3:更新本地漏洞库:
S31:以一天一次的频率执行S23爬虫脚本,将解析到的新数据即时更新到数据库中。
S4:解析项目使用组件:
S41:输入Gradle的项目的配置文件,通过Python的re库解析出项目所使用的组件及版本信息。
S5:更新组件清单:
S51:查看S41解析的组件是否已在S1所建清单存在,若不存在,将新组件添加到S1所建清单位中。
S52:启动S23所编写的爬虫脚本,更新本地漏洞库。
S6:检测组件漏洞:
S61:编写Python比对脚本在数据库中查询是否存在S41所得的项目组件的漏洞信息,并输出结果。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种基于Gradle的开源组件漏洞检测方法,其特征在于,
S1:建立初始组件清单:收集被测试对象常用组件清单,存入数据库中;
S2:建立本地漏洞库:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库;
S3:更新本地漏洞库:以预设频率执行步骤S2的爬虫脚本,如果有新的漏洞即时更新到数据库中;
S4:解析项目使用组件:编写脚本解析Gradle的项目的配置文件,获得项目所使用组件的清单;
S5:更新组件清单:如步骤S4中检出组件清单里有未存储的组件,则更新步骤S1中的组件清单,并执行步骤S2更新漏洞库;
S6:检测组件漏洞:编写比对脚本与本地漏洞库进行对比,检测项目使用组件是否存在漏洞,并输出结果。
2.根据权利要求1所述的一种基于Gradle的开源组件漏洞检测方法,其特征在于,所述步骤S2:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库,包括:
S21:遍历组件清单中的组件名,使用组件名在安全机构网站中搜索该组件的漏洞;
S22:解析漏洞结果页面的数据,获得漏洞相关的版本号以及漏洞名称,漏洞编号;
S23:将S21、S22的步骤编写为爬虫脚本,并通过爬虫脚本将结果存入数据库的漏洞表中。
3.根据权利要求1所述的一种基于Gradle的开源组件漏洞检测方法,其特征在于,所述步骤S3中的预设频率为一天一次。
CN202111658709.7A 2021-12-30 2021-12-30 一种基于Gradle的开源组件漏洞检测方法 Pending CN114297664A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111658709.7A CN114297664A (zh) 2021-12-30 2021-12-30 一种基于Gradle的开源组件漏洞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111658709.7A CN114297664A (zh) 2021-12-30 2021-12-30 一种基于Gradle的开源组件漏洞检测方法

Publications (1)

Publication Number Publication Date
CN114297664A true CN114297664A (zh) 2022-04-08

Family

ID=80973913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111658709.7A Pending CN114297664A (zh) 2021-12-30 2021-12-30 一种基于Gradle的开源组件漏洞检测方法

Country Status (1)

Country Link
CN (1) CN114297664A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114996718A (zh) * 2022-06-30 2022-09-02 浙江网商银行股份有限公司 数据处理方法以及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114996718A (zh) * 2022-06-30 2022-09-02 浙江网商银行股份有限公司 数据处理方法以及装置

Similar Documents

Publication Publication Date Title
US11797298B2 (en) Automating identification of code snippets for library suggestion models
CN107832619B (zh) Android平台下应用程序漏洞自动化挖掘系统及方法
CN107273751B (zh) 基于多模式匹配的安全漏洞在线发现方法
Walden et al. Predicting vulnerable components: Software metrics vs text mining
US20190079853A1 (en) Automating Identification of Test Cases for Library Suggestion Models
CN110399300B (zh) 一种基于动态类型感知的Python软件模糊测试方法
CN105787367B (zh) 一种软件更新的补丁安全性检测方法及系统
US9275246B2 (en) System and method for static detection and categorization of information-flow downgraders
Davies et al. Comparing text‐based and dependence‐based approaches for determining the origins of bugs
CN110287693B (zh) 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN104021084A (zh) 一种Java源代码缺陷检测方法及装置
CN105389262B (zh) 一种针对界面测试生成测试建议的方法和装置
CN107045477B (zh) 一种可进行多维度检测的质量评估平台
Cleve et al. Dynamic program analysis for database reverse engineering
Eberhardt et al. Unsupervised learning of API aliasing specifications
CN112256271B (zh) 一种基于静态分析的区块链智能合约安全检测系统
CN103257919A (zh) 脚本程序检查方法和装置
Zhang et al. Pre-trained model-based automated software vulnerability repair: How far are we?
CN110287700B (zh) 一种iOS应用安全分析方法及装置
Zhong et al. Inferring bug signatures to detect real bugs
Shomrat et al. Detecting refactored clones
CN114297664A (zh) 一种基于Gradle的开源组件漏洞检测方法
Suneja et al. Towards reliable AI for source code understanding
Harzevili et al. Automatic Static Vulnerability Detection for Machine Learning Libraries: Are We There Yet?
CN114691197A (zh) 代码分析方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination