漏洞检测分析方法、装置及基于此的漏洞验证方法、系统与流程

文档序号:25992013发布日期:2021-07-23 21:04阅读:136来源:国知局
漏洞检测分析方法、装置及基于此的漏洞验证方法、系统与流程

本申请涉及计算机网络信息安全技术领域,具体涉及一种漏洞检测分析方法、装置及基于此的漏洞验证方法、系统。



背景技术:

在计算机网络信息安全领域,漏洞(vulnerability),是指能够被威胁行为体(threatactor,例如攻击者,attacker)利用以越过计算机系统设定的权限(即,执行未经授权的操作)的弱点。攻击者需要通过至少一种能够连接到系统漏洞的适当工具或技巧利用所述漏洞。在此框架中,漏洞即攻击面(attacksurface)上可以被未授权用户(攻击者)输入或提取数据而受到攻击的点位(对于攻击向量而言)。这里的攻击面,即软件系统的攻击面,是指软件环境的攻击面是未经授权的用户(攻击者)可以尝试向环境中输入数据或从环境中提取数据的不同点位(对于攻击向量而言)的总和,而保持攻击面尽可能小是基本的安全措施。攻击者能够使用的攻击向量有很多,其中常见的攻击向量就有:勒索软件、网络钓鱼、零日漏洞、蛮力攻击、分布式拒绝服务(ddos)等等。具体来说,攻击向量的示例包括:用户输入字段,协议,接口和服务等等。

在涉及计算机网络信息安全的大量过往案例中,攻击者利用软件系统的漏洞都对有价值资产(assets)造成了重大影响。而安全风险,即是指利用漏洞可能造成重大影响的可能性。漏洞检测分析,即是要在攻击者发现和利用软件中的漏洞造成安全危害前,发现其中的漏洞,并修复它,以降低安全风险。

随着安全组织和个人对漏洞研究的深入和相关计算机技术的发展,陆续发展出了多种的漏洞检测分析技术,独立地或结合地使用,适用于相同的或不同的检测分析对象、应用场景等的漏洞检测分析需要。目前的一些漏洞检测分析方法,针对不同检测分析对象、应用场景等,各具优劣。其中,在以基于b/s的web应用程序为对象的漏洞检测分析需求场景中,现有的静态分析技术(staticanalysis)、动态分析技术(runtimeanalysis)、黑盒测试分析技术等都存在误报问题;其中的一些还存在着无法准确定位漏洞位置等的其他问题,尤其是对处于开发阶段的web应用程序,黑盒测试分析技术或类似的技术更是无法适用于其的漏洞检测分析。



技术实现要素:

有鉴于此,本申请旨在提供一种漏洞检测分析方法、装置及基于此的漏洞验证方法、系统,以解决上述技术问题。

根据本申请公开的示例实施例,提供一种漏洞检测分析方案,以及基于此的对目标程序中任一目标类型漏洞的漏洞验证方案。

在本公开的第一方面中,提供一种漏洞检测分析方法。该方法包括:对于任一类型的漏洞,获取或接收所述类型漏洞的攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据;根据所述的攻击测试报文的有效报文内容和响应该攻击测试的有效实时响应数据,分析在受到所述攻击测试报文攻击时目标程序内部运行是否发生相应的异常而据此判断目标程序中是否潜藏所述类型的漏洞;其中,所述类型漏洞的攻击测试报文的有效报文内容,应包括能够利用所述类型漏洞进行攻击的有效载荷参数内容;目标程序响应该攻击测试的有效实时响应数据,包括目标程序响应和处理所述攻击测试报文过程中的运行上下文;所述的运行上下文,主要包括:该攻击测试的数据流执行到关键函数时获取的有效运行时数据,及其对应的关键函数信息;所述关键函数信息,是指获取所述有效运行时数据时对应的关键函数的信息;在上述的关键函数信息中,主要包括:例如关键函数的函数名称等的识别所述关键函数的信息。

