CN114297664A - 一种基于Gradle的开源组件漏洞检测方法 - Google Patents
一种基于Gradle的开源组件漏洞检测方法 Download PDFInfo
- 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
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于Gradle的开源组件漏洞检测方法,包括:S1:建立初始组件清单:收集被测试对象常用组件清单,存入数据库中;S2:建立本地漏洞库:根据组件清单上的组件已披露的漏洞,编写爬虫脚本自动搜索并将搜索结果按组件版本分类存入本地漏洞库;S3:更新本地漏洞库:以预设频率执行步骤S2的爬虫脚本,如果有新的漏洞即时更新到数据库中;S4:解析项目使用组件:编写脚本解析Gradle的项目的配置文件,获得项目所使用组件的清单;S5:更新组件清单:如步骤S4中检出组件清单里有未存储的组件,则更新步骤S1中的组件清单,并执行步骤S2更新漏洞库;S6:检测组件漏洞:编写比对脚本与本地漏洞库进行对比,检测项目使用组件是否存在漏洞,并输出结果。
Description
技术领域
本发明涉及软件测试技术领域,具体涉及一种基于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中的预设频率为一天一次。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114996718A (zh) * | 2022-06-30 | 2022-09-02 | 浙江网商银行股份有限公司 | 数据处理方法以及装置 |
-
2021
- 2021-12-30 CN CN202111658709.7A patent/CN114297664A/zh active Pending
Cited By (1)
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 |