CN111931184A - 反序列化漏洞检测方法及装置 - Google Patents
反序列化漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN111931184A CN111931184A CN202010799235.7A CN202010799235A CN111931184A CN 111931184 A CN111931184 A CN 111931184A CN 202010799235 A CN202010799235 A CN 202010799235A CN 111931184 A CN111931184 A CN 111931184A
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- serialization
- program data
- vulnerability detection
- detection
- 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.)
- Granted
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
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供反序列化漏洞检测方法及装置,涉及信息安全技术领域。所述方法包括:接收漏洞检测终端发送的反序列化漏洞检测请求;若判断获知应用标识和版本号对应的应用程序没有实施过检测,则对程序数据进行预处理,获得程序数据对应的有向图数据;将程序数据对应的有向图数据上传给漏洞检测云端,以使得漏洞检测云端基于程序数据对应的有向图数据以及反序列化漏洞模型,获得反序列化漏洞检测策略;接收漏洞检测云端下发的反序列化漏洞检测策略,并生成检测脚本;运行所述检测脚本,获得检测结果;将检测结果返回给漏洞检测终端。所述装置用于执行上述方法。本发明实施例提供的反序列化漏洞检测方法及装置,提高了反序列化漏洞的检测效率。
Description
技术领域
本发明涉及信息安全技术领域,具体涉及反序列化漏洞检测方法及装置。
背景技术
随着高级语言的发展及开发技术的成熟,许多企业基于JAVA编程语言或采用该语言实现的框架来开发多样化的应用。应用开发过程中,为了能解决数据持久化以及进程通信间的对象传送问题,序列化与反序列化技术被广泛应用。
目前,随着序列化与反序列化技术的广泛使用,近年来出现不法分子恶意利用反序列化技术的漏洞执行恶意行为,窃取用户数据,破坏计算机系统。因此,如何检测反序列化漏洞,提高安全性,是每个企业必须面对和解决的问题。现有技术中,反序列化漏洞检测方法存在以下三点不足:第一,检测方法主要利用现有已发现的调用链,对所有涉及到的相关应用依次执行验证,一旦涉及应用较多,执行验证时势必消耗大量的计算资源,导致检测效率降低;第二,已有检测反序列化漏洞的方法及工具大多数针对某一类型应用框架,不具备通用性,无法适用于其他应用框架;第三,现有检测反序列化漏洞的方法大多数由人工使用已公布的调用链进行检测,无法进行主动学习和检测。
发明内容
针对现有技术中的问题,本发明实施例提供反序列化漏洞检测方法及装置,能够至少部分地解决现有技术中存在的问题。
第一方面,本发明提出一种反序列化漏洞检测方法,包括:
接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;
若判断获知所述应用标识和版本号对应的应用程序没有实施过检测,则对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;
将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;
运行所述检测脚本,获得检测结果;
将所述检测结果返回给所述漏洞检测终端。
第二方面,本发明还提供一种反序列化漏洞检测方法,包括:
接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;
基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;
将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
第三方面,本发明提供一种反序列化漏洞检测装置,包括:
第一接收单元,用于接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;
预处理单元,用于在判断获知所述应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;
上传单元,用于将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
第二接收单元,用于接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;
运行单元,用于运行所述检测脚本,获得检测结果;
返回单元,用于将所述检测结果返回给所述漏洞检测终端。
第四方面,本发明还提供一种反序列化漏洞检测装置,包括:
第三接收单元,用于接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;
获得单元,用于基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
生成单元,用于基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;
发送单元,用于将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
第五方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如下反序列化漏洞检测方法:
接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;
若判断获知所述应用标识和版本号对应的应用程序没有实施过检测,则对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;
将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;
运行所述检测脚本,获得检测结果;
将所述检测结果返回给所述漏洞检测终端;或者
接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;
基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;
将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
本发明实施例提供的反序列化漏洞检测方法及装置,接收漏洞检测终端发送的反序列化漏洞检测请求,在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理,获得程序数据对应的有向图数据,将程序数据对应的有向图数据上传给漏洞检测云端,以使得漏洞检测云端基于程序数据对应的有向图数据以及反序列化漏洞模型,获得程序数据对应的反序列化漏洞检测策略,接收漏洞检测云端下发的程序数据对应的反序列化漏洞检测策略,并基于程序数据对应的反序列化漏洞检测策略生成检测脚本,运行检测脚本获得检测结果,将检测结果返回给漏洞检测终端,反序列化漏洞检测策略的生成和检测脚本的运行分开进行,提高了反序列化漏洞的检测效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本发明一实施例提供的反序列化漏洞检测系统的结构示意图。
图2是本发明一实施例提供的反序列化漏洞检测方法的流程示意图。
图3是本发明另一实施例提供的反序列化漏洞检测方法的流程示意图。
图4是本发明一实施例提供的有向图数据的示意图。
图5是本发明再一实施例提供的反序列化漏洞检测方法的流程示意图。
图6是本发明又一实施例提供的反序列化漏洞检测方法的流程示意图。
图7是本发明一实施例提供的反序列化漏洞检测装置的结构示意图。
图8是本发明另一实施例提供的反序列化漏洞检测装置的结构示意图。
图9是本发明又一实施例提供的反序列化漏洞检测装置的结构示意图。
图10是本发明再一实施例提供的反序列化漏洞检测装置的结构示意图。
图11是本发明还一实施例提供的反序列化漏洞检测装置的结构示意图。
图12是本发明一实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
图1是本发明一实施例提供的反序列化漏洞检测系统的结构示意图,如图1所示,本发明实施例提供的反序列化漏洞检测系统包括漏洞检测终端1、漏洞检测边缘节点2和漏洞检测云端3,其中:
漏洞检测边缘节点2分别与漏洞检测终端1和漏洞检测云端3通信连接。其中,漏洞检测终端1和漏洞检测边缘节点2可以采用服务器实现,漏洞检测云端3可采用服务器集群实现。
漏洞检测终端1用于收集基于JAVA编程语言或采用该语言实现的框架来开发的应用程序的应用信息,所述应用信息可以包括应用标识、版本号和程序数据,应用标识和版本号与应用程序唯一对应,所述程序数据可以包括应用程序代码、开源组件代码以及调用库的代码。
漏洞检测边缘节点2用于执行本发明实施例提供的反序列化漏洞检测方法,实现对应用程序的反序列化漏洞检测。
漏洞检测云端3用于执行本发明实施例提供的反序列化漏洞检测方法,提供反序列化漏洞检测策略给漏洞检测边缘节点2进行应用程序的反序列化漏洞检测。
图2是本发明一实施例提供的反序列化漏洞检测方法的流程示意图,如图2所示,本发明实施例提供的反序列化漏洞检测方法,包括:
S201、接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;
具体地,漏洞检测终端可以向漏洞检测边缘节点发送反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据,所述漏洞检测边缘节点会接收所述反序列化漏洞检测请求。
S202、若判断获知所述应用标识和版本号对应的应用程序没有实施过检测,则对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;
具体地,所述漏洞检测边缘节点在接收到所述反序列化漏洞检测请求之后,会判断所述应用标识和版本号对应的应用程序有没有实施过检测,即判断所述应用标识和版本号对应的应用程序之前是否进行过反序列化漏洞检测。所述漏洞检测边缘节点根据所述应用标识和版本号在已检测列表中查询对应的应用程序,如果没有查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序没有实施过检测,如果查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序实施过检测。所述漏洞检测边缘节点在判断获知所述应用标识和版本号对应的应用程序没有实施过检测之后,会对所述程序数据进行预处理,获得所述程序数据对应的有向图数据。其中,所述已检测列表是预先获得的。
例如,所述漏洞检测边缘节点根据所述程序数据包括的各方法名以及节点类型确定规则,获得各方法名所属节点类型;所述节点类型包括源节点、目标节点和中间类节点;然后根据所述程序数据包括的各方法名所属节点类型以及调用关系,建立所述有向图数据,所述有向图数据包括一个源节点、一个目标节点和至少一个中间类节点。
S203、将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
具体地,所述漏洞检测边缘节点在获得所述程序数据对应的有向图数据之后,会将所述有向图数据上传给漏洞检测云端。所述漏洞检测云端接收到所述有向图数据之后,可以将所述有向图数据输入到反序列化漏洞模型中,输出所述程序数据对应的反序列化漏洞调用链,然后基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略。其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的。
例如,所述漏洞检测云端可以通过策略语言描述所述反序列化漏洞调用链,再通过XML解析工具对上述反序列化漏洞调用链进行解析生成XML格式的反序列化漏洞检测策略。其中,所述XML解析工具比如XML DOM,根据实际需要进行选择,本发明实施例不做限定。
S204、接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;
具体地,所述漏洞检测云端在生成所述程序数据对应的反序列化漏洞检测策略之后,会将所述程序数据对应的反序列化漏洞检测策略下发给所述漏洞检测边缘节点。所述漏洞检测边缘节点会接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,然后根据所述程序数据对应的反序列化漏洞检测策略生成测试脚本。
S205、运行所述检测脚本,获得检测结果;
具体地,所述漏洞检测边缘节点在生成所述检测脚本之后,会运行所述检测脚本,输出检测结果,通过所述检测结果可以得知所述应用标识和版本号对应的应用程序是否存在反序列化漏洞。
S206、将所述检测结果返回给所述漏洞检测终端。
具体地,所述漏洞检测边缘节点在获得所述检测结果之后,会将所述检测结果返回给所述漏洞检测终端,以便于相关人员浏览查看。
本发明实施例提供的反序列化漏洞检测方法,接收漏洞检测终端发送的反序列化漏洞检测请求,在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理,获得程序数据对应的有向图数据,将程序数据对应的有向图数据上传给漏洞检测云端,以使得漏洞检测云端基于程序数据对应的有向图数据以及反序列化漏洞模型,获得程序数据对应的反序列化漏洞检测策略,接收漏洞检测云端下发的程序数据对应的反序列化漏洞检测策略,并基于程序数据对应的反序列化漏洞检测策略生成检测脚本,运行检测脚本获得检测结果,将检测结果返回给漏洞检测终端,反序列化漏洞检测策略的生成和检测脚本的运行分开进行,提高了反序列化漏洞的检测效率。
在上述各实施例的基础上,进一步地,本发明实施例提供的反序列化漏洞检测方法还包括:
若判断获知所述应用标识和版本号对应的应用程序实施过检测,则获取所述应用标识和版本号对应的检测结果返回给所述漏洞检测终端。
具体地,所述漏洞检测边缘节点根据所述应用标识和版本号在已检测列表中查询对应的应用程序,如果查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序实施过检测,所述漏洞检测边缘节点可以根据所述应用标识和版本号查询获得对应的检测结果,并将所述应用标识和版本号对应的检测结果返回给所述漏洞检测终端,以便于相关人员浏览查看。其中,所述已检测列表中各个应用程序的检测结果预先存储,每个检测结果与应用程序的应用标识和版本号对应。
图3是本发明另一实施例提供的反序列化漏洞检测方法的流程示意图,如图3所示,在上述各实施例的基础上,进一步地,所述对所述程序数据进行预处理,获得所述程序数据对应的有向图数据包括:
S2021、根据所述程序数据包括的各方法名以及节点类型确定规则,获得各方法名所属节点类型;
具体地,所述漏洞检测边缘节点从所述程序数据中可以获得方法名(methodName),然后根据每个方法名以及节点类型确定规则,确定每个方法名所属节点类型。所述节点类型可以包括源节点、目标节点还是中间类节点,在确定所述方法名属于上述三类节点类型中的哪一类节点之后,可以获取所述方法名对应的类名和参数,与所述方法名和节点类型构成节点信息。其中,所述及节点类型确定规则是预设的。
例如,所述节点类型确定规则规定了属于源节点的方法名集合和属于目标节点的方法名集合,如果所述程序数据包括的方法名在属于源节点的方法名集合中能够查找到,那么所述方法名所属的节点属于源节点;如果所述程序数据包括的方法名在属于目标节点的方法名集合中能够查找到,那么所述方法名所属的节点属于目标节点;如果所述程序数据包括的方法名在属于源节点的方法名集合和属于目标节点的方法名集合中都没有查找到,那么所述方法名所属的节点属于中间类节点。
S2022、根据所述程序数据包括的各方法名所属节点类型以及调用关系,建立所述有向图数据。
具体地,所述程序数据的各方法名之间会存在调用关系,所述漏洞检测边缘节点根据各方法名之间的调用关系,建立各方法名所属节点之间的联系,将源节点作为起始节点,经过一系列中间类节点,结束于目标节点,从而建立所述有向图数据,所述有向图数据包括各方法名所属节点以及各节点之间的连接关系,各节点间的方向由包括调用方法名的节点指向被调用方法名的节点。
例如,图4是本发明一实施例提供的有向图数据的示意图,如图4所示,所述有向图数据包括一个源节点、一个目标节点和多个中间类节点,每个节点的节点信息可以表示如下:
Node=<nodeType,class,methodName,parameter>
其中,Node表示节点,nodeType表示节点类型,class表示类,methodName表示方法名,parameter表示参数。
图5是本发明再一实施例提供的反序列化漏洞检测方法的流程示意图,如图5所示,本发明实施例提供的反序列化漏洞检测方法包括:
S501、接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;
具体地,漏洞检测终端可以向漏洞检测边缘节点发送反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据,所述漏洞检测边缘节点会接收所述反序列化漏洞检测请求,然后判断所述应用标识和版本号对应的应用程序没有实施过检测。所述漏洞检测边缘节点根据所述应用标识和版本号在已检测列表中查询对应的应用程序,如果没有查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序没有实施过检测,对所述程序数据进行预处理,获得所述程序数据对应的有向图数据。所述漏洞检测边缘节点可以将所述有向图数据上传给漏洞检测云端,所述漏洞检测云端会接收所述有向图数据。
S502、基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的
具体地,所述漏洞检测云端接收到所述有向图数据之后,可以将所述有向图数据输入到反序列化漏洞模型中,经过所述反序列化漏洞模型的处理,输出所述程序数据对应的反序列化漏洞调用链,然后基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略。其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的
S503、基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;
具体地,所述漏洞检测云端在获得所述反序列化漏洞调用链之后,可以通过策略语言描述所述反序列化漏洞调用链,然后通过XML解析工具对上述反序列化漏洞调用链进行解析,生成反序列化漏洞检测策略,所述反序列化漏洞检测策略为XML格式的数据。
例如,某个反序列化漏洞检测策略如下所示:
反序列化漏洞调用链包括源节点、目标节点和中间类节点三种类型的节点。将反序列化漏洞调用链采用XML语言进行描述,主要由gadget节点构成,分别对应反序列化漏洞调用链中三种类型的节点以及属性,具体定义如下:
gadget=<源节点,中间类节点,目标节点>
其中,三种类型的节点的属性由Node节点信息构成,对每一个反序列化漏洞检测策略,源节点和目标节点只描述一次,中间类节点可由一个或多个节点组成,因此可以包括多个中间类节点的描述。反序列化漏洞调用链的结构与有向图数据类似,此处不进行赘述。
S504、将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
具体地,所述漏洞检测云端在生成所述程序数据对应的反序列化漏洞检测策略之后,会将所述程序数据对应的反序列化漏洞检测策略下发给所述漏洞检测边缘节点。所述漏洞检测边缘节点会接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,然后根据所述程序数据对应的反序列化漏洞检测策略生成测试脚本,接着运行所述检测脚本,输出检测结果,通过所述检测结果可以得知所述应用标识和版本号对应的应用程序是否存在反序列化漏洞。
本发明实施例提供的反序列化漏洞检测方法,接收漏洞检测边缘节点发送的程序数据对应的有向图数据,基于程序数据对应的有向图数据以及反序列化漏洞模型,获得程序数据对应的反序列化漏洞调用链,基于程序数据对应的反序列化漏洞调用链生成程序数据对应的反序列化漏洞检测策略,将程序数据对应的反序列化漏洞检测策略发送给漏洞检测边缘节点,以使得漏洞检测边缘节点基于程序数据对应的反序列化漏洞检测策略进行漏洞检测,能够在短时间内获得反序列化漏洞检测策略,提高了快速检测反序列化漏洞的能力。
图6是本发明又一实施例提供的反序列化漏洞检测方法的流程示意图,如图6所示,在上述各实施例的基础上,进一步地,基于反序列化漏洞训练数据训练所述反序列化漏洞模型的步骤包括:
S601、获取所述反序列化漏洞训练数据;
具体地,从已知的存在反序列化漏洞的应用程序中的每个应用程序,获得对应的程序数据,对上述程序数据进行预处理,获得每个程序数据对应的有向图数据,并标注每个程序数据的标签为存在漏洞,上述各个程序数据对应的有向图数据以及各自对应的标签构成反序列化漏洞训练数据。所述漏洞检测云端可以获取所述反序列化漏洞训练数据,所述反序列化漏洞训练数据包括各个已知的存在反序列化漏洞的应用程序对应的有向图数据以及各自对应的标签。其中,所述反序列化漏洞训练数据包括的有向图数据的数量根据实际需要进行设置,本发明实施例不做限定。
S602、基于所述反序列化漏洞训练数据以及深度学习网络模型,训练获得反序列化漏洞模型。
具体地,所述漏洞检测云端在获得所述反序列化漏洞训练数据之后,可以将所述反序列化漏洞训练数据划分为训练集和验证集,通过所述训练集对深度学习网络模型进行训练,获得待确定的反序列化漏洞模型。然后通过验证集对所述待确定的反序列化漏洞模型进行验证,即将所述验证集中的每个有向图数据分别输入到所述待确定的反序列化漏洞模型中,输出每个有向图数据对应的反序列化漏洞调用链,基于每个有向图数据对应的反序列化漏洞调用链生成每个有向图数据对应的反序列化漏洞检测策略,并基于每个有向图数据对应的反序列化漏洞检测策略生成对应的检测脚本,运行每个有向图数据对应的检测脚本,获得每个有向图数据的检测结果,统计所述验证集中各个有向图数据的检测结果与各个有向图数据对应的标签匹配的数量P,所述验证集中包括的有向图数据的数量为Q,计算所述待确定的反序列化漏洞模型的准确率为P/Q。如果所述待确定的反序列化漏洞模型的准确率大于阈值,那么将所述待确定的反序列化漏洞模型作为所述反序列化漏洞模型。否则,重新进行训练,直到获得满足准确率要求的反序列化漏洞模型。其中,所述深度学习网络模型包括但不限于AlexNet、VGGNet和GoogleNet等,根据实际需要进行选择,本发明实施例不做限定。所述阈值根据实际经验进行设置,本发明实施例不做限定。
本发明实施例提供的反序列化漏洞检测方法,通过云边协同、深度学习、XML可扩展标记语言等多项关键技术的综合应用,可以实现高效检测JAVA应用存在的反序列化漏洞,不仅能够节省检测时占用大量的计算资源,还能够自动学习反序列化漏洞特征,生成反序列化漏洞检测脚本执行检测,提高检测效率。具体效果如下:
(1)基于云边协同技术领灵活分配计算资源实施检测,由漏洞检测边缘节点对收集的应用信息进行预处理后传回云端,漏洞检测云端通过深度学习网络模型训练以及上传的数据生成并下发反序列化漏洞检测策略到漏洞检测边缘节点,漏洞检测边缘节点基于反序列化漏洞检测策略获得检测结果并向漏洞检测终端返回检测结果。对于已经实施过检测的应用程序,则无需与漏洞检测云端进行交互,可以直接在漏洞检测边缘节点获得检测结果,极大地提高了反序列化漏洞的检测效率。
(2)利用深度学习具备的自动特征提取的优点,使用预先设置的特征标签处理格式对JAVA反序列化漏洞调用链特征自动提取学习,短时间内完成反序列化漏洞调用链输出,既满足了主动学习的需求,又提高了快速检测反序列化漏洞的能力。
(3)对JAVA反序列化漏洞的调用链进行抽象,基于有向图数据结构描述已知调用链,通过XML检测策略描述语言描述各节点调用信息,可自动化生成具体的检测脚本实施测试,保证了检测过程的通用性。
图7是本发明一实施例提供的反序列化漏洞检测装置的结构示意图,如图7所示,本发明实施例提供的反序列化漏洞检测装置包括第一接收单元701、预处理单元702、上传单元703、第二接收单元704、运行单元705和返回单元706,其中:
第一接收单元701用于接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;预处理单元702用于在判断获知所述应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;上传单元703用于将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;第二接收单元704用于接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;运行单元705用于运行所述检测脚本,获得检测结果;返回单元706用于将所述检测结果返回给所述漏洞检测终端。
具体地,漏洞检测终端可以向第一接收单元701发送反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据,第一接收单元701会接收所述反序列化漏洞检测请求。
在接收到所述反序列化漏洞检测请求之后,预处理单元702会判断所述应用标识和版本号对应的应用程序有没有实施过检测,即判断所述应用标识和版本号对应的应用程序之前是否进行过反序列化漏洞检测。预处理单元702根据所述应用标识和版本号在已检测列表中查询对应的应用程序,如果没有查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序没有实施过检测,如果查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序实施过检测。预处理单元702在判断获知所述应用标识和版本号对应的应用程序没有实施过检测之后,会对所述程序数据进行预处理,获得所述程序数据对应的有向图数据。其中,所述已检测列表是预先获得的。
在获得所述程序数据对应的有向图数据之后,上传单元703会将所述有向图数据上传给漏洞检测云端。所述漏洞检测云端接收到所述有向图数据之后,可以将所述有向图数据输入到反序列化漏洞模型中,输出所述程序数据对应的反序列化漏洞调用链,然后基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略。其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的。
所述漏洞检测云端在生成所述程序数据对应的反序列化漏洞检测策略之后,会将所述程序数据对应的反序列化漏洞检测策略下发给第二接收单元704。第二接收单元704会接收所述漏洞检测云端下发的程序数据对应的反序列化漏洞检测策略,然后根据所述程序数据对应的反序列化漏洞检测策略生成测试脚本。
在生成所述检测脚本之后,运行单元705会运行所述检测脚本,输出检测结果,通过所述检测结果可以得知所述应用标识和版本号对应的应用程序是否存在反序列化漏洞。
在获得所述检测结果之后,返回单元706会将所述检测结果返回给所述漏洞检测终端,以便于相关人员浏览查看。
本发明实施例提供的反序列化漏洞检测装置,接收漏洞检测终端发送的反序列化漏洞检测请求,在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理,获得程序数据对应的有向图数据,将程序数据对应的有向图数据上传给漏洞检测云端,以使得漏洞检测云端基于程序数据对应的有向图数据以及反序列化漏洞模型,获得程序数据对应的反序列化漏洞检测策略,接收漏洞检测云端下发的程序数据对应的反序列化漏洞检测策略,并基于程序数据对应的反序列化漏洞检测策略生成检测脚本,运行检测脚本获得检测结果,将检测结果返回给漏洞检测终端,反序列化漏洞检测策略的生成和检测脚本的运行分开进行,提高了反序列化漏洞的检测效率。
图8是本发明另一实施例提供的反序列化漏洞检测装置的结构示意图,如图8所示,在上述各实施例的基础上,进一步地,本发明实施例提供的反序列化漏洞检测装置还包括判断单元707,其中:
判断单元707用于在判断获知所述应用标识和版本号对应的应用程序实施过检测之后,获取所述应用标识和版本号对应的检测结果返回给所述漏洞检测终端。
具体地,判断单元707根据所述应用标识和版本号在已检测列表中查询对应的应用程序,如果查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序实施过检测,判断单元707可以根据所述应用标识和版本号查询获得对应的检测结果,并将所述应用标识和版本号对应的检测结果返回给所述漏洞检测终端,以便于相关人员浏览查看。其中,所述已检测列表中各个应用程序的检测结果预先存储,每个检测结果与应用程序的应用标识和版本号对应。
图9是本发明又一实施例提供的反序列化漏洞检测装置的结构示意图,如图9所示,在上述各实施例的基础上,进一步地,预处理单元702包括获得子单元7021和建立子单元7022,其中:
获得子单元7021用于根据所述程序数据包括的各方法名以及节点类型确定规则,获得各方法名所属节点类型;建立子单元7022用于根据所述程序数据包括的各方法名所属节点类型以及调用关系,建立所述有向图数据。
具体地,获得子单元7021从所述程序数据中可以获得方法名(methodName),然后根据每个方法名以及节点类型确定规则,确定每个方法名所属节点类型。所述节点类型可以包括源节点、目标节点还是中间类节点,在确定所述方法名属于上述三类节点类型中的哪一类节点之后,可以获取所述方法名对应的类名和参数,与所述方法名和节点类型构成节点信息。其中,所述及节点类型确定规则是预设的。
所述程序数据的各方法名之间会存在调用关系,建立子单元7022根据各方法名之间的调用关系,建立各方法名所属节点之间的联系,将源节点作为起始节点,经过一系列中间类节点,结束于目标节点,从而建立所述有向图数据,所述有向图数据包括各方法名所属节点以及各节点之间的连接关系,各节点间的方向由包括调用方法名的节点指向被调用方法名的节点。
图10是本发明再一实施例提供的反序列化漏洞检测装置的结构示意图,如图10所示,本发明实施例提供的反序列化漏洞检测装置包括第三接收单元1001、获得单元1002、生成单元1003和发送单元1004,其中:
第三接收单元1001用于接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;获得单元1002用于基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;生成单元1003用于基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;发送单元1004用于将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
具体地,漏洞检测终端可以向漏洞检测边缘节点发送反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据,所述漏洞检测边缘节点会接收所述反序列化漏洞检测请求,然后判断所述应用标识和版本号对应的应用程序没有实施过检测。所述漏洞检测边缘节点根据所述应用标识和版本号在已检测列表中查询对应的应用程序,如果没有查询到对应的应用程序,说明所述应用标识和版本号对应的应用程序没有实施过检测,对所述程序数据进行预处理,获得所述程序数据对应的有向图数据。所述漏洞检测边缘节点可以将所述有向图数据上传给第三接收单元1001,第三接收单元1001会接收所述有向图数据。
在接收到所述有向图数据之后,获得单元1002可以将所述有向图数据输入到反序列化漏洞模型中,经过所述反序列化漏洞模型的处理,输出所述程序数据对应的反序列化漏洞调用链,然后基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略。其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的。
生成单元1003在获得所述反序列化漏洞调用链之后,可以通过策略语言描述所述反序列化漏洞调用链,然后通过XML解析工具对上述反序列化漏洞调用链进行解析,生成反序列化漏洞检测策略,所述反序列化漏洞检测策略为XML格式的数据。
在生成所述程序数据对应的反序列化漏洞检测策略之后,发送单元1004会将所述程序数据对应的反序列化漏洞检测策略下发给所述漏洞检测边缘节点。所述漏洞检测边缘节点会接收所述漏洞检测云端下发的程序数据对应的反序列化漏洞检测策略,然后根据所述程序数据对应的反序列化漏洞检测策略生成测试脚本,接着运行所述检测脚本,输出检测结果,通过所述检测结果可以得知所述应用标识和版本号对应的应用程序是否存在反序列化漏洞。
本发明实施例提供的反序列化漏洞检测装置,接收漏洞检测边缘节点发送的程序数据对应的有向图数据,基于程序数据对应的有向图数据以及反序列化漏洞模型,获得程序数据对应的反序列化漏洞调用链,基于程序数据对应的反序列化漏洞调用链生成程序数据对应的反序列化漏洞检测策略,将程序数据对应的反序列化漏洞检测策略发送给漏洞检测边缘节点,以使得漏洞检测边缘节点基于程序数据对应的反序列化漏洞检测策略进行漏洞检测,能够在短时间内获得反序列化漏洞检测策略,提高了快速检测反序列化漏洞的能力。
图11是本发明还一实施例提供的反序列化漏洞检测装置的结构示意图,如图11所示,在上述各实施例的基础上,进一步地,本发明实施例提供的反序列化漏洞检测装置还包括获取单元1005和训练单元1006,其中:
获取单元1005用于获取所述反序列化漏洞训练数据;训练单元1006用于基于所述反序列化漏洞训练数据以及深度学习网络模型,训练获得反序列化漏洞模型。
具体地,从已知的存在反序列化漏洞的应用程序中的每个应用程序,获得对应的程序数据,对上述程序数据进行预处理,获得每个程序数据对应的有向图数据,并标注每个程序数据的标签为存在漏洞,上述各个程序数据对应的有向图数据以及各自对应的标签构成反序列化漏洞训练数据。获取单元1005可以获取所述反序列化漏洞训练数据,所述反序列化漏洞训练数据包括各个已知的存在反序列化漏洞的应用程序对应的有向图数据以及各自对应的标签。其中,所述反序列化漏洞训练数据包括的有向图数据的数量根据实际需要进行设置,本发明实施例不做限定。
在获得所述反序列化漏洞训练数据之后,训练单元1006可以将所述反序列化漏洞训练数据划分为训练集和验证集,通过所述训练集对深度学习网络模型进行训练,获得待确定的反序列化漏洞模型。然后通过验证集对所述待确定的反序列化漏洞模型进行验证,即将所述验证集中的每个有向图数据分别输入到所述待确定的反序列化漏洞模型中,输出每个有向图数据对应的反序列化漏洞调用链,基于每个有向图数据对应的反序列化漏洞调用链生成每个有向图数据对应的反序列化漏洞检测策略,并基于每个有向图数据对应的反序列化漏洞检测策略生成对应的检测脚本,运行每个有向图数据对应的检测脚本,获得每个有向图数据的检测结果,统计所述验证集中各个有向图数据的检测结果与各个有向图数据对应的标签匹配的数量P,所述验证集中包括的有向图数据的数量为Q,计算所述待确定的反序列化漏洞模型的准确率为P/Q。如果所述待确定的反序列化漏洞模型的准确率大于阈值,那么将所述待确定的反序列化漏洞模型作为所述反序列化漏洞模型。否则,重新进行训练,直到获得满足准确率要求的反序列化漏洞模型。其中,所述深度学习网络模型包括但不限于AlexNet、VGGNet和GoogleNet等,根据实际需要进行选择,本发明实施例不做限定。所述阈值根据实际经验进行设置,本发明实施例不做限定。
本发明实施例提供的装置的实施例具体可以用于执行上述相应方法实施例的处理流程,其功能在此不再赘述,可以参照上述相应方法实施例的详细描述。
图12是本发明一实施例提供的电子设备的实体结构示意图,如图12所示,该电子设备可以包括:处理器(processor)1201、通信接口(Communications Interface)1202、存储器(memory)1203和通信总线1204,其中,处理器1201,通信接口1202,存储器1203通过通信总线1204完成相互间的通信。处理器1201可以调用存储器1203中的逻辑指令,以执行如下方法:接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;若判断获知所述应用标识和版本号对应的应用程序没有实施过检测,则对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;运行所述检测脚本,获得检测结果;将所述检测结果返回给所述漏洞检测终端;或者
接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
此外,上述的存储器1203中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;若判断获知所述应用标识和版本号对应的应用程序没有实施过检测,则对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;运行所述检测脚本,获得检测结果;将所述检测结果返回给所述漏洞检测终端;或者
接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
本实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;若判断获知所述应用标识和版本号对应的应用程序没有实施过检测,则对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;运行所述检测脚本,获得检测结果;将所述检测结果返回给所述漏洞检测终端;或者
接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种反序列化漏洞检测方法,其特征在于,包括:
接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;
若判断获知所述应用标识和版本号对应的应用程序没有实施过检测,则对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;
将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;
运行所述检测脚本,获得检测结果;
将所述检测结果返回给所述漏洞检测终端。
2.根据权利要求1所述的方法,其特征在于,还包括:
若判断获知所述应用标识和版本号对应的应用程序实施过检测,则获取所述应用标识和版本号对应的检测结果返回给所述漏洞检测终端。
3.根据权利要求1或2所述的方法,其特征在于,所述对所述程序数据进行预处理,获得所述程序数据对应的有向图数据包括:
根据所述程序数据包括的各方法名以及节点类型确定规则,获得各方法名所属节点类型;根据所述程序数据包括的各方法名所属节点类型以及调用关系,建立所述有向图数据。
4.一种反序列化漏洞检测方法,其特征在于,包括:
接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述漏洞检测边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;
基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;
将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
5.根据权利要求4所述的方法,其特征在于,基于反序列化漏洞训练数据训练所述反序列化漏洞模型的步骤包括:
获取所述反序列化漏洞训练数据;
基于所述反序列化漏洞训练数据以及深度学习网络模型,训练获得反序列化漏洞模型。
6.一种反序列化漏洞检测装置,其特征在于,包括:
第一接收单元,用于接收漏洞检测终端发送的反序列化漏洞检测请求,所述反序列化漏洞检测请求携带应用标识、版本号和程序数据;
预处理单元,用于在判断获知所述应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理,获得所述程序数据对应的有向图数据;
上传单元,用于将所述程序数据对应的有向图数据上传给漏洞检测云端,以使得所述漏洞检测云端基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞检测策略;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
第二接收单元,用于接收所述漏洞检测云端下发的所述程序数据对应的反序列化漏洞检测策略,并基于所述程序数据对应的反序列化漏洞检测策略生成检测脚本;
运行单元,用于运行所述检测脚本,获得检测结果;
返回单元,用于将所述检测结果返回给所述漏洞检测终端。
7.根据权利要求6所述的装置,其特征在于,还包括:
判断单元,用于在判断获知所述应用标识和版本号对应的应用程序实施过检测之后,获取所述应用标识和版本号对应的检测结果返回给所述漏洞检测终端。
8.根据权利要求6或7所述的装置,其特征在于,所述预处理单元包括:
获得子单元,用于根据所述程序数据包括的各方法名以及节点类型确定规则,获得各方法名所属节点类型;
建立子单元,用于根据所述程序数据包括的各方法名所属节点类型以及调用关系,建立所述有向图数据。
9.一种反序列化漏洞检测装置,其特征在于,包括:
第三接收单元,用于接收漏洞检测边缘节点发送的程序数据对应的有向图数据;其中,所述程序数据对应的有向图数据是所述边缘节点在判断获知应用标识和版本号对应的应用程序没有实施过检测之后,对所述程序数据进行预处理获得的,所述应用标识、所述版本号和所述程序数据是漏洞检测终端发送给所述漏洞检测边缘节点的反序列化漏洞检测请求中携带的;
获得单元,用于基于所述程序数据对应的有向图数据以及反序列化漏洞模型,获得所述程序数据对应的反序列化漏洞调用链;其中,所述反序列化漏洞模型是基于反序列化漏洞训练数据训练获得的;
生成单元,用于基于所述程序数据对应的反序列化漏洞调用链生成所述程序数据对应的反序列化漏洞检测策略;
发送单元,用于将所述程序数据对应的反序列化漏洞检测策略发送给所述漏洞检测边缘节点,以使得所述漏洞检测边缘节点基于所述程序数据对应的反序列化漏洞检测策略进行漏洞检测。
10.根据权利要求9所述的装置,其特征在于,还包括:
获取单元,用于获取所述反序列化漏洞训练数据;
训练单元,用于基于所述反序列化漏洞训练数据以及深度学习网络模型,训练获得反序列化漏洞模型。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至3任一项所述的方法,或实现权利要求4或5所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3任一项所述的方法,或实现权利要求4或5所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010799235.7A CN111931184B (zh) | 2020-08-11 | 2020-08-11 | 反序列化漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010799235.7A CN111931184B (zh) | 2020-08-11 | 2020-08-11 | 反序列化漏洞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111931184A true CN111931184A (zh) | 2020-11-13 |
CN111931184B CN111931184B (zh) | 2023-06-30 |
Family
ID=73308176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010799235.7A Active CN111931184B (zh) | 2020-08-11 | 2020-08-11 | 反序列化漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111931184B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117209A (zh) * | 2018-07-23 | 2019-01-01 | 广州多益网络股份有限公司 | 序列化和反序列化方法及装置 |
CN109829312A (zh) * | 2019-01-29 | 2019-05-31 | 北京启明星辰信息安全技术有限公司 | 基于调用链的java漏洞检测方法及检测系统 |
CN110276202A (zh) * | 2019-06-24 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种反序列化漏洞的检测方法及装置 |
CN110968872A (zh) * | 2019-11-20 | 2020-04-07 | 北京国舜科技股份有限公司 | 文件漏洞的检测处理方法、装置、电子设备及存储介质 |
-
2020
- 2020-08-11 CN CN202010799235.7A patent/CN111931184B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109117209A (zh) * | 2018-07-23 | 2019-01-01 | 广州多益网络股份有限公司 | 序列化和反序列化方法及装置 |
CN109829312A (zh) * | 2019-01-29 | 2019-05-31 | 北京启明星辰信息安全技术有限公司 | 基于调用链的java漏洞检测方法及检测系统 |
CN110276202A (zh) * | 2019-06-24 | 2019-09-24 | 深圳前海微众银行股份有限公司 | 一种反序列化漏洞的检测方法及装置 |
CN110968872A (zh) * | 2019-11-20 | 2020-04-07 | 北京国舜科技股份有限公司 | 文件漏洞的检测处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111931184B (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106919509B (zh) | 一种客户端生成方法、装置及电子设备 | |
US11150896B2 (en) | Automated generation of service definitions for message queue application clients | |
US20210064453A1 (en) | Automated application programming interface (api) specification construction | |
CN108256870B (zh) | 基于拓扑结构生成描述信息及更新、数据处理方法和装置 | |
EP2933726B1 (en) | Apparatus, system and method for application log data processing | |
CN107168844B (zh) | 一种性能监控的方法及装置 | |
CN109698798B (zh) | 一种应用的识别方法、装置、服务器和存储介质 | |
CN112256318B (zh) | 一种用于依赖产品的构建方法及设备 | |
CN113157315A (zh) | 一种软件不同版本的差异信息识别方法、装置、设备及介质 | |
CN109460365B (zh) | 一种系统性能测试方法、装置、设备及存储介质 | |
CN116523457A (zh) | 基于业务流程的工作流处理方法、装置、设备及存储介质 | |
CN106528066B (zh) | 一种业务流程运行方法及装置 | |
CN116346961B (zh) | 金融报文处理方法、装置、电子设备及存储介质 | |
CN111506305B (zh) | 工具包生成方法、装置、计算机设备及可读存储介质 | |
CN111193631B (zh) | 信息处理方法、系统和计算机可读存储介质 | |
CN116776030A (zh) | 灰度发布方法、装置、计算机设备、存储介质 | |
CN111931184B (zh) | 反序列化漏洞检测方法及装置 | |
CN116346660A (zh) | 基于依赖替换服务的数据处理方法、装置、设备及介质 | |
CN113536762A (zh) | Json文本的比对方法及装置 | |
CN112766486A (zh) | 神经网络结构的搜索方法、终端、服务器及可读存储介质 | |
CN112436969A (zh) | 一种物联网设备管理方法、系统、设备及介质 | |
CN112667491A (zh) | 虚拟机的功能测试方法及装置 | |
CN112612514B (zh) | 程序开发方法和装置、存储介质及电子装置 | |
CN114205276B (zh) | 用于产品管理系统的性能测试方法及装置、电子设备 | |
WO2024065778A1 (en) | Method, apparatus, device, and medium for building knowledge graph and executing workflow |
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 |