漏洞挖掘方法、装置及可读存储介质与流程

文档序号:16930547发布日期:2019-02-22 20:13阅读:174来源:国知局
漏洞挖掘方法、装置及可读存储介质与流程

本公开涉及软件安全领域,特别涉及一种漏洞挖掘方法、装置及可读存储介质。



背景技术:

随着网络通信技术的迅速发展,人们对于各种应用程序的依赖程度越来越高,应用程序的安全性备受关注。

应用程序在编写过程中可能会存在安全漏洞,而这些安全漏洞可能会使应用程序的运行出错,或者给恶意攻击者提供可乘之机。相关技术中,在程序投入使用前会对该程序进行测试,如采用模糊(fuzz)测试方法检测程序中是否存在安全漏洞,若检测到存在安全漏洞则可以对该安全漏洞进行修复。

但是,相关技术中仅可检测到较少的安全漏洞,故应用程序的安全性仍较低。



技术实现要素:

本公开提供了一种漏洞挖掘方法、装置及可读存储介质,可以解决由于挖掘出的应用程序的安全漏洞较少,应用程序的安全性较低的问题。所述技术方案如下:

根据本公开的一方面,提供了一种漏洞挖掘方法,所述方法包括:

确定目标应用程序的多个功能单元中的目标功能单元;

采用目标数据类型的n个测试数据对所述目标功能单元进行漏洞测试,得出第一漏洞测试结果,其中,所述目标功能单元用于对所述目标数据类型的数据进行处理,且所述n的值处于经验值范围内,所述经验值范围是根据功能单元出现安全漏洞前对同一数据类型的数据进行处理的次数得出的;

根据所述第一漏洞测试结果,确定所述目标应用程序中的安全漏洞。

可选地,采用目标数据类型的n个测试数据对所述目标功能单元进行漏洞测试,得出第一漏洞测试结果,包括:

向所述目标功能单元输入第i个测试数据,1≤i≤n;

获取所述目标功能单元对所述第i个测试数据进行处理后得到的第一目标结果数据;

获取所述第i个测试数据对应的第一预测结果数据;

在所述第一目标结果数据与所述第一预测结果数据不同时,确定所述目标功能单元存在安全漏洞。

可选地,采用目标数据类型的n个测试数据对所述目标功能单元进行漏洞测试,得出第一漏洞测试结果,还包括:

更新所述i的值,且将所述i的值加一作为更新后的i的值;

在所述第一目标结果数据与所述第一预测结果数据相同,且更新后的i<n时,再次向所述目标功能单元输入第i个测试数据。

可选地,所述目标应用程序包括至少两个目标功能单元,所述方法还包括:

确定所述至少两个目标功能单元的多种执行顺序中的目标执行顺序;

按照所述目标执行顺序控制所述至少两个目标功能单元处理数据,得出第二漏洞测试结果;

根据所述第二漏洞测试结果,确定所述目标应用程序中的安全漏洞。

可选地,按照所述目标执行顺序控制所述至少两个目标功能单元处理数据,得出第二漏洞测试结果,包括:

按照所述目标执行顺序控制所述至少两个目标功能单元对目标测试数据进行处理,所述目标测试数据包括:所述至少两个目标功能单元中每个目标功能单元对应的测试数据,所述每个目标功能单元对其对应的测试数据进行处理;

获取所述至少两个目标功能单元对所述目标测试数据进行处理后得到的第二目标结果数据;

获取所述目标测试数据对应的第二预测结果数据;

在所述第二目标结果数据与所述第二预测结果数据不同时,确定所述目标执行顺序存在安全漏洞。

可选地,所述按照目标执行顺序控制所述至少两个目标功能单元处理数据,还包括:

获取所述目标执行顺序的测试次数a;

更新所述目标执行顺序的测试次数a,且将所述目标执行顺序的测试次数a加一,作为更新后的测试次数a;

在所述第二目标结果数据与所述第二预测结果数据相同,且更新后的测试次数a<m时,再次按照所述目标执行顺序控制所述至少两个目标功能单元对目标测试数据进行处理,所述m的值处于所述经验值范围内。

根据本公开的另一方面,提供了一种漏洞挖掘装置,所述漏洞挖掘装置包括:

第一确定模块,被配置为确定目标应用程序的多个功能单元中的目标功能单元;

测试模块,被配置为采用目标数据类型的n个测试数据对所述目标功能单元进行漏洞测试,得出第一漏洞测试结果,其中,所述目标功能单元用于对所述目标数据类型的数据进行处理,且所述n的值处于经验值范围内,所述经验值范围是根据功能单元出现安全漏洞前对同一数据类型的数据进行处理的次数得出的;

第二确定模块,被配置为根据所述第一漏洞测试结果,确定所述目标应用程序中的安全漏洞。

可选地,所述测试模块包括:

第一输入子模块,被配置为向所述目标功能单元输入第i个测试数据,1≤i≤n;

第一获取子模块,被配置为获取所述目标功能单元对所述第i个测试数据进行处理后得到的第一目标结果数据;

第二获取子模块,被配置为获取所述第i个测试数据对应的第一预测结果数据;

第一确定子模块,被配置为在所述第一目标结果数据与所述第一预测结果数据不同时,确定所述目标功能单元存在安全漏洞。

可选地,所述测试模块还包括:

第一更新子模块,被配置为更新所述i的值,且将所述i的值加一作为更新后的i的值;

第二输入子模块,被配置为在所述第一目标结果数据与所述第一预测结果数据相同,且更新后的i<n时,再次向所述目标功能单元输入第i个测试数据。

可选地,所述目标应用程序包括至少两个目标功能单元,所述漏洞挖掘装置还包括:

第三确定模块,被配置为确定所述至少两个目标功能单元的多种执行顺序中的目标执行顺序;

控制模块,被配置为按照所述目标执行顺序控制所述至少两个目标功能单元处理数据,得出第二漏洞测试结果;

第四确定模块,被配置为根据所述第二漏洞测试结果,确定所述目标应用程序中的安全漏洞。

可选地,所述控制模块包括:

第一控制子模块,被配置为按照所述目标执行顺序控制所述至少两个目标功能单元对目标测试数据进行处理,所述目标测试数据包括:所述至少两个目标功能单元中每个目标功能单元对应的测试数据,所述每个目标功能单元对其对应的测试数据进行处理;

第三获取子模块,被配置为获取所述至少两个目标功能单元对所述目标测试数据进行处理后得到的第二目标结果数据;

第四获取子模块,被配置为获取所述目标测试数据对应的第二预测结果数据;

第二确定子模块,被配置为在所述第二目标结果数据与所述第二预测结果数据不同时,确定所述目标执行顺序存在安全漏洞。

可选地,所述控制模块还包括:

第五获取子模块,被配置为获取所述目标执行顺序的测试次数a;

第二更新子模块,被配置为更新所述目标执行顺序的测试次数a,且将所述目标执行顺序的测试次数a加一,作为更新后的测试次数a;

第二控制子模块,被配置为在所述第二目标结果数据与所述第二预测结果数据相同,且更新后的测试次数a<m时,再次按照所述目标执行顺序控制所述至少两个目标功能单元对目标测试数据进行处理,所述m的值处于所述经验值范围内。

根据本公开的再一方面,提供了一种漏洞挖掘装置,所述漏洞挖掘装置包括:

处理组件;

用于存储所述处理组件的可执行指令的存储器;

其中,所述处理组件被配置为:

确定目标应用程序的多个功能单元中的目标功能单元;

采用目标数据类型的n个测试数据对所述目标功能单元进行漏洞测试,得出第一漏洞测试结果,其中,所述目标功能单元用于对所述目标数据类型的数据进行处理,且所述n的值处于经验值范围内,所述经验值范围是根据功能单元出现安全漏洞前对同一数据类型的数据进行处理的次数得出的;

根据所述第一漏洞测试结果,确定所述目标应用程序中的安全漏洞。

根据本公开的又一方面,提供了一种可读存储介质,所述可读存储介质中存储有指令,

当所述可读存储介质在处理组件上运行时,使得处理组件执行上述的漏洞挖掘方法。

本公开提供的技术方案至少可以包括以下有益效果:

本公开实施例提供的漏洞挖掘方法中,采用同一数据类型的n个测试数据对目标功能单元进行漏洞测试,可以确定目标功能单元在对同一数据类型的数据进行多次处理后是否会出现安全漏洞,因此,提高了目标应用程序的安全性。另外,本公开实施例中的目标功能单元可以为与读写功能相关的功能单元,故可以进行较少的漏洞检测,提高漏洞检测效率。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。

附图说明

为了更清楚地说明本公开的实施例,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据一示例性实施例示出的一种漏洞挖掘方法的流程图;

图2是根据一示例性实施例示出的另一种漏洞挖掘方法的流程图;

图3是根据一示例性实施例示出的又一种漏洞挖掘方法的流程图;

图4是根据一示例性实施例示出的一种得出第二漏洞测试结果的方法流程图;

图5是根据一示例性实施例示出的一种漏洞挖掘装置的结构示意图;

图6是根据一示例性实施例示出的测试模块的结构示意图;

图7是根据一示例性实施例示出的另一种测试模块的结构示意图;

图8是根据一示例性实施例示出的另一种漏洞挖掘装置的结构示意图;

图9是根据一示例性实施例示出的一种控制模块的结构示意图;

图10是根据一示例性实施例示出的另一种控制模块的结构示意图;

图11是根据一示例性实施例示出的一种漏洞挖掘装置的框图。

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

具体实施方式

为了使本公开的目的、技术方案和优点更加清楚,下面将结合附图对本公开作进一步地详细描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本公开保护的范围。

随着网络通信技术的迅速发展,应用程序的安全性备受关注。通常在应用程序投入使用前会采用模糊测试方法对应用程序进行漏洞挖掘,以尽可能多地发现应用程序中存在的安全漏洞,进而可以对发现的安全漏洞进行修复,以降低应用程序在投入使用后被恶意攻击的风险。目前漏洞挖掘的方向较为局限,如目前的漏洞挖掘技术通常控制应用程序中的功能单元对尽可能多的数据类型的数据进行处理,以确定会使功能单元展现安全漏洞的数据类型。本公开提供了一种漏洞挖掘的新方向,可以挖掘出应用程序中更多被忽略的安全漏洞,进而提高应用程序的安全性。

图1是根据一示例性实施例示出的一种漏洞挖掘方法的流程图。如图1所示,该方法可以包括:

在步骤101中,确定目标应用程序的多个功能单元中的目标功能单元。

在步骤102中,采用目标数据类型的n个测试数据对目标功能单元进行漏洞测试,得出第一漏洞测试结果。

其中,目标功能单元可以用于对目标数据类型的数据进行处理,且n的值处于可以经验值范围内,该经验值范围是根据功能单元出现安全漏洞前对同一数据类型的数据进行处理的次数得出的。

示例地,该目标数据类型为该目标功能单元能够处理的数据的数据类型。例如,若目标功能单元为对图像进行处理的功能单元,则输入该目标功能单元的测试数据可以为图像格式(如.png或.jpg格式)的数据。

示例地,可以统计不同的应用程序中的功能单元对一种数据类型的数据反复处理后出现安全漏洞的情况,进而确定功能单元在反复处理同一数据类型的数据后出现安全漏洞时,大多功能单元的处理次数范围,并可以将该处理次数范围确定为该经验值范围。例如,该经验值范围可以为200~500。

在步骤103中,根据第一漏洞测试结果,确定目标应用程序中的安全漏洞。

需要说明的是,本公开实施例中采用目标数据类型的n个测试数据对目标功能单元进行漏洞测试,也即是关注了功能单元的数据处理量对功能单元的影响,相当于对功能单元中从量变(数据量的改变)到质变(功能单元的改变)的安全漏洞进行了挖掘。

综上所述,本公开实施例提供的漏洞挖掘方法中,采用同一数据类型的n个测试数据对目标功能单元进行漏洞测试,可以确定目标功能单元在对同一数据类型的数据进行多次处理后是否会出现安全漏洞,进而可以挖掘出目标应用程序中可能存在的更多的安全漏洞,因此,提高了目标应用程序的安全性。

图2是根据一示例性实施例示出的另一种漏洞挖掘方法的流程图。如图2所示,该方法可以包括:

在步骤201中,确定目标应用程序的多个功能单元中的目标功能单元。执行步骤202。

需要说明的是,该目标应用程序可以为终端上安装的任一应用程序(如即时通讯应用程序或游戏应用程序等),或者也可以为终端的操作系统(如安卓操作系统)。该目标功能单元可以为该多个功能单元中待测试的功能单元,该目标功能单元的个数可以为一个或多个,本公开实施例对此不做限定。本公开实施例中所述的功能单元也即是应用程序中的功能点,或者也可以称为接口、潜在的攻击面或者数据操作的函数等。

示例地,应用程序中的功能单元可以包括:读功能单元、写功能单元、复制功能单元以及删除功能单元等。可选地,本公开实施例中的目标功能单元可以为应用程序中与读写功能相关的功能单元。通常应用程序中与读写功能相关的功能单元较为重要,被恶意利用的几率较高,故可以着重对与读写功能相关的功能单元进行漏洞检测。

在步骤202中,向目标功能单元输入目标数据类型的n个测试数据中的第i个测试数据。执行步骤203。

其中,1≤i≤n,n的值可以处于经验值范围内,该经验值范围可以参考步骤102中对经验值范围的描述,该目标数据类型也可以参照步骤102中对目标数据类型的描述,本公开实施例在此不做赘述。示例地,可以从第一个测试数据开始向目标功能单元输入测试数据。

在步骤203中,获取目标功能单元对第i个测试数据进行处理后得到的第一目标结果数据。执行步骤204。

可选地,若在步骤202后,目标功能单元发生崩溃,则在步骤202后也可以直接执行步骤204。

在步骤204中,获取第i个测试数据对应的第一预测结果数据。执行步骤205。

示例地,漏洞挖掘装置可以预先确定输入目标功能单元的第i个测试数据的第一预设结果数据,也即是若目标功能单元正常,则该目标功能单元对该第i个测试数据进行处理后可以得到的输出结果。

在步骤205中,判断第一目标结果数据与第一预测结果数据是否相同。在第一目标结果数据与第一预测结果数据相同时,执行步骤206;在第一目标结果数据与第一预测结果数据不同时,执行步骤208。

在步骤206中,判断i是否小于n。若i<n,则执行步骤207。若i=n,则执行步骤208。

在步骤207中,更新i的值,且将i的值加一作为更新后的i的值。执行步骤202。

示例地,漏洞挖掘装置在向目标功能单元输入该n个测试数据中的第i个测试数据后,确定该第i个测试数据对应的第一目标结果数据与第一预测结果数据相同,则可以确定目标功能单元已经对i个测试数据进行了处理,且在对该i个测试数据进行处理的过程中目标功能单元均正常,未出现安全漏洞。若在步骤206中确定i<n,则漏洞挖掘装置可以确定还需继续对目标功能单元进行漏洞测试;若在步骤206中i=n,则漏洞挖掘装置可以认为该目标功能单元不存在从量变到质变的安全漏洞。

在步骤208中,获取第一漏洞测试结果。执行步骤209。

其中,该第一漏洞测试结果可以用于表示该目标功能单元是否存在安全漏洞,且在该目标功能单元存在安全漏洞时,该第一漏洞测试结果还可以包括该安全漏洞的信息。

示例地,漏洞挖掘装置可以根据步骤205与步骤206确定第一漏洞测试结果。若步骤205中,第一目标结果数据与第一预测结果数据不同,则可以确定目标功能单元在对同一数据类型的i个测试数据进行处理后出现了异常,进而可以确定该目标功能单元存在安全漏洞。若步骤206中确定i=n,则可以确定该目标功能单元在同一数据类型的n个数据进行处理后仍正常,进而可以认为该目标功能单元不存在安全漏洞。可选地,在确定目标功能单元存在安全漏洞时,漏洞挖掘装置可以记录该安全漏洞的信息,如该目标功能单元的标识、已处理的测试数据的个数和该测试数据的数据类型等。

在步骤209中,根据第一漏洞测试结果确定目标应用程序中的安全漏洞。

需要说明的是,以上仅以目标应用程序中的一个目标功能单元为例进行解释说明,而应用程序通常包括多个目标功能单元,此时,每个目标功能单元均可以有其对应的第一漏洞测试结果。之后,漏洞挖掘装置可以根据确定出的多个第一漏洞测试结果确定目标应用程序中的安全漏洞。示例地,可以将每个存在安全漏洞的目标功能单元标记为目标应用程序中的一个安全漏洞。

本公开实施例中,漏洞挖掘装置可以依次向目标功能单元输入目标数据类型的n个测试数据,以使得目标功能单元可以依次对该n个测试数据进行处理。若在处理其中的某个测试数据时出现异常(如输出结果与预测结果不同,或者发生崩溃等),则可以确定该目标功能单元存在安全漏洞,且可以记录该安全漏洞的信息,以得到第一漏洞检测结果,并可以停止继续向目标功能单元输入测试数据。之后,漏洞挖掘装置就可以根据每个目标功能单元对应的第一漏洞检测结果,确定目标应用程序中的安全漏洞,完成对目标应用程序的漏洞挖掘。

综上所述,本公开实施例提供的漏洞挖掘方法中,采用同一数据类型的n个测试数据对目标功能单元进行漏洞测试,可以确定目标功能单元在对同一数据类型的数据进行多次处理后是否会出现安全漏洞,进而可以挖掘出目标应用程序中可能存在的更多的安全漏洞,因此,提高了目标应用程序的安全性。

图3是根据一示例性实施例示出的又一种漏洞挖掘方法的流程图。如图3所示,在图1的基础上,步骤102之后还可以执行如下的步骤301至步骤303。可选地,步骤301至步骤303也可以在图2的基础上执行,本公开实施例中未对此种方式进行示意。

在步骤301中,确定至少两个目标功能单元的多种执行顺序中的目标执行顺序。

示例地,目标应用程序可以包括至少两个目标功能单元,该至少两个目标功能单元可以有多种执行顺序,该多种执行顺序也即是该目标功能单元的多种组合执行的方式。该多种执行顺序可以包括:该至少两个目标功能单元进行排列组合后得到的所有执行顺序。如目标应用程序可以包括目标功能单元a、b和c,该三个目标功能单元的执行顺序可以为abc、acb、bac、bca、cab或cba,然后可以在该多种执行顺序中确定目标执行顺序。可选地,该目标执行顺序可以为该多种执行顺序中的任一执行顺序。

通常,若用户针对应用程序进行某操作,则会触发应用程序中多个功能单元的配合工作,该多个功能单元通常按照某种执行顺序对数据进行处理。例如,用户在显示装置上应用程序的显示界面进行了点击操作,则可能会触发该应用程序中的目标功能单元a、b和c依次进行数据处理。如目标功能单元a可能将数据a写入到了存储区域q1,目标功能单元b可能将数据b从存储区域q2读出,目标功能单元c可能将数据c从存储区域q3中删除。

可选地,本公开实施例中该至少两个目标功能单元可以为:目标应用程序中与读写功能相关的功能单元,而无需包括目标应用程序中的所有功能单元,故可以减少进行漏洞检测的次数,提高漏洞检测效率。

在步骤302中,按照目标执行顺序控制至少两个目标功能单元处理数据,得出第二漏洞测试结果。

其中,该至少两个目标功能单元可以仅执行一次数据的处理;或者也可以执行多次数据的处理,以确定该目标执行顺序是否存在从量变到质变的安全漏洞。

示例地,如图4所示,步骤302可以包括:

步骤3021、按照目标执行顺序控制至少两个目标功能单元对目标测试数据进行处理。执行步骤3022。

其中,目标测试数据可以包括:该至少两个目标功能单元中每个目标功能单元对应的测试数据,每个目标功能单元对其对应的测试数据进行处理。

示例地,假设该至少两个目标功能单元包括:功能单元a、b和c,该目标执行顺序为abc,若该至少两个目标功能单元按照该目标执行顺序执行,则可以先控制目标功能单元a处理其对应的测试数据,再控制目标功能单元b处理其对应的测试数据,之后控制目标功能单元c处理其对应的测试数据。

步骤3022、获取至少两个目标功能单元对目标测试数据进行处理后得到的第二目标结果数据。执行步骤3023。

步骤3023、获取目标测试数据对应的第二预测结果数据。执行步骤3024。

示例地,漏洞挖掘装置可以预先确定目标测试数据对应的第二预测结果数据,也即是若该至少两个目标功能单元可以按照该目标执行顺序正常执行,则该目标测试数据经过至少两个目标功能单元处理后可以得到的输出结果。

步骤3024、判断第二目标结果数据与第二预测结果数据是否相同。在第二目标结果数据与第二预测结果数据不同时,执行步骤3028;在第二目标结果数据与第二预测结果数据相同时,执行步骤3025。

步骤3025、获取目标执行顺序的测试次数a。执行步骤3026。

示例地,该测试次数a也即是该至少两个目标功能单元对目标测试数据的处理次数。在对该目标执行顺序进行漏洞测试之前,漏洞挖掘装置可以预先设置该测试次数a=0,以表示该至少两个目标功能单元还未对目标测试数据进行过处理。

步骤3026、更新目标执行顺序的测试次数a。执行步骤3027。

示例地,可以将目标执行顺序的测试次数a加一,作为更新后的测试次数a。,在每对该目标执行顺序进行完一次漏洞测试后,该目标执行顺序进行漏洞测试的次数发生了改变,漏洞挖掘装置就可以更新该测试次数a,以使得该更新后的测试次数a确切地表示对该目标执行顺序所进行的漏洞测试的次数。

需要说明的是,本公开实施例仅以步骤3024中确定第二目标结果数据与第二预测结果数据相同时,才执行步骤3025和步骤3026为例。可选地,在步骤3024中确定第二目标结果数据与第二预测结果数据不同时,也可以执行步骤3025与步骤3026,本公开实施例对此不做限定。

步骤3027、判断更新后的测试次数a是否小于m。在a<m时,执行步骤3021。在a≥m时,执行步骤3028。

示例地,m的值可以处于步骤102中所述的经验值范围内。对目标执行顺序采用目标测试数据进行m次漏洞检测,就可以确定该目标执行顺序是否存在从量变到质变的安全漏洞。若a<m,则漏洞挖掘装置可以确定还需继续对目标功能单元进行漏洞测试。若a≥m,则漏洞挖掘装置可以确定目标执行顺序在m次漏洞测试中均正常,未出现安全漏洞,进而可以认为该目标执行顺序不存在从量变到质变的安全漏洞。

在步骤3028中,获取第二漏洞测试结果。

其中,该第二漏洞测试结果可以用于表示该目标执行顺序是否存在安全漏洞,且在该目标执行顺序存在安全漏洞时,该第二漏洞测试结果还可以包括该安全漏洞的信息。

示例地,漏洞挖掘装置可以根据步骤3024与步骤3027确定第二漏洞测试结果。若步骤3024中,第二目标结果数据与第二预测结果数据不同,则可以确定目标执行顺序存在安全漏洞。若步骤3027中确定a≥m,则可以认为该目标执行顺序不存在安全漏洞。

在步骤303中,根据第一漏洞测试结果和第二漏洞测试结果,确定目标应用程序中的安全漏洞。

示例地,漏洞挖掘装置可以根据第一漏洞测试结果确定单个目标功能单元是否存在安全漏洞,也可以根据第二漏洞测试结果确定至少两个目标功能单元的目标执行顺序是否存在安全漏洞,进而可以将功能单元的安全漏洞与执行顺序的安全漏洞均确定为目标应用程序中的安全漏洞。由于本公开实施例中同时通过第一漏洞测试结果和第二漏洞测试结果,确定目标应用程序中的安全漏洞,故可以挖掘出目标应用程序中更多的安全漏洞,进一步提高了目标应用程序的安全性。需要说明的是,在执行步骤303之后,漏洞挖掘装置可以不再执行步骤103。

目标应用程序中的安全漏洞可以有多种表示方式,如可以直接将存在安全漏洞的功能单元或执行顺序作为目标应用程序中的安全漏洞,或者也可以将功能单元或执行顺序中存在的安全漏洞作为目标应用程序中的安全漏洞。假设,目标应用程序中功能单元a和执行顺序abc均存在从量变到质变的安全漏洞,则目标应用程序中的安全漏洞可以包括:功能单元a和执行顺序abc,或者目标应用程序中的安全漏洞可以包括:功能单元a中从量变到质变的安全漏洞,以及执行顺序abc中从量变到质变的安全漏洞。

需要说明的是,以上仅以一个目标执行顺序为例进行解释说明,而通常漏洞挖掘装置需要对该至少两个目标功能单元的所有执行顺序均进行漏洞检测,此时,每个执行顺序均可以有其对应的第二漏洞测试结果。之后,漏洞挖掘装置可以将每个存在安全漏洞的执行顺序均记为目标应用程序中的一个安全漏洞。

另外,通常对目标功能单元或目标执行顺序进行漏洞测试,还可以挖掘出应用程序中的缺陷(bug),进而可以通过工作人员人工识别或者进一步通过软件进行判断,以在进行漏洞测试之后得出的漏洞测试结果中识别出安全漏洞。

