CN111723380B - 一种检测组件漏洞的方法及装置 - Google Patents
一种检测组件漏洞的方法及装置 Download PDFInfo
- Publication number
- CN111723380B CN111723380B CN202010575017.5A CN202010575017A CN111723380B CN 111723380 B CN111723380 B CN 111723380B CN 202010575017 A CN202010575017 A CN 202010575017A CN 111723380 B CN111723380 B CN 111723380B
- Authority
- CN
- China
- Prior art keywords
- component
- class
- tested
- vulnerability
- parameter value
- 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
Images
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
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及金融科技(Fintech)领域,并公开了一种检测组件漏洞的方法及装置,方法包括:获取被测主机上运行的各进程信息;根据各进程信息,确定被测组件的属性信息;在被测组件的属性信息符合预设的漏洞规则后,生成被测组件的验证用例;通过验证用例确定被测组件是否为漏洞组件。本发明通过判断被测组件的属性信息是否符合预设的漏洞规则初筛,再通过验证用例等多维度自动化审查方法,通过部署在主机上的采集程序,对被测组件下载、部署安装、运行等全生命周期进行持续监控,从而自动筛选出存在安全漏洞缺陷的漏洞组件,提高组件漏洞检测的效率与准确性。
Description
技术领域
本发明涉及金融科技(Fintech)技术领域,尤其涉及一种检测组件漏洞的方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(例如:分布式架构、云计算或大数据)应用在金融领域,传统金融业正在逐步向金融科技转变,大数据技术也不例外,但由于金融、支付行业的安全性、实时性要求,对于在金融系统中使用的组件的安全性有更高的要求。
目前组件漏洞审查方法主要为以下两种:
第一种:根据组件的哈希值进行安全比对。计算被测组件的哈希值,将所得值与已知危险组件库中的各个组件哈希值进行对比。如果满足至少一个相同的目标哈希值匹配,则判定被测组件为漏洞组件。
上述方案,通过哈希值与已知危险组件库中的组件版本比对,容易漏检依然存在漏洞片段的组件。原因在于组件多属于开源组件,在实际业务开发过程中,有可能会对代码二次加工后再引用,只要原始的组件的文件、数据内容发生细微变更,其所对应的哈希值也相应会发生变化,从而未能匹配到已知危险组件库中的组件,导致组件漏检。
第二种:在功能测试阶段,由开发、测试人员人为统计、记录组件名称及版本号,与公共漏洞和暴露(Common Vulnerabilities&Exposures,CVE)库中披露的已知危险组件进行排查对比,确定被测组件是否存在漏洞。
上述方案不能实现动态检测。也就是说,传统采集方式通常会静态全量扫描主机包文件,解析配置文件。此种方式不仅操作复杂,对主机磁盘性能影响也较为严重。
发明内容
本申请提供了一种检测组件漏洞的方法及装置,用以解决高效准确的进行检测组件漏洞的问题。
第一方面,本申请实施例提供一种检测组件漏洞的方法,包括:
获取被测主机上运行的各进程信息;其中,所述被测主机安装有被测组件;
根据所述各进程信息,确定所述被测组件的属性信息;
在所述被测组件的属性信息符合预设的漏洞规则后,针对所述被测组件中潜在漏洞所属的类,生成具有第一参数值的验证用例;所述第一参数值应用于所述潜在漏洞所属的类中;
通过代理接口采集所述验证用例在运行中所述潜在漏洞所属的类获得的第二参数值;
通过所述第一参数值和所述第二参数值确定所述被测组件是否为漏洞组件。
上述方案,通过对安装有组件的主机上运行的进程信息来获取被测组件的属性信息,实现了动态检测;通过预设的漏洞规则初筛,再通过验证用例等多维度自动化审查方法,即在被测组件的属性信息符合预设的漏洞规则后,通过验证用例确定被测组件是否为漏洞组件,提高了检测的准确性,通过代理接口采集第二参数值提高了检测效率,从而更高效准确的进行组件的漏洞检测。整体来说,通过部署在主机上的采集程序,对被测组件进行持续监控,从而自动筛选出存在安全漏洞缺陷的漏洞组件,提高组件漏洞检测的效率与准确性。
可选的,所述根据所述各进程信息,确定所述被测组件的属性信息,包括:
通过代理接口获取所述各进程加载的类及所述类对应的包文件;
对所述包文件进行解析,得到所述被测组件的组件名、组件版本号;
将所述组件名、所述组件版本号、所述包文件的路径及所述类确定为所述被测组件的属性信息。
上述方案,通过代理接口的入口方法,实现轻量级自定义的代理类,及可插桩截获所有动态加载的类及类对应的包文件,从而实现对被测组件的属性信息的高效采集。
可选的,所述通过代理接口获取所述各进程加载的类及所述类对应的包文件,包括:
通过代理接口中设置的类获取函数,获取所述各进程加载的类;
通过环境变量,获取所述各进程的包文件;
从所述各进程的包文件中确定所述类对应的包文件。
上述方案,通过类获取函数以及环境变量获取各进程加载的类、包文件,提高了检测效率。
可选的,所述通过环境变量,获取所述各进程的包文件,包括:
通过所述环境变量,获取所述各进程的包路径;
从所述各进程的包路径中获取通过有效验证的包路径;
获取所述有效验证的包路径对应的包文件。
上述方案,通过对包路径进行有效性验证提高了被测组件的属性信息的采集效率。
可选的,所述漏洞规则至少根据以下的一项或多项确定:
组件名、组件版本号、组件的包路径、组件的类的类名。
上述方案,通过漏洞规则进行初筛,提高了检测组件的自动化效率以及准确性。
可选的,所述通过所述第一参数值和所述第二参数值确定所述被测组件是否为漏洞组件,包括:
在所述第一参数值等于所述第二参数值,且所述第一参数值的测试时刻早于所述第二参数值的生成时刻,则确定所述被测组件为漏洞组件。
上述方案,通过比较第一参数值与第二参数值,第一参数值的测试时刻与第二参数值的生成时刻,提高了被测组件漏洞检测的准确率。
可选的,所述代理接口中设置有针对所述潜在漏洞所属的类进行采集的采集函数。
上述方案,通过采集函数确定第二参数值提高了被测组件漏洞检测的效率。
第二方面,本申请实施例提供一种检测组件漏洞的装置,所述装置包括:
获取模块,用于获取被测主机上运行的各进程信息;其中,所述被测主机安装有被测组件;
处理模块,用于根据所述各进程信息,确定所述被测组件的属性信息;在所述被测组件的属性信息符合预设的漏洞规则后,针对所述被测组件中潜在漏洞所属的类,生成具有第一参数值的验证用例;所述第一参数值应用于所述潜在漏洞所属的类中;通过代理接口采集所述验证用例在运行中所述潜在漏洞所属的类获得的第二参数值;通过所述第一参数值和所述第二参数值确定所述被测组件是否为漏洞组件。
可选的,所述处理模块用于:
通过代理接口获取所述各进程加载的类及所述类对应的包文件;
对所述包文件进行解析,得到所述被测组件的组件名、组件版本号;
将所述组件名、所述组件版本号、所述包文件的路径及所述类确定为所述被测组件的属性信息。
可选的,所述处理模块用于:
通过代理接口中设置的类获取函数,获取所述各进程加载的类;
通过环境变量,获取所述各进程的包文件;
从所述各进程的包文件中确定所述类对应的包文件。
可选的,所述处理模块用于:
通过所述环境变量,获取所述各进程的包路径;
从所述各进程的包路径中获取通过有效验证的包路径;
获取所述有效验证的包路径对应的包文件。
可选的,所述处理模块用于:
所述漏洞规则至少根据以下的一项或多项确定:
组件名、组件版本号、组件的包路径、组件的类的类名。
可选的,所述处理模块用于:
在所述第一参数值等于所述第二参数值,且所述第一参数值的测试时刻早于所述第二参数值的生成时刻,则确定所述被测组件为漏洞组件。
可选的,所述处理模块用于:
所述代理接口中设置有针对所述潜在漏洞所属的类进行采集的采集函数。
相应的,本发明实施例还提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行上述检测组件漏洞的方法。
相应的,本发明实施例还提供了一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行上述检测组件漏洞的方法。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种检测组件漏洞的方法的系统框架;
图2为本发明实施例提供的一种检测组件漏洞的方法的流程示意图;
图3为本发明实施例提供的一种检测组件漏洞的方法的流程示意图;
图4为本发明实施例提供的一种检测组件漏洞的装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
首先,对本申请中的部分用语进行解释说明,以便使本领域技术人员理解。
POC:即验证用例。安全测试中POC表示一段说明或者一个触发漏洞攻击的样例,使得用户能够确认该漏洞真实存在。
分布式消息队列:分布式系统中重要的组件。主要解决应用耦合,异步消息,流量削锋等问题。
在介绍本发明实施例之前,阐述现有技术如下,以使更好的理解本发明。
现有技术方案为全量扫描主机包文件,以Java组件为例,现有技术采用全量扫描主机jar包文件、扫描pom.xml文件、解析JavaWeb容器的配置文件等静态暴力扫描方式。此种方案会导致采集遗漏,不能实现动态检测。不仅操作复杂,对主机磁盘性能影响也较为严重。
基于此,本发明实施例提供一种检测组件漏洞的方法,本发明实施例提供的检测组件漏洞的方法,可以适用于如图1所示的系统架构中,该系统架构包括采集器100,被测主机200,分析器300,验证器400。
其中,采集器100用于获取被测主机200上运行的各进程信息。
需要说明的是,被测主机200安装有被测组件。
分析器300用于根据各进程信息,确定被测组件的属性信息并判断被测组件的属性信息是否符合预设的漏洞规则。
验证器400用于在被测组件的属性信息符合预设的漏洞规则后,生成被测组件的验证用例并通过验证用例确定被测组件是否为漏洞组件。
需要说明的是,图1仅是本申请实施例系统架构的一种示例,本申请对此不做具体限定。实际上,采集器100、分析器300和验证器400都可以是被测主机200的一部分,通过被测主机200自身设置的各种功能来实现。
基于上述所示意的系统架构,图2为本发明实施例提供的一种检测组件漏洞的方法所对应的流程示意图,如图2所示,该方法包括:
步骤201,获取被测主机上运行的各进程信息。
需要说明的是,其中,被测主机安装有被测组件。
步骤202,根据各进程信息,确定被测组件的属性信息。
步骤203,在被测组件的属性信息符合预设的漏洞规则后,针对被测组件中潜在漏洞所属的类,生成具有第一参数值的验证用例。
需要说明的是,第一参数值应用于潜在漏洞所属的类中。
步骤204,通过代理接口采集验证用例在运行中潜在漏洞所属的类获得的第二参数值;
步骤205,通过第一参数值和第二参数值确定被测组件是否为漏洞组件。
上述方案,通过判断被测组件的属性信息是否符合预设的漏洞规则初筛,再通过验证用例等多维度自动化审查方法,即在被测组件的属性信息符合预设的漏洞规则后,通过验证用例确定被测组件是否为漏洞组件,提高了检测的准确性,通过代理接口采集第二参数值提高了检测效率,从而更高效准确的进行组件的漏洞检测。整体来说,通过部署在主机上的采集程序,对被测组件下载、部署安装、运行等全生命周期进行持续监控,从而自动筛选出存在安全漏洞缺陷的漏洞组件,提高组件漏洞检测的效率与准确性。
为了更好的解释本发明,本申请实施例以java组件为例。
本申请实施例在步骤201中,获取所有java虚拟机(Java Virtual Machine,JVM)进程信息。
在一种可能的实施方式中,JVM在运行时会生成一个目录hsperfdata_$USER,通过遍历hsperfdata_$USER目录下的文件名,及可获得对应的JVM进程信息。
需要说明的是,$USER是启动java进程的用户名。
进一步的,本申请实施例在步骤202中,如图3所示,具体步骤如下:
步骤301,通过代理接口获取各进程加载的类及类对应的包文件。
步骤302,对包文件进行解析,得到被测组件的组件名、组件版本号。
步骤303,将组件名、组件版本号、包文件的路径及类确定为被测组件的属性信息。
上述方案,通过代理接口的入口方法,实现轻量级自定义的代理类,及可插桩截获所有动态加载的类及类对应的包文件,从而实现对被测组件的属性信息的高效采集。
在步骤301中,通过代理接口中设置的类获取函数,获取各进程加载的类;
具体的,基于上述的示例,此处预先定义实现agentmain方法的采集Agent-Class类。在agentmain静态方法内,引入Instrument接口,并通过遍历instrument的getAllLoadedClasses的接口结果,获取到当前JVM进程所加载的全部java类。
下面具体介绍上述的实现原理:
本申请实施例基于Java代理机制即java agent,java agent本质上可以理解为一个插件,该插件就是一个jar包,这个jar包通过JVMTI(JVM Tool Interface)完成加载,最终借助JPLISAgent(Java Programming Language Instrumentation Services Agent)完成对目标代码的修改。
进一步的,java agent技术的主要功能如下:
1、可以在加载java文件之前做拦截,把字节码做修改。
2、可以在运行期将已经加载的类的字节码做变更。
本申请实施例中,通过java agent技术进行类的字节码修改最主要使用的就是Java Instrumentation API。下面将介绍如何使用Java Instrumentation API进行字节码修改。
由于本申请实施例是在目标JVM运行时加载Agent,则需要实现下面的方法:
public static void agentmain(String agentArgs,Instrumentation inst);
public static void agentmain(String agentArgs);
需要说明的是,inst是Instrumentation类型的对象,是JVM自动传入的。
上述在目标JVM运行时加载了Agent,接下来Agent需要打包成一个jar包,在ManiFest属性中指定Agent-Class。
本申请实施例中,agentmain可以在目标程序丝毫不改动,甚至连启动参数都不加的情况下修改类,并且是运行后修改,而且不重新创建类加载器。
上述通过getAllLoadedClasses方法获取到当前JVM进程所加载的全部java类,进一步的,本申请实施例通过环境变量,获取各进程的包文件。
具体的,首先通过环境变量,获取各进程的包路径;
在一种可能的实施方式中,根据系统环境变量java.class.path值,获取到java业务加载的jar包classpath路径值。
接着,从各进程的包路径中获取通过有效验证的包路径;
最后,获取有效验证的包路径对应的包文件。
举例来说,遍历所有classpath路径下的jar包文件路径,对jar包文件进行预处理操作,比如过滤掉文件目录不存在的路径等。将有效的jar包路径与对应加载的java类结果做进一步处理。
上述方案,通过对包路径进行有效性验证提高了被测组件的属性信息的采集效率。
进一步的,从各进程的包文件中确定类对应的包文件。
在一种可能的实施方式中,通过java类的类名确定其对应的包文件。
举例来说,java类的类名为com.aa.bbb.xx,其对应的包文件包含“com.aa.bbb”。
本申请实施例中,解压最终有效的jar包文件,读取其中的pom.properties文件信息,该配置文件记录的为标准组件对应的组件名及组件版本号。最终将组件名、组件版本号、组件jar包路径、加载的组件JAVA类名等信息,作为被测组件的属性信息上报。
进一步的,判断被测组件的属性信息是否符合预设的漏洞规则。
本申请实施例中,漏洞规则至少根据以下的一项或多项确定:
组件名、组件版本号、组件的包路径、组件的类的类名。
上述方案,通过漏洞规则进行初筛,提高了检测组件的自动化效率以及准确性。
在一种可能的实施方式中,将上述采集到的组件名、组件版本号、组件的包路径、组件的类的类名,通过分布式消息队列上报给特征比对模块。特征比对模块存储了疑似风险识别规则,通过特定的规则算法,初筛疑似存在缺陷的被测组件,其中规则设计满足如下条件:
本申请实施例中,规则语法支持多阶与(&&)、或(||)、非(!)逻辑,表一为表达式说明。
表一
|| | 或 | 即两者满足其一即可 |
&& | 且 | 即两者均需满足才可 |
! | 非 | 取反 |
进一步的,通过模式匹配确定被测组件的属性信息是否符合预设的规则。
需要说明的是,模式匹配支持正则、字符串、数值比较。
本申请实施例中,结合规则字段和逻辑表达式,可以组合成多条检测规则。单条规则表示的是一种预设的组件识别策略和算法集合。其包含了上述采集值进行模式匹配,并通过将||(或)、&&(且)、!(非)逻辑表达式结合。如果上报的属性信息满足组合的条件值,表示检测到的被测组件疑似存在风险,反之则未检测到。
举例来说,比如规则为:
上述描述的是满足java类名为com.aa.bb.cc,且组件名为fastjson,且jar包路径不符合正则规则,或组件版本号低于2.0.3,则判定采集到的fastjson对应组件疑似存在风险。
进一步的,在上述得到满足预设条件的、疑似存在漏洞风险的组件后,为了进一步提高检测准确值,本申请实施例通过验证用例确定疑似存在漏洞风险的组件是否为漏洞组件。
在一种可能的实施方式中,构造POC(Proof of Concept)检测用例。
需要说明的是,POC测试在选用服务器上进行真实数据的运行。
在步骤203中,针对被测组件中潜在漏洞所属的类,生成具有第一参数值的验证用例。
需要说明的是,第一参数值应用于潜在漏洞所属的类中。
举例来说,Poc测试预先构造被测组件存在实际漏洞的验证用例。比如采用"and 1=1"等常见攻击用例,并对被测组件进行本地网络发包。
在一种可能的实施方式中,验证用例由策略下发平台维护。一般策略平台会建设到计算云端,由策略人员进行增删改查实时更新。同时策略平台也会定期下发最新的策略,提高自动化流程效率。
上述方案,验证用例是由被检测主机本机发起的,这样避免了传统方式因网络波动原因,导致最终扫描结果准确率低等问题。
进一步的,步骤204中,代理接口中设置有针对潜在漏洞所属的类进行采集的采集函数。
在一种可能的实施方式中,采集函数可以为自定义的ClassTransformer类。
举例来说,本申请实施例定义实现premain方法的安全检测Agent-Class类。在premain静态方法内,通过Instrument接口调用自定义ClassTransformer类。
需要说明的是,该类实现的主要逻辑是能在JVM运行时对采集到的疑似存在漏洞的被测组件风险JAVA类(比如com.aa.bb.cc)的字节码进行替换与修改。因此只需在ClassTransformer中注入预先定义的安全检测逻辑,对com.aa.bb.cc类进行拦截,针对验证用例username=test and 1=1,其中,username为login函数中的参数,旁路记录JVM堆栈调用login函数时username的值。
进一步的,本申请实施例步骤205中,通过第一参数值和第二参数值确定被测组件是否为漏洞组件。
上述方案,在被测组件的属性信息符合预设的漏洞规则后,通过验证用例确定被测组件是否为漏洞组件,提高了检测的准确性,通过代理接口采集第二参数值提高了检测效率。
上述举例中,一条针对/login接口的URL业务请求,则会对应一次记录到的组件JVM堆栈username值。
本申请实施例中,在第一参数值等于第二参数值,且第一参数值的测试时刻早于第二参数值的生成时刻,则确定被测组件为漏洞组件。
举例来说,分析旁路日志结果数据,若满足Poc验证用例的username等于JVM调用com.aa.bb.cc中login函数username的参数值,且poc发包时间小于实际记录到的时间,则证明被测组件存在漏洞风险,否之不存在。
举例来说,漏洞组件A在com.aa.bb.cc类中login函数参数username存在SQL注入,在处理业务逻辑时,组件A会将外部的username参数直接带到login函数中,造成漏洞触发。而修复后的组件A,则会在login函数中,会对传递过来的username参数进行过滤与删除。因此只需要记录并比对业务运行时JVM调用传递给com.aa.bb.cc类login函数的值,是否与Poc验证用例中的参数值一致,则能判定被测组件是否真实存在漏洞。
基于同一发明构思,图4示例性的示出了本发明实施例提供的一种检测组件漏洞的装置,该装置可以为一种检测组件漏洞的方法的流程。
所述装置,包括:
获取模块401,用于获取被测主机上运行的各进程信息;其中,所述被测主机安装有被测组件;
处理模块402,用于根据所述各进程信息,确定所述被测组件的属性信息;
在所述被测组件的属性信息符合预设的漏洞规则后,生成所述被测组件的验证用例;
通过所述验证用例确定所述被测组件是否为漏洞组件。
可选的,所述处理模块402用于:
通过代理接口获取所述各进程加载的类及所述类对应的包文件;
对所述包文件进行解析,得到所述被测组件的组件名、组件版本号;
将所述组件名、所述组件版本号、所述包文件的路径及所述类确定为所述被测组件的属性信息。
可选的,所述处理模块402用于:
通过代理接口中设置的类获取函数,获取所述各进程加载的类;
通过环境变量,获取所述各进程的包文件;
从所述各进程的包文件中确定所述类对应的包文件。
可选的,所述处理模块402用于:
通过所述环境变量,获取所述各进程的包路径;
从所述各进程的包路径中获取通过有效验证的包路径;
获取所述有效验证的包路径对应的包文件。
可选的,所述处理模块402用于:
所述漏洞规则至少根据以下的一项或多项确定:
组件名、组件版本号、组件的包路径、组件的类的类名。
可选的,所述处理模块402用于:
针对所述被测组件中潜在漏洞所属的类,生成具有第一参数值的验证用例;所述第一参数值应用于所述潜在漏洞所属的类中;
所述通过所述验证用例确定所述被测组件是否为漏洞组件,包括:
通过代理接口采集所述验证用例在运行中所述潜在漏洞所属的类获得的第二参数值;
通过所述第一参数值和所述第二参数值确定所述被测组件是否为漏洞组件。
可选的,所述处理模块402用于:
在所述第一参数值等于所述第二参数值,且所述第一参数值的测试时刻早于所述第二参数值的生成时刻,则确定所述被测组件为漏洞组件。
可选的,所述处理模块402用于:
所述代理接口中设置有针对所述潜在漏洞所属的类进行采集的采集函数。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种检测组件漏洞的方法,其特征在于,所述方法包括:
获取被测主机上运行的各进程信息;其中,所述被测主机安装有被测组件;
通过代理接口获取所述各进程加载的类及所述类对应的包文件;对所述包文件进行解析,得到所述被测组件的组件名、组件版本号;将所述组件名、所述组件版本号、所述包文件的路径及所述类确定为所述被测组件的属性信息;在所述被测组件的属性信息符合预设的漏洞规则后,针对所述被测组件中潜在漏洞所属的类,生成具有第一参数值的验证用例;所述第一参数值应用于所述潜在漏洞所属的类中;
通过代理接口采集所述验证用例在运行中所述潜在漏洞所属的类获得的第二参数值;
在所述第一参数值等于所述第二参数值,且所述第一参数值的测试时刻早于所述第二参数值的生成时刻,则确定所述被测组件为漏洞组件。
2.如权利要求1所述的方法,其特征在于,所述通过代理接口获取所述各进程加载的类及所述类对应的包文件,包括:
通过代理接口中设置的类获取函数,获取所述各进程加载的类;
通过环境变量,获取所述各进程的包文件;
从所述各进程的包文件中确定所述类对应的包文件。
3.如权利要求2所述的方法,其特征在于,所述通过环境变量,获取所述各进程的包文件,包括:
通过所述环境变量,获取所述各进程的包路径;
从所述各进程的包路径中获取通过有效验证的包路径;
获取所述有效验证的包路径对应的包文件。
4.如权利要求1所述的方法,其特征在于,所述漏洞规则至少根据以下的一项或多项确定:
组件名、组件版本号、组件的包路径、组件的类的类名。
5.如权利要求1所述的方法,其特征在于,所述代理接口中设置有针对所述潜在漏洞所属的类进行采集的采集函数。
6.一种检测组件漏洞的装置,其特征在于,包括:
获取模块,用于获取被测主机上运行的各进程信息;其中,所述被测主机安装有被测组件;
处理模块,用于通过代理接口获取所述各进程加载的类及所述类对应的包文件;对所述包文件进行解析,得到所述被测组件的组件名、组件版本号;将所述组件名、所述组件版本号、所述包文件的路径及所述类确定为所述被测组件的属性信息;
所述处理模块,还用于在所述被测组件的属性信息符合预设的漏洞规则后,针对所述被测组件中潜在漏洞所属的类,生成具有第一参数值的验证用例;所述第一参数值应用于所述潜在漏洞所属的类中;
所述处理模块,还用于通过代理接口采集所述验证用例在运行中所述潜在漏洞所属的类获得的第二参数值;
所述处理模块,还用于在所述第一参数值等于所述第二参数值,且所述第一参数值的测试时刻早于所述第二参数值的生成时刻,则确定所述被测组件为漏洞组件。
7.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至5任一项所述的方法。
8.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010575017.5A CN111723380B (zh) | 2020-06-22 | 2020-06-22 | 一种检测组件漏洞的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010575017.5A CN111723380B (zh) | 2020-06-22 | 2020-06-22 | 一种检测组件漏洞的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111723380A CN111723380A (zh) | 2020-09-29 |
CN111723380B true CN111723380B (zh) | 2022-12-16 |
Family
ID=72569971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010575017.5A Active CN111723380B (zh) | 2020-06-22 | 2020-06-22 | 一种检测组件漏洞的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111723380B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112565221B (zh) * | 2020-11-26 | 2022-12-16 | 国网数字科技控股有限公司 | 漏洞检测方法、装置、系统及平台 |
CN113821804B (zh) * | 2021-11-24 | 2022-03-15 | 浙江君同智能科技有限责任公司 | 一种面向第三方组件及其安全风险的跨架构自动化检测方法与系统 |
CN116644425B (zh) * | 2022-04-02 | 2024-02-20 | 港珠澳大桥管理局 | 基于Javaagent的Web漏洞即时阻断方法、装置、设备和存储介质 |
CN115563627B (zh) * | 2022-12-06 | 2023-03-14 | 中国电子科技集团公司第三十研究所 | 一种基于人机协同的二进制程序漏洞静态分析方法 |
CN117130917B (zh) * | 2023-08-28 | 2024-01-23 | 北京安普诺信息技术有限公司 | 一种容器化Java应用的灰盒测试方法、装置及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145784A (zh) * | 2017-05-04 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 一种漏洞扫描的方法、装置及计算机可读介质 |
CN110765464A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海微众银行股份有限公司 | 漏洞检测方法、装置、设备及计算机存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8984644B2 (en) * | 2003-07-01 | 2015-03-17 | Securityprofiling, Llc | Anti-vulnerability system, method, and computer program product |
CN108664793B (zh) * | 2017-03-30 | 2021-10-22 | 腾讯科技(深圳)有限公司 | 一种检测漏洞的方法和装置 |
CN107908545A (zh) * | 2017-09-26 | 2018-04-13 | 深圳市牛鼎丰科技有限公司 | 接口测试方法、装置、计算机设备及存储介质 |
US11017094B2 (en) * | 2018-01-03 | 2021-05-25 | Beijing Jingdong Shangke Information Technology Co., Ltd. | System and method for java deserialization vulnerability detection |
-
2020
- 2020-06-22 CN CN202010575017.5A patent/CN111723380B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145784A (zh) * | 2017-05-04 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 一种漏洞扫描的方法、装置及计算机可读介质 |
CN110765464A (zh) * | 2019-10-30 | 2020-02-07 | 深圳前海微众银行股份有限公司 | 漏洞检测方法、装置、设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111723380A (zh) | 2020-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111723380B (zh) | 一种检测组件漏洞的方法及装置 | |
US11669623B2 (en) | Method for detecting vulnerabilities in software | |
US20200193031A1 (en) | System and Method for an Automated Analysis of Operating System Samples, Crashes and Vulnerability Reproduction | |
US20200012793A1 (en) | System and Method for An Automated Analysis of Operating System Samples | |
US12001564B2 (en) | Runtime application monitoring without modifying application program code | |
CN109255240B (zh) | 一种漏洞处理方法和装置 | |
Duarte et al. | An empirical study of docker vulnerabilities and of static code analysis applicability | |
EP3495978A1 (en) | Method for detecting vulnerabilities in software | |
Di Nardo et al. | Generating complex and faulty test data through model-based mutation analysis | |
Mitropoulos et al. | Dismal code: Studying the evolution of security bugs | |
CN114328168B (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
CN113626823A (zh) | 一种基于可达性分析的组件间交互威胁检测方法及装置 | |
KR100920414B1 (ko) | 트랜잭션의 지정된 수행지점에서 자바 스택을 스냅샷하는자바 프로세스 모니터링 시스템 및 그 방법 | |
US20230141948A1 (en) | Analysis and Testing of Embedded Code | |
CN115906104A (zh) | 一种二次封装后开源组件的安全检测方法及装置 | |
CN115080426A (zh) | 程序文件的检测方法及装置、存储介质和电子设备 | |
CN115544518A (zh) | 漏洞扫描引擎实现方法、装置、漏洞扫描方法及电子设备 | |
CN117992359B (zh) | 服务化软件的观测方法、装置和电子设备 | |
Dallmeier | Mining and checking object behavior | |
Xie et al. | Automatically detecting exception handling defects in android applications | |
Ahmed et al. | Security Analysis of Code Bloat in Machine Learning Systems | |
CN117130917B (zh) | 一种容器化Java应用的灰盒测试方法、装置及系统 | |
US11681805B1 (en) | System for analytic data memorialization, data science, and validation | |
CN117155628B (zh) | 一种容器化应用交互式安全测试方法、系统、装置及可读存储介质 | |
Simic et al. | Library code security analysis |
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 |