在本公开的第二方面中,提供一种用于漏洞检测分析的装置。该装置包括:获取模块或接受模块,以及分析模块;获取模块/接受模块,被配置为获取/接收对应任一的确定类型漏洞的攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据;分析模块,被配置为根据获取模块/接受模块的所述攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据,分析在受到所述攻击测试报文攻击时目标程序内部运行是否发生相应的异常而据此判断目标程序中是否潜藏所述确定类型漏洞;其中,对应确定类型漏洞的攻击测试报文的有效报文内容,应包括能够利用该确定类型漏洞进行攻击的有效载荷参数内容;目标程序响应该攻击测试的有效实时响应数据,包括目标程序响应和处理所述攻击测试报文过程中的运行上下文;所述的运行上下文,主要包括:该攻击测试的数据流执行到关键函数时获取的有效运行时数据,及其对应的关键函数信息;所述关键函数信息,是指获取所述有效运行时数据时对应的关键函数的信息;在上述的关键函数信息中,主要包括了例如关键函数的函数名称等的识别所述关键函数的信息。

在本公开的第三方面中,提供一种用于漏洞检测分析的电子设备。该电子设备包括:至少一个处理器,和至少一个处理器耦合的存储器,以及存储在存储器中的计算机程序;其中的处理器执行所述计算机程序,对应地能够实现第一方面述及的漏洞检测分析方法。

在本公开的第四方面中,提供一种漏洞验证方法。该方法,基于第一方面述及的漏洞检测分析方法,包括:对目标程序发起攻击测试,向目标程序发送目标类型漏洞的攻击测试报文;以及获取所述攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据,执行第一方面述及的漏洞检测分析方法的相关操作,确定目标程序中是否潜藏了目标类型漏洞。

在本公开的第五方面中,提供一种漏洞验证系统。该系统包括:测试端单元和分析单元;测试端单元,用于对目标程序发起攻击测试;测试端单元,包括至少一个的攻击测试节点;攻击测试节点,能够执行向目标程序发送目标类型漏洞的攻击测试报文的操作;分析单元,用于对目标程序的目标类型漏洞验证分析;分析单元,包括至少一个的分析节点;分析节点能够执行第一方面述及的漏洞检测分析方法的相关操作,确定目标程序中是否潜藏了目标类型漏洞。

在本公开的第六方面中,提供了一种计算机可读存储介质。该介质上存储有用于漏洞检测分析相关的计算机指令,该计算机指令在被计算机处理器执行时能够实现第一、第四方面述及的方法中的部分方法或全部方法。

第七方面中,提供了一种计算机程序产品。该程序产品包括计算机程序,该计算机程序在被计算机处理器执行时能够实现第一、第四方面述及的方法中的部分方法或全部方法。

应当理解,发明内容部分中所描述的内容并非旨在限定本公开的实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。

附图说明

结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:

图1示出了根据本公开的一些实施例的漏洞检测分析方法的流程示意图;

图2示出了上述实施例中的一些的分析过程中的判断目标程序中关键函数是否异常执行的过程的示意图;

图3示出了上述实施例中的另一些的分析过程中的判断目标程序中关键函数是否异常执行的过程的示意图;

图4示出了根据本公开的一些实施例的用于漏洞检测分析的装置的框图;

图5示出了根据本公开的一些实施例的漏洞验证系统的架构示意图;

图6示出了根据本公开的一些实施例的用于漏洞检测分析的电子设备的框图。

具体实施方式

下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。

在本公开的实施例的描述中术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。

在本公开的实施例的描述中技术术语“目标程序”,是指被作为漏洞检测分析对象的的计算机应用程序。对于计算机程序来说,安全漏洞是不可避免的。程序是由人来编程的,兼顾代码质量和开发效率,是不可能存在开发阶段一蹴而就、完全符合编程规范、没有漏洞和缺陷的大型应用程序的;尤其是那些满足诸多功能需求、有着复杂业务逻辑的基于b/s的web应用程序,是不可避免地存在着漏洞和缺陷的。在数字时代的今天,在软件,特别是各种应用程序(例如各种衣食住行相关的手机app等),越来越定义我们生活的每一部分的今天,考虑到大多数的安全漏洞存在于应用程序中,为了减少被非法利用造成损害,应用程序在上线部署前,一般要求其通过应用安全测试。这里的“目标程序”,主要是指被作为漏洞检测分析对象的web应用程序。

在本公开的实施例的描述中技术术语“目标类型漏洞”,是指在漏洞验证过程中,假设“目标程序”中存在该类型的漏洞,并拟通过相应的攻击测试验证目标程序中是否潜藏了该类型的漏洞的一种类型的漏洞。

在本公开的实施例的描述中技术术语“关键函数”,是指“目标程序”中那些在潜藏的漏洞被触发时异常执行的函数。对于目标程序中可能潜藏的各种不同类型的漏洞,对应其中的每一类型的漏洞,在目标程序中均包括至少一个与之对应的关键函数。

在本公开的实施例的描述中技术术语“攻击测试报文”,是指“攻击测试请求”的报文;而“攻击测试请求”是指能够触发目标程序中的潜藏的对应类型漏洞的攻击测试请求。“目标程序”中可能潜藏多种不同类型的漏洞,为验证“目标程序”中是否潜藏了这些不同类型的漏洞,其中一种方案的基本构思是,分别为这些不同类型漏洞设计对应的“攻击测试报文”,攻击服务端目标程序中的相应类型漏洞。不同的“攻击测试报文”中,携带有不同的“有效载荷”。

在本公开的实施例的描述中技术术语“有效载荷”,即“payload”,是指数据传输中被承载运输的实际信息,通常也称作实际数据或数据体。在传输数据时为使数据传输更可靠,通常需要在每一批数据套加一些辅助信息而每一批数据与其辅助“外套”,就构成了传输通道的基本传输单元,即数据帧或数据包;这些“外套”通常被用于辅助数据传输,也称为开销数据;而其中的原始数据通常被视为有效载荷。“有效载荷”是攻击向量具体实现的一种,示例实现攻击目的,成功利用相应类型漏洞的关键。在漏洞验证的攻击测试过程中,“有效载荷”是用于验证“目标程序”是否潜藏相应类型漏洞的有效测试数据。

在本公开的实施例的描述中技术术语“插桩”,又称“程序插桩”,是指在保证被测程序原有逻辑完整性的基础上在程序中插入“探针”,通过“探针”的执行获取程序的运行特征数据(即运行时数据),并通过对上述特征数据的分析,获得程序的控制流和数据流,进而得到逻辑覆盖等动态信息,从而实现测试目的的方法。其中的“探针”,本质上是进行信息采集的代码片段,可以是赋值语句或采集覆盖信息的函数调用;根据插桩点、捕获数据需求等的不同,可以设计具有相应捕获功能的“探针”,获取所需的数据。在同一个被测程序中,根据不同的测试需要,可以包括仅插桩一个“探针”,也可以在其中多个不同的插桩点分别插入“探针”。

随着数字时代的到来,计算机网络信息安全已经成为人们日益关注的问题。随着网络软件应用爆炸式的增加,其中漏洞数量也是上升趋势明显。虽然随着研究深入,人们已经掌握了多种漏洞检测分析技术,但这些漏洞检测分析技术在面对不同漏洞检测分析需要时却都有着各种的劣势。尤其是随着基于b/s的web应用技术被广泛用于众多政企实体的业务数字化转型发展的过程中,这类软件应用程序的体量大规模增长,随之而来的漏洞及漏洞带来的安全风险也显著增加;为了及时发现这些软件应用的漏洞和缺陷,确保其在交付部署前后的安全性,利用相关安全测试技术,特别是各种有效的漏洞检测分析技术,及时发现这些应用程序中的薄弱点和漏洞,特别是其中那些高危漏洞和致命缺陷,成为了软件产品发布、发版前重中之重的事项。然而,现有的一些漏洞检测分析技术,均或多或少存在这样或那样的问题,其中最为普遍的问题,即误报问题。其中,尤以静态分析最为明显,虽然其能够比较全面覆盖目标程序的代码,获得较为全面的漏洞检测分析结果,但受限于特征库,往往检测结果误报率极高,且静态分析重点在于分析代码的“特征”,并不涉及程序的功能。而对应地,动态分析则是一种动态的检测技术,一般是在调试器中运行目标程序,通过观察执行过程中程序的运行状态、内存使用状况以及寄存器的值等以发现潜在问题,寻找漏洞;然而,大多数调试器工具通常只是适用于应用程序在单侧运行时局部功能的调试和漏洞检测,对跨端执行的web应用程序在宏观层面的多层执行情况,是模拟不到位的,对其的漏洞检测分析,相对而言也是无能为力的。黑盒测试虽然是在一定程度降低了误报率,但其无法准确定位漏洞位置,且更是无法适用于web应用程序开发阶段的漏洞检测分析,实践安全左移。

针对上述的漏洞检测分析技术存在的各种问题,本申请旨在提供一种漏洞检测分析方法、装置及基于此的漏洞验证方法、系统,以解决检测精确度问题,避免误报,以及解决漏洞定位和适用等其他问题,更为精细地定位漏洞位置和提供更为广泛的适用。

根据本申请公开的实施例,提出一种漏洞检测分析方案,以及基于此的对目标程序中任一目标类型漏洞的漏洞验证方案。在上述的相关方案中,包括:通过对攻击测试报文有效报文内容和响应该攻击测试的有效实时响应数据的分析,推知目标程序在受到所述攻击测试报文攻击时的内部运行情况,进而确定目标程序中是否潜藏对应所述攻击测试的类型漏洞的漏洞检测分析方案,以及基于此,通过发起对应目标类型漏洞的攻击测试,验证目标程序中是否潜藏了目标类型漏洞的漏洞验证方案。

本公开的方案,较之现有技术,能够大大降低漏洞检测分析结果的误报率,同时还能够解决现有技术中的一些漏洞检测分析技术无法准确定位漏洞位置以及适用场景局限的问题。此外,其中的漏洞验证方案,更是使对那些高危漏洞和致命缺陷进行高优先级和重点的漏洞验证分析成为可能。

以下将参照附图来具体描述本公开的实施例。根据本公开的一些实施例,提出了一种漏洞检测分析方法。图1示出了上述实施例的漏洞检测分析方法的流程示意图。如图1所示,上述实施例的漏洞检测分析的过程100,包括:对于任一给定类型的漏洞,获取或接收所述类型漏洞的攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据(参考框101);根据所述的攻击测试报文有效报文内容和响应该攻击测试的有效实时响应数据,分析在受到所述攻击测试报文攻击时目标程序内部运行是否发生因其引发的异常而据此判断目标程序中是否潜藏所述给定类型的漏洞(参考框102);其中,所述类型漏洞的攻击测试报文的有效报文内容,包括能够利用所述类型漏洞进行攻击的有效载荷参数内容;目标程序响应该攻击测试的有效实时响应数据,包括目标程序响应和处理所述攻击测试报文过程中的运行上下文;所述的运行上下文,包括:至少一组的该攻击测试的数据流执行到关键函数时获取的有效运行时数据,及其对应的关键函数信息;所述关键函数信息,是指获取所述有效运行时数据时对应的关键函数的信息;在上述的关键函数信息中,主要包括:例如关键函数的函数名称等的识别所述关键函数的信息。一般而言,分析目标程序受到所述攻击测试报文攻击时其内部运行是否发生因所述攻击测试报文引发的异常,主要是通过对目标程序中对应给定类型漏洞的关键函数在攻击测试过程中的执行情况的分析确定的;此时的关键函数的异常执行,通常表征了目标程序受到所述攻击测试报文攻击时其内部运行是否发生因其引发的异常,即进一步据此表征是否潜藏了给定类型的漏洞。

以下将参考图2、图3来描述在上述一些实施例的框102中分析、判断目标程序中是否潜藏了给定类型漏洞时涉及的判断目标程序中相关关键函数是否异常执行的具体过程。图2示出了上述实施例中的一些的分析过程中的判断目标程序中关键函数是否异常执行的过程的示意图。如图2所示,对于目标程序中的任一关键函数,判断其是否异常执行的具体过程,可以是包括:d1:判断所述攻击测试报文中是否包括所述攻击测试报文应包括的能够利用所述类型漏洞进行攻击的、全部的有效载荷参数内容;若是,则继而,d2:根据所述攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的所述攻击测试报文的有效载荷参数内容;若否,则判定该关键函数异常执行。

图3示出了上述实施例中的另一些的分析过程中的判断目标程序中关键函数是否异常执行的过程的示意图;其中,获取/接收所述有效报文内容,还应包括所述攻击测试报文中对应的请求参数值;如图3所示,对于目标程序中的任一关键函数,判断其是否异常执行的具体过程,还可以不同于前者,其中包括:对于其中的任一关键函数,所述判定关键函数是否异常执行的过程,包括:d1:判断所述攻击测试报文的有效报文内容中,是否包括所述攻击测试报文应包括的能够利用所述类型漏洞进行攻击的、全部的有效载荷参数内容;若是,则继而,d2:根据所述攻击测试报文中的有效载荷参数内容,判断该关键函数对应的所述有效运行时数据中是否包括经无害化处理的攻击测试报文有效载荷参数内容;以及,d3:判断所述有效运行时数据中是否包括所述请求参数值;若d2为否且d3为是,则判定该关键函数异常执行。

在一些实施例中,获取/接收的有效实时响应数据中,其运行上下文中可以包括多组的该攻击测试的数据流执行到关键函数时获取的有效运行时数据,及其对应的关键函数信息;其中的各组有效运行时数据及其对应的关键函数信息,可以是获取自所述类型漏洞对应的多个不同关键函数(如果所述类型漏洞对应多个不同关键函数),也可以是获取自同一关键函数的不同位点;还可以是两种情况兼有之;其中,当所述关键函数包括多个位点时,所述关键函数信息,包括:获取所述有效运行时数据的所述关键函数的位点信息。

附加地,在一些实施例中,可以根据其中的任意一组有效运行时数据及其对应的关键函数信息,独立地分析、判断目标程序中是否潜藏给定类型漏洞;换而言之,即在任一关键函数、任一位点获取的有效运行时数据及其对应的关键函数信息,都能够用于独立地分析目标程序中是否潜藏了给定类型漏洞。

附加地,在一些实施例中,还可以根据其中的一些组的有效运行时数据及其对应的关键函数信息的特定组合,综合分析、判断目标程序中是否潜藏给定类型漏洞;换而言之,即其中的一些在所述关键函数、位点获取的有效运行时数据及其对应的关键函数信息,可结合使用,通过综合分析确定目标程序中是否潜藏了给定类型漏洞。

在一些实施例中,在获取/接收的所述有效实时响应数据中,还可以包括将反馈给测试端的对应所述攻击测试报文的响应报文内容;所述的响应报文内容,用于辅助分析、判断目标程序中是否潜藏给定类型的漏洞。

在一些实施例中,其中的攻击测试报文及其有效报文内容、有效实时响应数据(其中也包括响应报文内容)等,也可以是通过预先在相应位点插桩相应的探针获取的,例如在目标程序中的关键函数插桩探针获取等。进一步地,在上述实施例中,还可以采用运行时插桩的方式,提高获取效率和以最小侵入的方式获取相关有效数据。具体地,例如在目标程序启动过程等的程序运行时,在各个关键函数插桩探针。例如,以java编程的目标程序为例,对其执行运行时插桩:即可在该java程序启动中或启动后的类加载过程中,采用字节码插桩工具等方式,在需要的位点(例如关键函数的头部或尾部)插桩探针。

附加地,在一些实施例中,所述的插桩探针,可以是根据插桩点位置、对获取所述有效报文内容或有效实时响应数据的需要等的不同而差异化设计的。例如,在获取所述有效实时响应数据中的运行时数据时,根据其插桩点位置、获取数据内容的需要,设计专用的探针,采用适度的覆盖策略,仅覆盖符合当前需要的业务逻辑,采集所需要的运行时数据。

在一些实施例中,所述的有效实时响应数据,还可以包括:函数调用栈信息。其中,所述的函数调用栈信息,以及前面一些实施例中述及的响应报文内容等,都能辅助分析、定位给定类型漏洞。其中,以函数调用栈信息为例,当分析检测出给定类型漏洞时,根据所述函数调用栈信息确定给定类型漏洞触发的代码行信息;根据其(给定类型漏洞触发的代码行信息),可以较容易地定位给定漏洞位置。