示例地,在步骤3024之后还可以确定第二预测结果数据与第二目标结果数据的关系,进而可以根据该关系在漏洞测试结果中识别出安全漏洞。例如,目标应用程序为具备取款功能的应用程序,用户可以通过终端输入数值以提取该数值对应的钱。当输入的数值小于提取出的钱的数值时,可以确定该目标应用程序存在安全漏洞;当输入的数值大于提取出的钱的数值时,可以确定该目标应用程序存在缺陷。

本公开实施例中,漏洞挖掘装置可以控制至少两个目标功能单元依照目标执行顺序处理m次目标测试数据,也即是对目标执行顺序进行m次漏洞测试。若在某次测试时出现异常(如输出结果与预测结果不同,或者发生崩溃等),则可以确定该目标执行顺序存在安全漏洞,且可以记录该安全漏洞的信息,以得到第而漏洞检测结果,并使得该至少两个目标功能单元不再依照目标执行顺序处理目标测试数据。之后,漏洞挖掘装置就可以根据每个目标执行顺序对应的第二漏洞检测结果,以及每个目标功能单元对应的第一漏洞检测结果,确定目标应用程序中的安全漏洞,完成对目标应用程序的漏洞挖掘。

可选地,本公开实施例提供的漏洞挖掘方法可以与现有的模糊测试工具结合,进而对目标应用程序进行漏洞挖掘,以尽可能多地挖掘目标应用程序中的安全漏洞。示例地,现有的模糊测试工具可以包括:afl(americanfuzzylop)、符号执行、模型检测(modelchecking)、addresssanitizer等。

综上所述,本公开实施例提供的漏洞挖掘方法中,采用同一数据类型的n个测试数据对目标功能单元进行漏洞测试,可以确定目标功能单元在对同一数据类型的数据进行多次处理后是否会出现安全漏洞;且控制至少两个目标功能单元依照目标执行顺序对目标测试数据进行m次处理,可以确定该目标执行顺序是否存在安全漏洞,可以挖掘出目标应用程序中可能存在的更多的安全漏洞,因此,提高了目标应用程序的安全性。另外,本公开实施例中的目标功能单元为与读写功能相关的功能单元,故可以进行较少的漏洞检测,提高漏洞检测效率。

图5是根据一示例性实施例示出的一种漏洞挖掘装置的结构示意图。如图5所示,该漏洞挖掘装置50可以包括:

第一确定模块501,被配置为确定目标应用程序的多个功能单元中的目标功能单元;

测试模块502,被配置为采用目标数据类型的n个测试数据对目标功能单元进行漏洞测试,得出第一漏洞测试结果,其中,目标功能单元用于对目标数据类型的数据进行处理,且n的值处于经验值范围内,经验值范围是根据功能单元出现安全漏洞前对同一数据类型的数据进行处理的次数得出的;

第二确定模块503,被配置为根据第一漏洞测试结果,确定目标应用程序中的安全漏洞。

综上所述,本公开实施例提供的漏洞挖掘装置中,测试模块采用同一数据类型的n个测试数据对目标功能单元进行漏洞测试,可以确定目标功能单元在对同一数据类型的数据进行多次处理后是否会出现安全漏洞,进而可以挖掘出目标应用程序中可能存在的更多的安全漏洞,因此,提高了目标应用程序的安全性。

可选地,如图6所示,测试模块502可以包括:

第一输入子模块5021,被配置为向目标功能单元输入第i个测试数据,1≤i≤n;

第一获取子模块5022,被配置为获取目标功能单元对第i个测试数据进行处理后得到的第一目标结果数据;

第二获取子模块5023,被配置为获取第i个测试数据对应的第一预测结果数据;

第一确定子模块5024,被配置为在第一目标结果数据与第一预测结果数据不同时,确定目标功能单元存在安全漏洞。

可选地,如图7所示,在图6的基础上,测试模块502还可以包括:

第一更新子模块5025,被配置为更新i的值,且将i的值加一作为更新后的i的值;

第二输入子模块5026,被配置为在第一目标结果数据与第一预测结果数据相同,且更新后的i<n时,再次向目标功能单元输入第i个测试数据。

可选地,图8是根据一示例性实施例示出的另一种漏洞挖掘装置的结构示意图。目标应用程序可以包括至少两个目标功能单元,如图8所示,在图5的基础上,该漏洞挖掘装置50还可以包括:

第三确定模块504,被配置为确定至少两个目标功能单元的多种执行顺序中的目标执行顺序;

