CN112434305B - 基于补丁的漏洞检测方法、装置、存储介质和电子设备 - Google Patents
基于补丁的漏洞检测方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN112434305B CN112434305B CN202011416646.XA CN202011416646A CN112434305B CN 112434305 B CN112434305 B CN 112434305B CN 202011416646 A CN202011416646 A CN 202011416646A CN 112434305 B CN112434305 B CN 112434305B
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- loopholes
- party
- software
- detected
- 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.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 65
- 230000001419 dependent effect Effects 0.000 claims abstract description 136
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012038 vulnerability analysis Methods 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 5
- 230000009467 reduction Effects 0.000 abstract description 4
- 238000010276 construction Methods 0.000 abstract description 3
- 230000008439 repair process Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000009430 construction management Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Abstract
本发明提供一种基于补丁的漏洞检测方法、装置、存储介质和电子设备,涉及信息技术和计算机软件技术领域。本发明基于待检测软件项目获取其第三方依赖组件,并对第三方依赖组件的漏洞以及漏洞的补丁进行解析,获取漏洞特征,然后对待检测软件项目进行编译构建和利用调用图对漏洞进行检测,得到对待检测软件项目产生实际影响的第三方依赖组件漏洞。本发明的技术方案能够精确定位对软件项目产生真实影响的第三方依赖组件漏洞,有效避免了对第三方依赖组件进行盲目升级带来的项目执行效率下降或版本兼容性风险,进而提升了软件的安全性和可用性。
Description
技术领域
本发明涉及信息技术和计算机软件技术领域,具体涉及一种基于补丁的漏洞检测方法、装置、存储介质和电子设备。
背景技术
随着开源技术的兴起,第三方依赖组件得到了广泛的应用,可以说,几乎所有的软件都在不同程度上使用开源、第三方组件或依赖项。第三方依赖组件的应用,允许开发人员通过重复使用第三方开发的软件库共享劳动成果。但在为开发人员带来便利的同时,第三方依赖组件由于其自身的安全缺陷也给项目带来了安全隐患。因为使用含有已知漏洞的第三方依赖组件会造成应用程序的破坏或数据丢失,影响软件安全,所以增强第三方依赖组件的安全,对软件项目的安全性至关重要。
目前,对第三方依赖组件进行升级是解决其安全问题的普遍做法。而在软件项目的实际应用中,并非每个第三方依赖组件的漏洞都会对项目产生影响,不经选择地对第三方依赖组件进行安全升级,会带来项目执行效率下降或版本兼容性风险。因此,检测并发现第三方依赖组件中对软件项目产生实际影响的漏洞并进行针对性的修复,对软件项目的安全性和稳定性起到重要的作用。然而,如何检测和确定第三方依赖组件中对软件项目产生实际影响的漏洞,一直是个亟待解决的问题。
实际上,人们发现,补丁文件中的漏洞修复代码信息可以为第三方依赖组件漏洞检测提供数据支持,但到目前为止,还没有基于补丁进行第三方依赖组件漏洞检测的技术,更不存在基于补丁自动化进行第三方依赖组件漏洞检测的技术。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种基于补丁的漏洞检测方法、装置、存储介质和电子设备,解决了现有技术中无法基于补丁自动化进行第三方依赖组件漏洞检测的问题。
(二)技术方案
为实现以上目的,本发明通过以下技术方案予以实现:
第一方面,本发明提供了一种基于补丁的漏洞检测方法,所述方法包括:
基于待检测软件项目获取其第三方依赖组件;
获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征;
对所述待检测软件项目进行编译构建,获得其调用图;
利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞。
优选的,获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征,包括:
基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;
抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征。
优选的,利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
优选的,该方法还包括:在所述利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:
软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
第二方面,本发明提供了一种基于补丁的漏洞检测装置,该装置包括:
第三方依赖组件获取模块,用于基于待检测软件项目获取其第三方依赖组件;
漏洞特征获取模块,用于获取第三方依赖组件的漏洞和所述漏洞对应的补丁,并解析所述补丁获取漏洞特征;
编译构建模块,用于对所述待检测软件项目进行编译构建,获得其调用图;
漏洞查找模块,用于利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞。
优选的,所述漏洞特征获取模块获取第三方依赖组件的漏洞和所述漏洞对应的补丁,并解析所述补丁获取漏洞特征,包括:
基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;
抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征;
优选的,所述漏洞查找模块利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
优选的,该装置还包括:检测报告生成模块,用于在漏洞查找模块利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:
软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
第三方面,本发明提供了一种计算机可读存储介质,其存储用于基于补丁的漏洞检测的计算机程序,其中,所述计算机程序使得计算机执行如下步骤:
基于待检测软件项目获取其第三方依赖组件;
获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征;
对所述待检测软件项目进行编译构建,获得其调用图;
利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞。
第四方面,本发明提供了一种电子设备,包括:
一个或多个处理器;
存储器;以及
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如下步骤:
基于待检测软件项目获取其第三方依赖组件;
获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征;
对所述待检测软件项目进行编译构建,获得其调用图;
利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞。
(三)有益效果
本发明提供了一种基于补丁的漏洞检测方法、装置、存储介质和电子设备。与现有技术相比,具备以下有益效果:
本发明提出的一种基于补丁的漏洞检测方法,基于待检测软件项目获取其第三方依赖组件,并对第三方依赖组件的漏洞以及漏洞的补丁进行解析,获取漏洞特征,然后对待检测软件项目进行编译构建和利用调用图对漏洞进行遍历性检测,得到对待检测软件项目中产生实际影响的第三方依赖组件漏洞。本发明为软件项目第三方依赖组件漏洞的检测建立了自动化的检测体系,该体系能够自动化检测第三方依赖组件的漏洞是否对软件项目产生真实影响,然后精准定位漏洞,有效避免了对第三方依赖组件进行盲目升级带来的项目执行效率下降或版本兼容性风险,进而提升了软件的安全性和可用性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一种基于补丁的漏洞检测方法的总体流程图;
图2为本发明实施例中获取漏洞特征的流程图;
图3为本发明实施例中查找产生实际影响的第三方依赖组件漏洞的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例通过提供一种基于补丁的漏洞检测方法、装置、存储介质和电子设备,解决了现有技术中无法基于补丁自动化进行第三方依赖组件漏洞检测的问题,实现了提升软件安全性和可用性的目的。
本申请实施例中的技术方案为解决上述技术问题,总体思路如下:
由于补丁中保存了漏洞的出现的文件、函数和代码信息,且补丁文件中的漏洞修复代码信息为第三方依赖组件漏洞检测提供了数据支持,所以从补丁中可以获取漏洞的特征,然后再结合软件项目的依赖关系和调用关系,可以确定软件项目是否受此漏洞的影响。由此可以建立一种基于补丁的第三方依赖组件漏洞检测方法,用于有效检测并发现第三方依赖组件中对软件项目的产生实际影响的漏洞,从而降低软件安全性和兼容性风险,进而提升软件的可用性。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
补丁(Patch)是文件之间的一系列差异,这些差异能够通过diff命令应用于源代码树,用来修复源代码的漏洞,进而修复产品的缺陷。补丁中保存了漏洞出现的文件、函数和代码信息,特别是补丁文件中的漏洞修复代码信息为第三方依赖组件漏洞检测提供了数据支持。
实施例1:
第一方面,本发明实施例首先提出了一种基于补丁的漏洞检测方法,参见图1,该方法包括:
S1、基于待检测软件项目获取其第三方依赖组件;
S2、获取上述第三方依赖组件的漏洞和上述漏洞对应的补丁,解析上述补丁获取漏洞特征;
S3、对上述待检测软件项目进行编译构建,获得其调用图;
S4、利用上述调用图遍历上述漏洞,并根据上述漏洞特征查找对上述待检测软件项目产生实际影响的第三方依赖组件漏洞。
可见,本发明提出的一种基于补丁的漏洞检测方法,基于待检测软件项目获取其第三方依赖组件,并对第三方依赖组件的漏洞以及漏洞的补丁进行解析,获取漏洞特征,然后对待检测软件项目进行编译构建和利用调用图对漏洞进行遍历性检测,得到对待检测软件项目中产生实际影响的第三方依赖组件漏洞。本发明为软件项目第三方依赖组件漏洞的检测建立了自动化的检测体系,该体系能够自动化检测第三方依赖组件的漏洞是否对软件项目产生真实影响,然后精准定位漏洞,有效避免了对第三方依赖组件进行盲目升级带来的项目执行效率下降或版本兼容性风险,进而提升了软件的安全性和可用性。
在本发明的实施例中,获取第三方依赖组件的漏洞和漏洞对应的补丁,解析补丁获取漏洞特征,包括:基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征。
实际中,为了更加全面、精准定位对待检测软件项目产生实际影响的第三方依赖组件漏洞,一种较佳的实现方式是,利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
另外,为了方便开发人员参考,一种较佳的处理方式是,该方法还包括:在所述利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
下面结合对每个步骤的阐述,来详细说明本发明一个实施例的实现过程:
图1为本发明一种基于补丁的漏洞检测方法的总体流程图,参见图1,具体过程包括:
S1、基于待检测软件项目获取其第三方依赖组件。
针对待检测的软件项目,分析其项目类型(项目类型根据编程语言不同而不同,如Java代码编写的Java项目、Python代码编写的Python项目,C、C++代码编写的项目等),然后针对不同的项目类型,选择不同方法(不同的项目编程语言和不同的构建管理工具,对应的查找方式也不同)对软件项目的模型文件、物料清单、规范文件等进行分析,最终获得第三方依赖组件名称和版本。以Java项目为例,若其构建管理工具为maven,则读取pom.xml即可得到其引入的第三方依赖组件的名称和版本。
S2、获取上述第三方依赖组件的漏洞和上述漏洞对应的补丁,解析上述补丁获取漏洞特征。
参见图2,针对S1中得到的每个第三方依赖组件,根据其名称和版本,在美国国家漏洞数据库(NVD)中查找其漏洞,然后针对每个漏洞,在美国国家漏洞数据库(NVD)以及第三方依赖组件厂商安全公告中查找各个漏洞对应的补丁并保存,再对每个漏洞补丁进行处理:抽取待修补的文件名称、需要修改的文件位置,然后保留补丁中删除的代码行和不需要修改的代码行,得到修补前的漏洞代码,最终获取第三方依赖组件的漏洞特征信息进行保存。漏洞的特征信息包括待修补的文件名称、需要修改的文件位置、修补前的漏洞代码,漏洞编号,以及漏洞所属的第三方依赖组件软件库的名称等。
S3、对上述待检测软件项目进行编译构建,获得其调用图。
对待检测的软件项目进行编译构建(代码中引入的那些与实际执行无关的第三方依赖组件软件库不会被编译),获得待检测的软件项目的调用图(即控制流图),这时第三方依赖组件软件库中的代码只有实际会被执行的那部分代码会出现该在调用图。
S4、利用上述调用图遍历上述漏洞,并根据上述漏洞特征查找对上述待检测软件项目产生实际影响的第三方依赖组件漏洞。
这个过程实际上就是一个查找比对的过程。参见图3,具体查找比对过程为:对所有漏洞进行遍历,即对每个漏洞都进行分析。判断待检测软件项目的调用图是否调用了漏洞的漏洞代码,若调用了某个漏洞的漏洞代码,则说明此第三方依赖组件软件库在该软件项目工程中确实被引入了,而且此漏洞代码确实被调用了,由此可以判断这个漏洞实际上影响了该软件项目工程,该漏洞即为对软件项目产生实际影响的第三方依赖组件的漏洞。
实际运用中,可根据实际需要选择生成最终的漏洞检测报告供软件开发人员参考。该检测报告包括:待检测软件项目中的第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件漏洞中对软件项目产生实际影响的组件和漏洞列表。
实施例2:
第二方面,本发明提供了一种基于补丁的漏洞检测装置,该装置包括:
第三方依赖组件获取模块,用于基于待检测软件项目获取其第三方依赖组件;
漏洞特征获取模块,用于获取第三方依赖组件的漏洞和所述漏洞对应的补丁,并解析所述补丁获取漏洞特征;
编译构建模块,用于对所述待检测软件项目进行编译构建,获得其调用图;
漏洞查找模块,用于利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞。
优选的,所述漏洞特征获取模块获取第三方依赖组件的漏洞和所述漏洞对应的补丁,并解析所述补丁获取漏洞特征,包括:
基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;
抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征;
优选的,所述漏洞查找模块利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
优选的,该装置还包括:检测报告生成模块,用于在漏洞查找模块利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:
软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
可理解的是,本发明实施例提供的一种基于补丁的漏洞检测装置与上述一种基于补丁的漏洞检测方法相对应,其有关内容的解释、举例、有益效果等部分可以参考一种基于补丁的漏洞检测方法中的相应内容,此处不再赘述。
实施例3:
第三方面,本发明提供了一种计算机可读存储介质,其存储用于基于补丁的漏洞检测的计算机程序,其中,所述计算机程序使得计算机执行以下步骤:
基于待检测软件项目获取其第三方依赖组件;
获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征;
对所述待检测软件项目进行编译构建,获得其调用图;
利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞。
可选的,获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征,包括:
基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;
抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征。
可选的,利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
可选的,该方法还包括:在所述利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:
软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
实施例4:
第四方面,本发明提供了一种电子设备,包括:
一个或多个处理器;
存储器;以及
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如下步骤:
基于待检测软件项目获取其第三方依赖组件;
获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征;
对所述待检测软件项目进行编译构建,获得其调用图;
利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞。
可选的,获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征,包括:
基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;
抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征。
可选的,利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
可选的,该方法还包括:在所述利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:
软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
综上所述,与现有技术相比,具备以下有益效果:
本发明提出的一种基于补丁的漏洞检测方法,基于待检测软件项目获取其第三方依赖组件,并对第三方依赖组件的漏洞以及漏洞的补丁进行解析,获取漏洞特征,然后对待检测软件项目进行编译构建和利用调用图对漏洞进行遍历性检测,得到对待检测软件项目中产生实际影响的第三方依赖组件漏洞。本发明为软件项目第三方依赖组件漏洞的检测建立了自动化的检测体系,该体系能够自动化检测第三方依赖组件的漏洞是否对软件项目产生真实影响,然后精准定位漏洞,有效避免了对第三方依赖组件进行盲目升级带来的项目执行效率下降或版本兼容性风险,进而提升了软件的安全性和可用性。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种基于补丁的漏洞检测方法,其特征在于,所述方法包括:
基于待检测软件项目获取其第三方依赖组件;
获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征;
对所述待检测软件项目进行编译构建,获得其调用图;
利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞;
其中,所述获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征,包括:
基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;
抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征;
所述利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
2.如权利要求1所述的方法,其特征在于,该方法还包括:在所述利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:
软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
3.一种基于补丁的漏洞检测装置,其特征在于,该装置包括:
第三方依赖组件获取模块,用于基于待检测软件项目获取其第三方依赖组件;
漏洞特征获取模块,用于获取第三方依赖组件的漏洞和所述漏洞对应的补丁,并解析所述补丁获取漏洞特征;
编译构建模块,用于对所述待检测软件项目进行编译构建,获得其调用图;
漏洞查找模块,用于利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞;
其中,所述获取所述第三方依赖组件的漏洞和所述漏洞对应的补丁,解析所述补丁获取漏洞特征,包括:
基于所述第三方依赖组件的名称和版本获取其漏洞,基于所述漏洞获取所述漏洞对应的补丁;
抽取每个所述补丁的待修补的文件名称、需要修改的文件位置以及修补前的漏洞代码,得到所述漏洞特征;
所述利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞,包括:
利用所述调用图遍历所述漏洞,并根据所述漏洞特征对所有漏洞进行特征比对,查找所述漏洞代码被所述调用图调用的漏洞,即为对软件项目产生实际影响的第三方依赖组件的漏洞。
4.如权利要求3所述的装置,其特征在于,该装置还包括:检测报告生成模块,用于在漏洞查找模块利用所述调用图遍历所述漏洞,并根据所述漏洞特征查找对所述待检测软件项目产生实际影响的第三方依赖组件漏洞之后,生成检测报告;所述检测报告包括:
软件项目中第三方依赖组件列表、第三方依赖组件漏洞列表,以及第三方依赖组件中对软件项目产生实际影响的组件和漏洞列表。
5.一种计算机可读存储介质,其特征在于,其存储用于基于补丁的漏洞检测的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-2任一项所述的基于补丁的漏洞检测方法。
6.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器;以及
一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权利要求1-2任一项所述的基于补丁的漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011416646.XA CN112434305B (zh) | 2020-12-07 | 2020-12-07 | 基于补丁的漏洞检测方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011416646.XA CN112434305B (zh) | 2020-12-07 | 2020-12-07 | 基于补丁的漏洞检测方法、装置、存储介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112434305A CN112434305A (zh) | 2021-03-02 |
CN112434305B true CN112434305B (zh) | 2024-03-08 |
Family
ID=74691365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011416646.XA Active CN112434305B (zh) | 2020-12-07 | 2020-12-07 | 基于补丁的漏洞检测方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112434305B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113127351A (zh) * | 2021-04-20 | 2021-07-16 | 长沙市到家悠享家政服务有限公司 | 一种第三方组件检测方法、系统和计算机设备 |
CN113343223B (zh) * | 2021-06-30 | 2022-08-02 | 招商局金融科技有限公司 | Jar包安全监控方法、装置、计算机设备及存储介质 |
CN113434870B (zh) * | 2021-07-14 | 2022-07-05 | 中国电子科技网络信息安全有限公司 | 基于软件依赖分析的漏洞检测方法、装置、设备及介质 |
CN114168972B (zh) * | 2021-12-15 | 2024-05-03 | 东北大学 | 一种npm生态系统安全漏洞阻塞点的检测与修复方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567200A (zh) * | 2011-12-14 | 2012-07-11 | 北京航空航天大学 | 基于函数调用图的并行化安全漏洞检测方法 |
CN103198260A (zh) * | 2013-03-28 | 2013-07-10 | 中国科学院信息工程研究所 | 一种二进制程序漏洞自动化定位方法 |
CN106446691A (zh) * | 2016-11-24 | 2017-02-22 | 工业和信息化部电信研究院 | 检测软件中集成或定制的开源项目漏洞的方法和装置 |
CN109359468A (zh) * | 2018-08-23 | 2019-02-19 | 阿里巴巴集团控股有限公司 | 漏洞检测方法、装置及设备 |
CN110287704A (zh) * | 2019-06-25 | 2019-09-27 | 北京中科微澜科技有限公司 | 一种基于漏洞图谱的漏洞软件依赖关系构建方法 |
CN111240719A (zh) * | 2020-01-23 | 2020-06-05 | 复旦大学 | 缺陷驱动的第三方库版本升级推荐方法 |
CN111625839A (zh) * | 2020-05-29 | 2020-09-04 | 深圳前海微众银行股份有限公司 | 第三方组件漏洞检测方法、装置、设备及计算机存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10691808B2 (en) * | 2015-12-10 | 2020-06-23 | Sap Se | Vulnerability analysis of software components |
US20200042712A1 (en) * | 2018-07-31 | 2020-02-06 | Veracode, Inc. | Open-source software vulnerability analysis |
US20200202005A1 (en) * | 2018-12-19 | 2020-06-25 | Blackberry Limited | Automated Software Vulnerability Determination |
US11481498B2 (en) * | 2019-01-28 | 2022-10-25 | Visa International Service Association | Continuous vulnerability management for modern applications |
-
2020
- 2020-12-07 CN CN202011416646.XA patent/CN112434305B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102567200A (zh) * | 2011-12-14 | 2012-07-11 | 北京航空航天大学 | 基于函数调用图的并行化安全漏洞检测方法 |
CN103198260A (zh) * | 2013-03-28 | 2013-07-10 | 中国科学院信息工程研究所 | 一种二进制程序漏洞自动化定位方法 |
CN106446691A (zh) * | 2016-11-24 | 2017-02-22 | 工业和信息化部电信研究院 | 检测软件中集成或定制的开源项目漏洞的方法和装置 |
CN109359468A (zh) * | 2018-08-23 | 2019-02-19 | 阿里巴巴集团控股有限公司 | 漏洞检测方法、装置及设备 |
CN110287704A (zh) * | 2019-06-25 | 2019-09-27 | 北京中科微澜科技有限公司 | 一种基于漏洞图谱的漏洞软件依赖关系构建方法 |
CN111240719A (zh) * | 2020-01-23 | 2020-06-05 | 复旦大学 | 缺陷驱动的第三方库版本升级推荐方法 |
CN111625839A (zh) * | 2020-05-29 | 2020-09-04 | 深圳前海微众银行股份有限公司 | 第三方组件漏洞检测方法、装置、设备及计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
基于漏洞指纹的软件脆弱性代码复用检测方法;刘臻;武泽慧;曹琰;魏强;;浙江大学学报(工学版)(第11期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112434305A (zh) | 2021-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112434305B (zh) | 基于补丁的漏洞检测方法、装置、存储介质和电子设备 | |
CN107273751B (zh) | 基于多模式匹配的安全漏洞在线发现方法 | |
US8954930B2 (en) | System and method for reducing test effort by object risk analysis | |
US8312440B2 (en) | Method, computer program product, and hardware product for providing program individuality analysis for source code programs | |
US9880832B2 (en) | Software patch evaluator | |
US20180060224A1 (en) | Distinguishing Public and Private Code in Testing Environments | |
Yan et al. | Leakchecker: Practical static memory leak detection for managed languages | |
CN104021084A (zh) | 一种Java源代码缺陷检测方法及装置 | |
CN105389262B (zh) | 一种针对界面测试生成测试建议的方法和装置 | |
CN112965913B (zh) | 一种Java软件依赖冲突问题自动化修复的方法 | |
KR101979329B1 (ko) | 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치 | |
CN109614107B (zh) | 一种软件开发工具包的集成方法和装置 | |
CN115794629A (zh) | 软件成分检测方法、电子设备及计算机可读存储介质 | |
CN111240719B (zh) | 缺陷驱动的第三方库版本升级推荐方法 | |
Jayasuriya et al. | Understanding Breaking Changes in the Wild | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
Nguyen et al. | Interaction-based tracking of program entities for test case evolution | |
Chen et al. | Improving regression test efficiency with an awareness of refactoring changes | |
CN114297664A (zh) | 一种基于Gradle的开源组件漏洞检测方法 | |
CN111796832B (zh) | 热补丁文件生成方法、装置、设备及存储介质 | |
CN114691197A (zh) | 代码分析方法、装置、电子设备和存储介质 | |
Chen et al. | Tracking down dynamic feature code changes against Python software evolution | |
CN112631944A (zh) | 基于抽象语法树的源码检测方法及装置、计算机存储介质 | |
Jayasuriya | Towards automated updates of software dependencies | |
KR101513662B1 (ko) | 실행 가능한 그래픽 사용자 인터페이스 검색 시스템 및 검색 방법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |