漏洞挖掘方法及装置与流程

文档序号:12467782阅读:706来源:国知局
漏洞挖掘方法及装置与流程

本发明涉及应用安全领域,具体而言,涉及一种漏洞挖掘方法及装置。



背景技术:

逻辑漏洞是指与应用程序APP本身运行逻辑相关的漏洞。这种漏洞主要有以下几个特点:与具体逻辑强耦合,使自动化检测工具难以定位,必须通过人工挖掘的方式才能发现。即使是人工挖掘,也要求漏洞挖掘人员能清晰的了解该App的运行逻辑,这在没有源代码的情况下,靠逆向分析是非常困难的。另外,高危漏洞往往都是逻辑漏洞,由于与具体逻辑联系的越紧密,越难发现,并且通常问题都越严重,因而高危漏洞很难发现。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

根据本申请实施例的一个方面,提供了一种自动挖掘应用的逻辑漏洞的漏洞挖掘方法,包括:获取待测应用执行指定任务时所需要的关键动作;将关键动作与预先存储的特征文件进行对比;以及根据对比结果确定待测应用中是否存在逻辑漏洞;其中,特征文件为由不存在逻辑漏洞的第一基准应用在执行指定任务时需要执行的动作的子集组成的文件。可选地,本申请实施例中的动作可以包括但不限于指令或者步骤;其中,该指令由一个或者多个语句组成,该步骤是由一个或者多个函数组成。可选地,关键动作包括:待测应用执行指定任务时调用的函数,其中,该函数包括系统函数和非系统函数。

根据本申请实施例的另一方面,还提供了一种自动挖掘应用的逻辑漏洞的漏洞挖掘装置,包括:获取模块,用于获取待测应用执行指定任务时所需要的关键动作;对比模块,用于将关键动作与预先存储的特征文件进行对比;确定模块,用于根据对比结果确定待测应用中是否存在逻辑漏洞;其中,特征文件由不存在逻辑漏洞的第一基准应用在执行指定任务时需要执行的动作的子集组成的文件。

在本申请实施例中,采用将待测应用执行指定任务时所需要的关键动作与预先存 储的由不存在逻辑漏洞的第一基准应用在执行指定任务时需要执行的动作的子集组成的特征文件进行对比的技术手段,实现了通过静态挖掘的方式自动查找待测应用中的逻辑漏洞的目的,从而实现了快速挖掘逻辑漏洞的技术效果,进而解决了采用人工挖掘逻辑漏洞方式导致的漏洞挖掘效率低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本申请实施例的一种漏洞挖掘方法的计算机终端的硬件结构框图;

图2是根据本申请实施例1的漏洞挖掘方法的流程图一;

图3是根据本申请实施例1的漏洞挖掘方法的流程图二;

图4是根据本申请可选实施例提供的具体的漏洞特征提取过程的示意图;

图5是根据本申请可选实施例提供的具体的漏洞查找过程的示意图;

图6是根据本申请实施例的漏洞挖掘装置的结构框图一;

图7是根据本申请实施例的漏洞挖掘装置的结构框图二;

图8是根据本申请实施例的漏洞挖掘装置的结构框图三;

图9是根据本申请实施例的一种计算机终端的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方 法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本申请实施例,还提供了一种漏洞挖掘方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例1所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种漏洞挖掘方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输模块106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的漏洞挖掘方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的漏洞挖掘方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输模块106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输模块106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。

在上述运行环境下,本申请提供了如图2所示的漏洞挖掘方法。图2是根据本申请实施例1的漏洞挖掘方法的流程图一,该方法包括步骤S202-S206:

步骤S202,获取待测应用执行指定任务时所需要的关键动作;

需要说明的是,上述关键动作可以包括:待测应用执行指定任务时调用的函数,该函数可能只包括系统函数,也可能只包含非系统函数,还可能既包含系统函数也包含非系统函数,该函数包含的内容根据具体情况不同而不同,上述系统函数是指与上述逻辑漏洞对应的应用本身的运行逻辑无关的函数。指定任务可以是压缩,更新,签名等任务,但不限于此,该指定任务视情况而定。

步骤S204,将关键动作与预先存储的特征文件进行对比;

步骤S206,根据对比结果确定待测应用中是否存在逻辑漏洞;其中,特征文件为由不存在逻辑漏洞的第一基准应用在执行指定任务时需要执行的动作的子集组成的文件。

在本申请的一个实施例中,上述确定待测应用中是否存在逻辑漏洞的方式可以表现为:在对比结果指示关键动作中包含该子集中所有的动作时,确定上述待测应用中不存在上述逻辑漏洞;在对比结果指示关键动作中不包括该子集中所有的动作时,确定上述待测应用中不存在逻辑漏洞。

通过上述步骤,可以粗略判断出待测应用中是否存在逻辑漏洞,为了更加精确的判断待测应用中是否存在逻辑漏洞,上述步骤S204可以包括:判断关键动作中是否按照预定模式包含该子集中所有的动作;其中,该预定模式可以包括:该子集中所有的动作的执行顺序,但并不限于此;通过子集中所有的动作按照预定模式存在于该子集中,在进行比较时,如果关键动作中存在子集中按照预定模式存在的动作,那么可以精确判断该待测应用存在逻辑漏洞。

比如,待测应用执行指定任务时所需要的关键动作:动作A、动作C、动作F、动作G,而特征文件中子集中包含的动作为动作B、动作D、动作E,并且执行顺序依次为动作B、动作D、动作E。在该场景下,将该关键动作与子集中所有的动作进行对比,由于该关键动作中不包含动作B、动作D、动作E,此时可以确定待测应用中存在逻辑漏洞,如果待测应用执行指定任务时所需要的关键动作:动作A、动作B、动作C、动作D、动作E、动作F、动作G,而特征文件中子集中包含的动作为动作B、动作D、动作E,并且执行顺序依次为动作D、动作B、动作E,在该场景下将该关键动作与子集中包含的动作进行对比,尽管该关键动作中包含动作B、动作D、动作E,但是由于执行顺序是不同的,因而在该场景下,不能确定待测应用中存在逻辑漏洞,只有在该待测应用中的关键动作包含的动作B、动作D和动作E的执行顺序与该特征文件中子集所包含的所有动作(动作B、动作D、动作E)的执行顺序相同,那么可以断定该待测 应用中存在逻辑漏洞。

需要说明的是,该子集可以是第一基准应用在执行指定任务时必须执行的动作组成的集合;其中,上述动作包括:系统函数,其中,该系统函数与该逻辑漏洞对应的应用本身的运行逻辑无关。即上述子集可以是第一基准应用执行指定任务时必须执行的,与应用本身无关的动作组成的动作集合。

需要说明的是,该逻辑漏洞对应的应用可以是能够完成上述指定任务的应用,其并不限于第一基准应用和待测应用。

需要说明的是,在本申请中所指的动作可以是指令,也可以是步骤,但不限于此。这些动作可以由一个或者多个函数组成。

需要说明的是,该系统函数是操作系统提供给开发者的,因而其只与操作系统有关系,而与操作系统中各应用本身的运行逻辑没有关系。

上述系统可以是windows系统、linux系统、安卓系统、ios系统等,但不限于此。

在本申请一个实施例中,上述特征文件中可以通过以下方式得到:获取第一基准应用执行指定任务时所需要的第一关键动作;获取存在逻辑漏洞的第二基准应用执行指定任务的第二关键动作;比较第一关键动作与第二关键动作,得到比较结果,其中,比较结果为第一关键动作中存在但第二关键动作中不存在的动作;在比较结果中,查找与操作系统有关的动作;以及将查找到的与该操作系统有关的动作组成的集合作为上述子集记录到文件中,得到上述特征文件。即上述特征文件可以通过将上述第一关键动作和上述第二关键动作进行比较,将第一关键动作中存在但第二关键动作中不存在的动作中,与操作系统有关的动作组成的集合记录到一个文件中形成特征文件,将该特征文件作为基准,去扫描其它的待测应用,进而能够实现自动挖掘未知应用(即待测应用)中的逻辑漏洞。

需要说明的是,上述子集为将第一关键动作中存在但第二关键动作中不存在的动作中,与操作系统有关的动作的集合,因而,上述子集既可以表示为不存在逻辑漏洞的第一基准应用执行指定任务时需要执行的动作组成的集合的一个子集;也可以表示为存在逻辑漏洞的第二基准应用执行指定任务时未执行的动作组成的集合的一个子集。上述第一基准应用和第二基准应用可以是同一类型的应用,也可以是不同类型的应用,但是两者能够执行相同的指定任务。

需要说明的是,上述特征文件的形成过程可以是人工完成,也可以是通过专门的工具来完成的,具体地,可以表现为:获取不存在逻辑漏洞的基准应用执行指定任务时所形成的第一数据流图;获取存在该逻辑漏洞的基准应用执行指定任务时所形成的 第二数据流图,该第一数据流图和第二数据流图可以是函数调用关系图。然后,通过将第一数据流图对应的函数调用关系图与第二数据流图对应的函数调用关系图比较,筛选,得到完成该指定任务必须经过的系统函数。该系统函数不仅包含系统函数本身,还包括系统函数之间的路径关系等,并不限于此。这些系统函数被记录到特征匹配文件中,形成上述的特征文件。

需要说明的是,上述特征文件可以根据需要进行灵活设定,比如,如果第一关键动作存在但第二关键动作中不存在的动作为动作1、动作2和动作3;并且执行的顺序为先执行动作1,再执行动作2,最后再执行动作3,在不需要进行精确扫描逻辑漏洞的情况下,可以只将动作1和动作2写入特征文件中,如果要精确一点,则可以将动作1、动作2和动作3都写入特征文件中,但执行顺序并不写入该特征文件中,如果要求比较苛刻,那么不仅将动作1、动作2、动作3写入特征文件中,还要将执行顺序记录在特征文件中。但是,如果特征文件一旦形成,则应当严格按照特征文件中记录的内容对待测应用进行扫描。

需要说明的是,上述执行步骤的执行主体可以是逻辑漏洞挖掘工具,但不限于此。

相关技术中,对逻辑漏洞的挖掘一般是人工挖掘或者半工具半人工的方式,对于这两种方式对逻辑漏洞进行挖掘,效率较低,并且对漏洞分析人员的要求也较高。而通过上述步骤,采用将待测应用执行指定任务时所需要的关键动作与预先存储的由不存在上述逻辑漏洞的第一基准应用在执行上述指定任务时需要执行的动作的子集组成的特征文件进行对比的方式,实现通过静态挖掘的方式自动查找待测应用中的逻辑漏洞的目的,从而实现了快速挖掘逻辑漏洞的技术效果,进而解决了采用人工挖掘逻辑漏洞方式导致的漏洞挖掘效率低的技术问题。

以一个不存在逻辑漏洞的应用定期和服务器通信,通过服务器下载一个压缩文件,来更新该应用的数据为例,完成该过程所执行的步骤(即上述的动作)如下:

1.通过http连接到服务器;

2.验证连接的服务器的合法性;

3.从服务器下载一个压缩包;

4.对下载的压缩包进行校验判断其合法性;

5.下载完成后,判断压缩包里的文件名是否含有“..”等非法字符;

6.如果没有则对压缩包进行解压;

7.解压后的文件都以其在压缩包里的名字命名;

8.APP通过下载的文件更新信息。

在该过程的步骤中,步骤1至步骤8为一个无逻辑漏洞的应用(相当于上述实施例中的第一基准应用)在跟服务器下载压缩文件来更新数据(相当于上述实施例中的指定任务)时所执行的步骤,其中,该步骤1至步骤8构成第一基准应用执行该指定任务时需要执行的关键动作;而在该步骤1至8中,操作系统提供给开发者的步骤为步骤2、4、5,步骤2、4、5为该关键动作的一个子集,将步骤2、4、5写入一个文件中,这个文件构成上述特征文件,如果一个应用执行跟服务器下载压缩文件来更新数据的任务时,执行的关键动作中为包含上述步骤2、4、5则认为是该应用中存在逻辑漏洞。需要说明的是,上述步骤1至步骤8可以通过反编译方式来获取,当然也可以采用其他方式获取,并不限于此。

而一个待测应用只执行了上述步骤1、3、6、7,那么该待测应用执行的也是跟服务器下载压缩文件来更新数据的任务,并且该待测应用应当是存在问题的应用,由于待测应用未执行步骤2、4、5,因而该待测应用中应当存在逻辑漏洞。

需要说明的是,在对待测应用中找到逻辑漏洞之后,还需要对该待测应用中的逻辑漏洞或者待测应用进行处理。

图3是根据本申请实施例1的漏洞挖掘方法的流程图二,如图3所示,在本申请的一个实施例中,在步骤S206之后,上述方法还包括:

步骤S302,按照与逻辑漏洞对应的应用策略对逻辑漏洞或待测应用进行处理。

需要说明的是,上述应用策略可以是修复上述逻辑漏洞,也可以关闭上述待测应用,也可以卸载上述待测应用,或者更换其他的能够完成上述指定任务的其他应用来完成等,并不限于此。

为了更好的理解本发明,以下结合可选的方式对本申请实施例做进一步的解释。

本申请提供了一种可选的实施例中,包括:漏洞特征提取过程和漏洞查找过程。

该漏洞特征提取过程包括以下步骤:

步骤1,分析典型的逻辑漏洞找出其形成的关键条件;该典型的逻辑漏洞相当于实施例1中的存在逻辑漏洞的第二基准应用中存在的逻辑漏洞。具体地,通过将一个不存在逻辑漏洞的基准应用(相当于实施例1中的第一基准应用)进行反编译得到其需要执行的动作,然后将该第二基准应用执行的动作与第一基准应用执行的动作比较, 得到该关键条件,该关键条件相当于实施例1中的第一关键动作中存在但上述第二关键动作中不存在的动作。

步骤2,查找逻辑漏洞形成的原因,找出其形成的必要条件。充当该必要条件的点必须与App自身运行逻辑无关,必须是以系统函数组成的特征点。该必要条件相当于实施例1中的与操作系统有关的动作,也即实施例1中的子集中包含的所有动作。

步骤3,将必要条件记录到特征匹配文件(相当于实施例1中的特征文件)。

图4是根据本申请可选实施例提供的具体的漏洞特征提取过程的示意图,如图4所示,具体的漏洞特征提取过程可以包括以下步骤:

步骤S402,画出基准逻辑漏洞形成的数据流图(如:函数调用关系图);该基准逻辑漏洞相当于实施例1中的存在逻辑漏洞的第二基准应用中存在的该逻辑漏洞。

步骤S404,找出基准逻辑漏洞形成的必要条件(如:必须经过的系统函数),该必要条件相当于实施例1中的指定任务必须经过的系统函数;具体地,可以通过不存在该基准逻辑漏洞的第一基准应用执行任务时形成的数据流图与该基准逻辑漏洞形成的数据流图进行比较,筛选,得到该基准逻辑漏洞形成的必要条件。

步骤S406,将必要条件添加到一个文件中,形成特征匹配文件(相当于上述实施例中的特征文件)。

该漏洞查找过程包括以下步骤:

步骤1,对待测应用进行扫描时,找出待测应用中漏洞形成的关键条件,具体地,可以通过以下方式实现:将待测应用执行指定任务时所需要的关键动作与第一基准应用完成指定任务时所需要的关键动作进行比较,得到待测应用执行指定任务时未执行的动作,该未执行的动作可以称之为漏洞形成的关键条件;

步骤2,在通过数据流模块生成关键条件所经过的所有数据流;

步骤3,与本申请可选实施例中的漏洞特征提取过程中的特征文件进行匹配(相当于图2所示实施例的步骤S204);

步骤4,如果特征文件中基准逻辑漏洞形成的所有必要条件(相当于实施例1中的特征文件中子集中包含的动作以及该动作的执行顺序等)都在数据流中出现,则在该待测应用中找到该逻辑漏洞。

图5是根据本申请可选实施例提供的具体的漏洞查找过程的示意图,如图5所示,具体的漏洞查找过程可以包括以下步骤:

步骤S502,遍历待测应用中的每一条语句(即上述实施例中的关键动作)(相当于实施例1的步骤S202);

步骤S504,查找待测应用中的漏洞形成的关键条件;即将该每一条语句与第一基准应用中的每一条语句进行比较,得到待测应用未执行的语句,该未执行的语句即为漏洞形成的关键条件;

步骤S506,查找该关键条件所经过的数据流;

步骤S508,与典型逻辑漏洞抽象出的模式(相当于实施例1中的特征文件)进行匹配;如果特征文件中典型逻辑漏洞形成的所有必要条件(相当于实施例1中的特征文件中子集中包含的动作以及该动作的执行顺序等)均在该数据流中出现,则匹配成功,执行步骤S510,;否则,执行步骤S504;

步骤S510,找到漏洞,即在待测应用中存在逻辑漏洞。

本申请可选的实施例,通过对典型逻辑漏洞分析,找到该典型逻辑漏洞形成必要条件,形成匹配特征(相当于上述特征文件),采用匹配特征对未知App(相当于上述待测应用)扫描,检测该未知App中是否存在逻辑漏洞,即本申请可选的实施例采用静态挖掘的方式,实现了自动化查找未知APP中的逻辑漏洞的目的。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的自动挖掘应用程序的逻辑漏洞的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述自动挖掘应用程序的逻辑漏洞的方法的装置,图6是根据本申请实施例的漏洞挖掘装置的结构框图一,如图6所示, 该装置包括:

获取模块62,用于获取待测应用执行指定任务时所需要的关键动作;

需要说明的是,上述关键动作可以包括:待测应用执行指定任务时调用的函数,该函数可能只包括系统函数,也可能只包含非系统函数,还可能既包含系统函数也包含非系统函数,该函数包含的内容根据具体情况不同而不同,上述系统函数是指与上述逻辑漏洞对应的应用本身的运行逻辑无关的函数。指定任务可以是压缩,更新,签名等任务,但不限于此,该指定任务视情况而定。

对比模块64,与上述获取模块62连接,用于将关键动作与预先存储的特征文件进行对比;

确定模块66,与上述对比模块64连接,用于根据对比结果确定上述待测应用中是否存在逻辑漏洞;其中,上述特征文件为由不存在逻辑漏洞的第一基准应用在执行指定任务时需要执行的动作的子集组成的文件。

在本申请的一个实施例中,上述确定模块66还用于在上述对比结果指示上述关键动作中包含上述子集中所有的动作时,确定上述待测应用中不存在上述逻辑漏洞;以及,在上述对比结果指示上述关键动作中不包含上述子集中所有的动作时,确定上述待测应用中不存在逻辑漏洞。

上述装置可以粗略判断出待测应用中是否存在逻辑漏洞,但为了更加精确的判断待测应用中是否存在逻辑漏洞,在本申请的一个实施例中,上述对比模块64还用于通过判断关键动作中是否按照预定模式包含该子集中所有的动作;其中,该预定模式可以包括:上述子集中所有的动作的执行顺序,但并不限于此。通过子集中所有的动作按照预定模式存在于该子集中,上述对比模块64在进行比较时,如果关键动作中存在子集中按照预定模式存在的动作,那么可以精确判断该待测应用存在逻辑漏洞。

在该实施例中,上述对比模块64直接将关键动作与特征文件中子集中所有的动作进行对比,即不管该待测应用是否存在问题(有未执行的动作),直接检测该待测应用是否存在逻辑漏洞,即直接将关键动作与特征文件中子集中所有的动作进行对比,上述确定模块66在上述对比结果指示上述关键动作中包含上述子集中所有的动作时,确定出上述待测应用中不存在上述逻辑漏洞;以及,在上述对比结果指示上述关键动作中不包含上述子集中所有的动作时,确定出上述待测应用中存在逻辑漏洞。

例如,待测应用执行指定任务时所需要的关键动作:动作A、动作C、动作F、动作G,而特征文件中子集中包含的动作为动作B、动作D、动作E,并且执行顺序依次为动作B、动作D、动作E。在该场景下,对比模块64将该关键动作与该子集中所有 的动作进行对比,由于该关键动作中不包含动作B、动作D、动作E,此时确定模块66可以确定该待测应用中存在逻辑漏洞,如果待测应用执行指定任务时所需要的关键动作:动作A、动作B、动作C、动作D、动作E、动作F、动作G,而特征文件中子集包含的动作为动作B、动作D、动作E,并且执行顺序依次为动作D、动作B、动作E,在该场景下对比模块64将该关键动作与特征文件中的动作进行对比,尽管该关键动作中包含动作B、动作D、动作E,但是由于执行顺序是不同的,因而在该场景下,确定模块66并不能够确定该待测应用中存在逻辑漏洞,只有在该待测应用中的关键动作包含的动作B、动作D、动作E,的执行顺序与该特征文件中子集所包含的所有动作(动作B、动作D、动作E)的执行顺序相同,那么该确定模块66可以断定该待测应用中存在逻辑漏洞。

需要说明的是,该子集可以是第一基准应用在执行指定任务时必须执行的动作组成的集合;其中,上述动作包括:系统函数,其中,该系统函数与该逻辑漏洞对应的应用本身的运行逻辑无关。即上述子集可以是第一基准应用执行指定任务时必须执行的,与应用本身无关的动作组成的动作集合。

需要说明的是,该逻辑漏洞对应的应用可以是能够完成上述指定任务的应用,其并不限于第一基准应用和待测应用。

需要说明的是,在本申请中所指的动作可以是指令,也可以是步骤,但不限于此。这些动作可以由一个或者多个函数组成。

需要说明的是,该系统函数是操作系统提供给开发者的,因而其只与操作系统有关系,而与操作系统中各应用本身的运行逻辑没有关系。

上述操作系统可以是windows系统、linux系统、安卓系统、ios系统等,但不限于此。

图7是根据本申请实施例的漏洞挖掘装置的结构框图二,如图7所示,上述装置还包括:特征提取模块72,与上述对比模块64连接,用于获取上述特征文件。

需要说明的是,上述特征提取模块72还包括:第一获取单元722,用于获取第一基准应用执行指定任务时所需要的第一关键动作;第二获取单元724,用于获取存在逻辑漏洞的第二基准应用执行指定任务的第二关键动作;比较单元726,与上述第一获取单元722和上述第二获取单元724连接,用于比较第一关键动作与第二关键动作,得到比较结果,其中,比较结果为第一关键动作中存在但第二关键动作中不存在的动作;查找单元728,与上述比较单元726连接,用于在比较结果中,查找与操作系统有关的动作;记录单元730,与上述查找单元728连接,用于将查找到的与该操作系 统有关的动作组成的集合作为上述子集记录到文件中,得到上述特征文件。

需要说明的是,上述子集为将第一关键动作中存在但第二关键动作中不存在的动作中,与操作系统有关的动作的集合,因而,上述子集既可以表示为不存在逻辑漏洞的第一基准应用执行指定任务时需要执行的动作组成的集合的一个子集;也可以表示为存在逻辑漏洞的第二基准应用执行指定任务时未执行的动作组成的集合的一个子集。上述第一基准应用和第二基准应用可以是同一类型的应用,也可以是不同类型的应用,但是两者能够执行相同的指定任务。

