漏洞检测方法及装置的制造方法

文档序号:9452986阅读:300来源:国知局
漏洞检测方法及装置的制造方法
【技术领域】
[0001]本发明涉及应用程序测试领域,具体而言,涉及一种漏洞检测方法及装置。
【背景技术】
[0002]目前业界所使用的自动化漏洞挖掘系统,按照挖掘思路的不同,大体上可以分为两种类型:白盒漏洞挖掘和黑盒漏洞挖掘,其中,上述的白盒漏洞挖掘具体指从待测试产品的源代码出发,尝试理解其语义和逻辑,然后根据准备好的漏洞规则对这些语义和逻辑进行扫描,以求找到漏洞;而黑盒漏洞挖掘则是把待测试产品当成一个黑盒子,向黑盒子的外部接口填充大量测试用例,然后观察黑盒子在处理这些测试用例时的表现,确定漏洞。
[0003]现有技术中相比白盒挖掘,黑盒挖掘更简单、更直接,在现有技术中进行漏洞挖掘时使用更为广泛。
[0004]具体地,在黑盒漏洞挖掘中,如果发现黑盒子的表现异常(如产品崩溃等),则将这个测试用例提出来做更细致的分析(甚至可以是人工分析),根据分析得到的异常原因找到漏洞。
[0005]采用现有技术中的黑盒漏洞挖掘只有在待测试产品发生顶层危险行为(即可以直接监测到的产品发生的异常现象,如产品崩溃)的情况下,才会分析产生该异常行为的原因;并且导致产品发生异常的原因很多样化,可能会有安全漏洞的原因,也可能没有安全漏洞的原因。在产品发生异常之后,自动或者手动分析发生异常的原因时,由于可能的原因很多,很难确定产品异常的是否是由漏洞导致的;并且在确定是由安全漏洞导致的异常的情况下,也无法准确识别漏洞。
[0006]针对上述的黑盒漏洞挖掘方法对漏洞的检测不准确的问题,目前尚未提出有效的解决方案。

【发明内容】