控制模块505,被配置为按照目标执行顺序控制至少两个目标功能单元处理数据,得出第二漏洞测试结果;

第四确定模块506,被配置为根据第二漏洞测试结果,确定目标应用程序中的安全漏洞。

可选地,如图9所示,控制模块505可以包括:

第一控制子模块5051,被配置为按照目标执行顺序控制至少两个目标功能单元对目标测试数据进行处理,目标测试数据包括:至少两个目标功能单元中每个目标功能单元对应的测试数据,每个目标功能单元对其对应的测试数据进行处理;

第三获取子模块5052,被配置为获取至少两个目标功能单元对目标测试数据进行处理后得到的第二目标结果数据;

第四获取子模块5053,被配置为获取目标测试数据对应的第二预测结果数据;

第二确定子模块5054,被配置为在第二目标结果数据与第二预测结果数据不同时,确定目标执行顺序存在安全漏洞。

可选地,如图10所示,在图9的基础上,控制模块505还可以包括:

第五获取子模块5055,被配置为获取目标执行顺序的测试次数a;

第二更新子模块5056,被配置为更新目标执行顺序的测试次数a,且将目标执行顺序的测试次数a加一,作为更新后的测试次数a;

第二控制子模块5057,被配置为在第二目标结果数据与第二预测结果数据相同,且更新后的测试次数a<m时,再次按照目标执行顺序控制至少两个目标功能单元对目标测试数据进行处理,m的值处于经验值范围内。

综上所述,本公开实施例提供的漏洞挖掘装置中,测试模块采用同一数据类型的n个测试数据对目标功能单元进行漏洞测试,可以确定目标功能单元在对同一数据类型的数据进行多次处理后是否会出现安全漏洞,进而可以挖掘出目标应用程序中可能存在的更多的安全漏洞,因此,提高了目标应用程序的安全性。

图11是根据一示例性实施例示出的一种用于漏洞挖掘的装置1100的框图。例如,装置1100可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。

参照图11,装置1100可以包括以下一个或多个组件:处理组件1102,存储器1104,电源组件1106,多媒体组件1108,音频组件1110,输入/输出(i/o)的接口1112,传感器组件1114,以及通信组件1116。

处理组件1102通常控制装置1100的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1102可以包括一个或多个处理器1120来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件1102可以包括一个或多个模块,便于处理组件1102和其他组件之间的交互。例如,处理组件1102可以包括多媒体模块,以方便多媒体组件1108和处理组件1102之间的交互。

存储器1104被配置为存储各种类型的数据以支持在装置1100的操作。这些数据的示例包括用于在装置1100上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器1104可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

电源组件1106为装置1100的各种组件提供电力。电源组件1106可以包括电源管理系统,一个或多个电源,及其他与为装置1100生成、管理和分配电力相关联的组件。

多媒体组件1108包括在所述装置1100和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1108包括一个前置摄像头和/或后置摄像头。当装置1100处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件1110被配置为输出和/或输入音频信号。例如,音频组件1110包括一个麦克风(mic),当装置1100处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1104或经由通信组件1116发送。在一些实施例中,音频组件1110还包括一个扬声器,用于输出音频信号。

i/o接口1112为处理组件1102和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件1114包括一个或多个传感器,用于为装置1100提供各个方面的状态评估。例如,传感器组件1114可以检测到装置1100的打开/关闭状态,组件的相对定位,例如所述组件为装置1100的显示器和小键盘,传感器组件1114还可以检测装置1100或装置1100一个组件的位置改变,用户与装置1100接触的存在或不存在,装置1100方位或加速/减速和装置1100的温度变化。传感器组件1114可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1114还可以包括光传感器,如cmos或ccd图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1114还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。

通信组件1116被配置为便于装置1100和其他设备之间有线或无线方式的通信。装置1100可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件1116经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。

在示例性实施例中,装置1100可以被一个或多个应用专用集成电路(asic)、数字信号处理器(dsp)、数字信号处理设备(dspd)、可编程逻辑器件(pld)、现场可编程门阵列(fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储设备等。

需要说明的是,上述实施例提供漏洞挖掘装置在挖掘漏洞时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将漏洞挖掘装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。

需要说明的是,本公开实施例提供的方法实施例能够与相应的装置实施例相互参考,本公开实施例对此不做限定。本公开实施例提供的方法实施例步骤的先后顺序能够进行适当调整,步骤也能够根据情况进行相应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

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