根据本公开的一些实施例,提出了一种漏洞检测分析装置。图4示出了上述实施例的用于漏洞检测分析的装置的框图。如图4所示,上述用于漏洞检测分析的装置400,包括:获取模块或接受模块410,以及分析模块420;获取模块/接受模块410,被配置为获取/接收对应任一的确定类型漏洞的攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据;分析模块420,被配置为根据获取模块/接受模块410的所述攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据,分析在受到所述攻击测试报文攻击时目标程序内部运行是否发生相应的异常而据此判断目标程序中是否潜藏所述确定类型漏洞;其中,所述类型漏洞的攻击测试报文的有效报文内容,包括能够利用所述类型漏洞进行攻击的有效载荷参数内容;目标程序响应该攻击测试的有效实时响应数据,包括目标程序响应和处理所述攻击测试报文过程中的运行上下文;所述的运行上下文,包括:至少一组的该攻击测试的数据流执行到关键函数时获取的有效运行时数据,及其对应的关键函数信息;所述关键函数信息,是指获取所述有效运行时数据时对应的关键函数的信息;在上述的关键函数信息中,主要包括:例如关键函数的函数名称等的识别所述关键函数的信息。一般而言,分析目标程序受到所述攻击测试报文攻击时其内部运行是否发生因所述攻击测试报文引发的异常,主要是通过对目标程序中对应所述确定类型漏洞的关键函数在攻击测试过程中的执行情况的分析确定的;此时的关键函数的异常执行,通常表征了目标程序受到所述攻击测试报文攻击时其内部运行是否发生因其引发的异常,即进一步据此表征是否潜藏了所述确定类型的漏洞。

在一些实施例中,分析模块420被配置得分析、判断目标程序中是否潜藏了所述确定类型漏洞时,其涉及的判断目标程序中相关关键函数是否异常执行的具体过程,可以被配置得包括,对于目标程序中的任一关键函数,判断其是否异常执行的具体过程,包括:d1:判断所述攻击测试报文中是否包括所述攻击测试报文应包括的能够利用所述类型漏洞进行攻击的、全部的有效载荷参数内容;若是,则继而,d2:根据所述攻击测试报文中的有效载荷参数内容,判断该关键函数对应的有效运行时数据中是否包括经无害化处理的所述攻击测试报文的有效载荷参数内容;若否,则判定该关键函数异常执行。

在一些实施例中,分析模块420被配置得分析、判断目标程序中是否潜藏了所述确定类型漏洞时,其涉及的判断目标程序中相关关键函数是否异常执行的具体过程,还可以不同于前者,其被配置得包括:对于其中的任一关键函数,所述判定关键函数是否异常执行的过程,包括:d1:判断所述攻击测试报文的有效报文内容中,是否包括所述攻击测试报文应包括的能够利用所述类型漏洞进行攻击的、全部的有效载荷参数内容;若是,则继而,d2:根据所述攻击测试报文中的有效载荷参数内容,判断该关键函数对应的所述有效运行时数据中是否包括经无害化处理的攻击测试报文有效载荷参数内容;以及,d3:判断所述有效运行时数据中是否包括所述请求参数值;若d2为否且d3为是,则判定该关键函数异常执行。

在一些实施例中,获取模块或接受模块410获取/接收的有效实时响应数据中,其运行上下文中可以包括多组的该攻击测试的数据流执行到关键函数时获取的有效运行时数据,及其对应的关键函数信息;其中的各组有效运行时数据及其对应的关键函数信息,可以是获取自所述类型漏洞对应的多个不同关键函数(如果所述类型漏洞对应多个不同关键函数),也可以是获取自同一关键函数的不同位点;还可以是两种情况兼有之;其中,当所述关键函数包括多个位点时,所述关键函数信息,包括:获取所述有效运行时数据的所述关键函数的位点信息。

附加地,在一些实施例中,分析模块420,可以被配置得根据其中的任意一组有效运行时数据及其对应的关键函数信息,独立地分析、判断目标程序中是否潜藏所述确定类型漏洞;换而言之,即在任一关键函数、任一位点获取的有效运行时数据及其对应的关键函数信息,都能够被用于分析模块420独立地分析目标程序中是否潜藏了所述确定类型漏洞。

附加地,在一些实施例中,分析模块420,还可以被配置得根据其中的一些组的有效运行时数据及其对应的关键函数信息的特定组合,综合分析、判断目标程序中是否潜藏所述确定类型漏洞对应地;换而言之,即其中的一些在所述关键函数、位点获取的有效运行时数据及其对应的关键函数信息,可结合使用;分析模块420可以利用它们通过综合分析确定目标程序中是否潜藏了所述确定类型漏洞。

在一些实施例中,获取模块或接受模块410获取/接收的所述有效实时响应数据中,还可以包括将反馈给测试端的对应所述攻击测试报文的响应报文内容;所述的响应报文内容,用于辅助分析、判断目标程序中是否潜藏所述确定类型的漏洞。

在一些实施例中,其中的攻击测试报文及其有效报文内容、有效实时响应数据(其中也包括响应报文内容)等,也可以是获取模块通过预先在相应位点插桩相应的探针获取的,例如在目标程序中的关键函数插桩探针获取等。进一步地,在上述实施例中,还可以采用运行时插桩的方式,提高获取效率和以最小侵入的方式获取相关有效数据。具体地,例如在目标程序启动过程等的程序运行时,在各个关键函数插桩探针。例如,以java编程的目标程序为例,对其执行运行时插桩:即可在该java程序启动中或启动后的类加载过程中,采用字节码插桩工具等方式,在需要的位点(例如关键函数的头部或尾部)插桩探针。

附加地,在一些实施例中,所述的插桩探针,可以是根据插桩点位置、对获取所述有效报文内容或有效实时响应数据的需要等的不同而差异化设计的。例如,在获取所述有效实时响应数据中的运行时数据时,根据其插桩点位置、获取数据内容的需要,设计专用的探针,采用适度的覆盖策略,仅覆盖符合当前需要的业务逻辑,采集所需要的运行时数据。

在一些实施例中,所述的有效实时响应数据,还可以包括:函数调用栈信息。其中,所述的函数调用栈信息,以及前面一些实施例中述及的响应报文内容等,都能辅助分析、定位所述确定类型漏洞。其中,以函数调用栈信息为例,当分析检测出所述确定类型漏洞时,根据所述函数调用栈信息确定检出类型漏洞触发的代码行信息;根据其(检出类型漏洞触发的代码行信息),可以较容易地定位检出确定漏洞位置。

根据本公开的一些实施例,提出了一种漏洞验证方法。在基于上述实施例述及的漏洞检测分析方法,该漏洞验证方法对目标程序发起攻击测试,向目标程序发送目标类型漏洞的攻击测试报文;以及获取所述攻击测试报文的有效报文内容和目标程序响应该攻击测试的有效实时响应数据,执行上述任一实施例述及的漏洞检测分析方法的相关操作,确定目标程序中是否潜藏了目标类型漏洞。

对应地,图5示出了根据本公开的一些实施例的漏洞验证系统的架构示意图。如图5所示,该系统500包括:测试端单元502和分析单元501;测试端单元502,用于对(部署于服务端的)目标程序发起攻击测试;测试端单元502,包括至少一个的攻击测试节点;攻击测试节点,能够执行向目标程序发送目标类型漏洞的攻击测试报文的操作;分析单元501,用于对目标程序的目标类型漏洞验证分析;分析单元,包括至少一个的分析节点;分析节点能够执行任一实施例述及的漏洞检测分析方法的相关操作,确定目标程序中是否潜藏了目标类型漏洞。

根据本公开的一些实施例,提出了一种用于漏洞检测分析的电子设备。该电子设备,可以用于漏洞检测分析。图6示出了根据本公开的一些实施例的用于漏洞检测分析的电子设备的框图。如图6所示,电子设备600,包括中央处理器(cpu)601,其能够根据存储在只读存储器(rom)602的计算机程序指令或从存储单元608加载到随机访问存储器(ram)603中的计算机程序指令,来执行各种适当的操作和处理,在(ram)603中,还可以存储电子设备1300操作所需的各种程序代码、数据。cpu601、rom602、ram603通过总线604彼此相连,且输入/输出(i/o)接口605也与总线604相连。电子设备600的一些部件通过i/o接口1305接入,包括:输入单元606,如键鼠等;输出单元607,如显示器等;存储单元608,如磁盘、光盘、固态硬盘(ssd)等,以及通信单元609,如网卡、调制解调器等。通信单元609能够使电子设备600通过计算机网络与其他设备交换信息/数据。cpu601能够执行上述实施例中描述的各种方法和处理过程,例如过程100和/或所述漏洞验证方法的实现过程的部分操作。在一些实施例中,过程400和/或所述漏洞验证方法的实现过程可以被实现为计算机软件程序,其被例如存储单元608等的计算机可读介质。在一些实施例中,计算机程序的部分或全部被载入或安装到若干台电子设备600。当计算机程序被加载到ram603被cpu601执行时,能够执行过程400和/或所述漏洞验证方法的实现过程的部分或者全部操作。

本文中以上描述的功能都可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)等等。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以独立地或以任何合适的子组合的方式实现在多个实现中。

尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1