[0007]本发明实施例提供了一种漏洞检测方法及装置,以至少解决现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确的问题。
[0008]根据本发明实施例的一个方面,提供了一种漏洞检测方法,该方法包括:漏洞检测方法,其特征在于,包括:将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域;获取在运行待检测应用时所执行的操作指令;判断操作指令所操作的存储区域中是否包括非法操作区域;若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
[0009]根据本发明实施例的另一方面,还提供了一种漏洞检测装置,该装置包括:标记模块,用于将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域;指令获取模块,用于获取在运行待检测应用时所执行的操作指令;区域判断模块,用于判断操作指令所操作的存储区域中是否包括非法操作区域;漏洞检测模块,用于若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
[0010]在本发明实施例中,采用本发明实施例,通过操作指令所操作的存储区域确定操作指令是否存在漏洞,对待检测应用执行的操作具有很强的针对性,而不是现有技术中的在挖掘漏洞过程中监测到产品崩溃才发现待检测应用存在漏洞。具体地,本发明实施例是从待检测应用执行的操作出发,通过跟踪待检测应用运行时的整个过程中的各个操作,通过判断操作中是否存在漏洞来挖掘待检测应用中的漏洞,能够给主动分析漏洞,实时性强,而不是现有技术中被动地等待产品发生顶层危险行为。解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确、漏洞挖掘滞后的问题,实现了实时准确地检测待检测应用的漏洞的效果。
【附图说明】
[0011]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0012]图1是根据本发明实施例的一种漏洞检测方法的流程图;
[0013]图2是根据本发明实施例的一种获取操作指令的流程图;
[0014]图3是根据本发明实施例的一种可选的漏洞检测方法的流程图;
[0015]图4是根据本发明实施例的另一种可选的漏洞检测方法的流程图;
[0016]图5是根据本发明实施例的一种漏洞检测装置的结构示意图;以及
[0017]图6是根据本发明实施例的一种终端的结构框图。
【具体实施方式】
[0018]为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0019]需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0020]实施例1
[0021 ] 根据本发明实施例,提供了一种漏洞检测方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0022]根据本发明实施例,提供了一种漏洞检测方法,如图1所示,该检测方法可以通过如下步骤实现:
[0023]步骤S102:将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域。
[0024]步骤S104:获取在运行待检测应用时所执行的操作指令。
[0025]步骤S106:判断操作指令所操作的存储区域中是否包括非法操作区域。
[0026]步骤S108:若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
[0027]在判断操作指令所操作的存储区域中是否包括已标识为非法的非法操作区域之后,该方法还包括:若操作指令所操作的存储区域中不包括非法操作区域,则检测出操作指令不存在漏洞,则继续判断下一条操作指令,直至将运行待检测应用时所执行的所有操作指令均检测完成,以完成对整个待检测应用的检测。
[0028]采用本发明实施例,通过操作指令所操作的存储区域确定操作指令是否存在漏洞,对待检测应用执行的操作具有很强的针对性,而不是现有技术中的在挖掘漏洞过程中监测到产品崩溃才发现待检测应用存在漏洞。具体地,本发明实施例是从待检测应用执行的操作出发,通过跟踪待检测应用运行时的整个过程中的各个操作,通过判断操作中是否存在漏洞来挖掘待检测应用中的漏洞,能够给主动分析漏洞,实时性强,而不是现有技术中被动地等待产品发生顶层危险行为。解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确、漏洞挖掘滞后的问题,实现了实时准确地检测待检测应用的漏洞的效果。
[0029]其中,本发明实施例中可以将所有的外部输入数据(如网络包,外部文件,用户输入的内容)标记为污染源(即非法数据源),因为外部输入数据是不可信的,是可以被黑客控制的数据。然后将待检测应用对非法数据源执行存储操作时使用的区域(即待检测应用对非法数据源执行操作时的全部路径)均标记为非法的非法操作区域。
[0030]具体地,上述实施例中S102获取在运行所述待检测应用时所执行的操作指令可以通过如下步骤实现:在所述待检测应用上执行测试用例;获取所述检测应用执行所述测试用例时的运行指令,其中,所述运行指令为汇编指令;将所述运行指令转换为所述操作指令,其中,所述操作指令为使用中间语言描述的指令,所述中间语言为应用于抽象机器的编程语目。
[0031]具体地,如图2所示,本发明实施例可以通过如下步骤实现:
[0032]步骤S202:在待检测应用上执行测试用例。
[0033]其中,本发明实施例中的测试用例指:为某个安全漏洞挖掘目标而编制(如预先设置好)的一组测试输入、执行条件以及预期结果,以便测试待测试产品的代码路径或核实是否满足某个特定需求的字符串或数据包。
[0034]上述实施例中的测试用例可以为在开始进行漏洞挖掘前,预先设置好的一些固定的基准测试用例,该测试用例可以作为后续的运行逻辑、指令获取的来源。
[0035]步骤S204:获取待检测应用执行测试用例时的运行指令。
[0036]具体地,可以获取待检测应用执行测试用例时的运行逻辑,在获取运行逻辑之后获取对应的运行指令。运行逻辑也可以理解为约束集合,由待测试产品(即上述实施例中的待检测应用)中的所有约束所组成的一个集合,它代表着待检测应用的逻辑组织结构。
[0037]步骤S206:将运行指令翻译简化成中间指令。
[0038]其中,中间指令可以是使用中间语言描述的指令,在该实施例中的中间指令即为上述实施例中的操作指令。中间语言指一种应用于抽象机器(abstract machine)的编程语言,它设计的目的,是用来帮助我们简化对程序的分析,也即通过执行该步骤可以简化分析测试用例中的运行逻辑。
[0039]具体地,通过定义中间语言的方法,将待测试产品(即上述实施例中的待检测应用)的运行过程中的100多种传统X86汇编指令通过指令翻译,缩简成仅包含10多种指令的中间指令,大大降低接下来对操作指令的分析的逻辑复杂度。
[0040]例如,三条传统的x86汇报指令:
[0041]mov eax,O
[0042]mov ebx, I
[0043]add eax, ebx+8
[0044]经过指令翻译成中间语言后,简化成如下中间指令:
[0045]vl = O
[0046]v2 = I
[0047]V 3 = v2+8
[0048]v4 = vl+v3
[0049]经过简化,对于漏洞分析而言,中间语言较x86汇编语言存在以下优点:采用虚拟寄存器(vl-vlOO),仅有10余条指令,抛弃长度、编码等复杂cpu细节;每条指令都是三元组表达式,每条指令所做的行为都是单一的;可以大大简化分析待测产品运行时操作指令(即上述是实施例中的中间指令)的难度。
[0050]下面以微信为例,详细介绍本发明。
[0051]在微信上执行测试用例,并获取微信(即上述实施例中的待检测应用)执行测试用例的执行逻辑(即上述实施例中的运行逻辑),在得到执行逻辑之后,将与执行逻辑对应的运行指令简化为中间指令,然后判断该中间指令操作的存储区域中是否包括已经标记为非法操作区域的区域,如果该中间操作指令的存储区域中包括已经标记为非法操作区域的区域,则检测出该中间指令存在漏
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1