通过上述特征提取模块72实现了对第二基准应用的该逻辑漏洞进行抽象,采用抽象后的特征去查找其他待测应用中是否存在该逻辑漏洞的目的,并且,上述特征文件可以通过第二基准应用的逻辑漏洞即典型的逻辑漏洞形成时所执行的与操作系统有关的动作组成的,即上述特征文件可以是通过将一个存在逻辑漏洞的基准应用在执行应用时未执行的与操作系统有关的动作记录在一个特征文件中,将该特征文件作为基准,去扫描其它的待测应用,进而实现了自动挖掘未知应用(即待测应用)中的逻辑漏洞。

在本申请的一个实施例中,上述第一获取单元722,还可以用于获取不存在逻辑漏洞的基准应用执行指定任务时所形成的第一数据流图;上述第二获取单元724,还可以用于获取存在该逻辑漏洞的第二基准应用执行指定任务时所形成的第二数据流图,其中,该第一数据流图和第二数据流图可以是函数调用关系图;上述比较单元726还可以用于将第一数据流图对应的函数调用关系图与第二数据流图对应的函数调用关系图比较,得到比较结果;上述查找单元728还用于在比较结果中,找到完成该指定任务必须经过的系统函数。该系统函数不仅包含系统函数本身,还包括系统函数之间的路径关系等,并不限于此。上述记录单元730还可以用于将这些系统函数被记录到特征匹配文件中,形成上述的特征文件。

需要说明的是,上述特征文件可以根据需要进行灵活设定,比如,如果第一关键动作存在但第二关键动作中不存在的动作为动作1、动作2和动作3;并且执行的顺序为先执行动作1,再执行动作2,最后再执行动作3,在不需要进行精确扫描逻辑漏洞的情况下,可以只将动作1和动作2写入特征文件中,如果要精确一点,则可以将动作1、动作2和动作3都写入特征文件中,但执行顺序并不写入该特征文件中,如果要求比较苛刻,那么不仅将动作1、动作2、动作3写入特征文件中,还要将执行顺序记录在特征文件中。但是,如果特征文件一旦形成,则应当严格按照特征文件中记录的内容对待测应用进行扫描。

上述装置通过静态挖掘的方式,例如通过装置中的对比模块64将待测应用执行指定任务时所需要的关键动作与预先存储的由不存在上述逻辑漏洞的第一基准应用在执 行上述指定任务时需要执行的动作的子集组成的特征文件进行对比的技术手段,实现了自动查找待测应用中的逻辑漏洞的目的,从而实现了快速挖掘逻辑漏洞的技术效果,进而解决了采用人工挖掘逻辑漏洞方式导致的漏洞挖掘效率低的技术问题。

以一个不存在逻辑漏洞的应用定期和服务器通信,通过服务器下载一个压缩文件,来更新该应用的数据为例,完成该过程所执行的步骤如下:

1.通过http连接到服务器;

2.验证连接的服务器的合法性;

3.从服务器下载一个压缩包;

4.对下载的压缩包进行校验判断其合法性;

5.下载完成后,判断压缩包里的文件名是否含有“..”等非法字符;

6.如果没有则对压缩包进行解压;

7.解压后的文件都以其在压缩包里的名字命名;

8.APP通过下载的文件更新信息。

在该过程的步骤中,步骤1至步骤8为一个无逻辑漏洞的应用(相当于上述实施例中的第一基准应用)在跟服务器下载压缩文件来更新数据(相当于上述实施例中的指定任务)时所执行的步骤,其中,该步骤1至步骤8构成第一基准应用执行该指定任务时需要执行的关键动作;而在该步骤1至8中,操作系统提供给开发者的步骤为步骤2、4、5,步骤2、4、5为该关键动作的一个子集,将步骤2、4、5写入一个文件中,这个文件构成上述特征文件。这些步骤可以通过反编译方式获取,当然也可以其他方式获取,并不限于此。

上述特征提取模块72可以实现对上述步骤1至步骤8的解析,得到包含步骤2、4、5的特征文件。

而一个待测应用只执行了上述步骤1、3、6、7,该待测应用执行上述步骤1、3、6、7的分析的过程可以由上述装置中的获取模块62完成。将步骤1、3、6、7与包含步骤2、4、5的特征文件进行对比,该对比的过程可以由上述装置中的对比模块64来完成,由于步骤1、3、6、7不存在步骤2、4、5,因而该对比模块64对比的结果是该待测应用中存在逻辑漏洞。

需要说明的是,在对待测应用中找到逻辑漏洞之后,还需要对该待测应用中的逻辑漏洞或者待测应用进行处理。图8是根据本申请实施例的漏洞挖掘装置的结构框图 三,如图8所示,上述装置还包括:处理模块82,与上述确定模块66连接,用于按照与逻辑漏洞对应的应用策略对逻辑漏洞或待测应用进行处理。

需要说明的是,上述应用策略可以是修复上述逻辑漏洞,也可以关闭上述待测应用,也可以卸载上述待测应用,或者更换其他的能够完成上述指定任务的其他应用来完成等,并不限于此。

实施例3

本发明的实施例可以提供一种计算机终端,该计算机终端可以是计算机终端群中的任意一个计算机终端设备。可选地,在本实施例中,上述计算机终端也可以替换为移动终端等终端设备。

可选地,在本实施例中,上述计算机终端可以位于计算机网络的多个网络设备中的至少一个网络设备。

在本实施例中,上述计算机终端可以执行漏洞挖掘方法中以下步骤的程序代码:获取待测应用执行指定任务时所需要的关键动作;将关键动作与预先存储的特征文件进行对比;以及根据对比结果确定待测应用中是否存在逻辑漏洞;其中,特征文件为由不存在逻辑漏洞的第一基准应用在执行指定任务时需要执行的动作的子集组成的文件。

可选地,图9是根据本发明实施例的一种计算机终端的结构框图。如图9所示,该计算机终端A可以包括:一个或多个(图中仅示出一个)处理器902、存储器904、以及传输模块906。

其中,存储器904可用于存储软件程序以及模块,如本发明实施例中的漏洞挖掘方法和装置对应的程序指令/模块,处理器902通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的漏洞挖掘方法。存储器904可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器904可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至终端A。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

处理器902可以通过传输模块906调用存储器904存储的信息及应用程序,以执行下述步骤:获取待测应用执行指定任务时所需要的关键动作;将关键动作与预先存储的特征文件进行对比;以及根据对比结果确定待测应用中是否存在逻辑漏洞;其中,特征文件为由不存在逻辑漏洞的第一基准应用在执行指定任务时需要执行的动作的子集组成的文件。

可选的,上述处理器902还可以执行如下步骤的程序代码:按照与逻辑漏洞对应的应用策略对逻辑漏洞或待测应用进行处理。

采用本发明实施例,提供了一种漏洞挖掘方法的方案。采用将待测应用执行指定任务时所需要的关键动作与预先存储的由不存在上述逻辑漏洞的第一基准应用在执行上述指定任务时需要执行的动作的子集组成的特征文件进行对比的技术手段,实现了通过静态挖掘的方式自动查找待测应用中的逻辑漏洞的目的,从而实现了快速挖掘逻辑漏洞的技术效果,进而解决了采用人工挖掘逻辑漏洞方式导致的漏洞挖掘效率低的技术问题。

本领域普通技术人员可以理解,图9所示的结构仅为示意,计算机终端也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图9其并不对上述电子装置的结构造成限定。例如,计算机终端A还可包括比图9中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图9所示不同的配置。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。

实施例4

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例1所提供的自动挖掘应用程序的逻辑漏洞的方法所执行的程序代码。

可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取待测应用执行指定任务时所需要的关键动作;将关键动作与预先存储的特征文件进行对比;以及根据对比结果确定待测应用中是否存在逻辑漏洞;其中,特征文件为由不存在上述逻辑漏洞的第一基准应用在执行上述指定任务时需要执行的动作的子集组成的文件。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有 详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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