CN105204985A - 漏洞检测方法及装置 - Google Patents
漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN105204985A CN105204985A CN201410283564.0A CN201410283564A CN105204985A CN 105204985 A CN105204985 A CN 105204985A CN 201410283564 A CN201410283564 A CN 201410283564A CN 105204985 A CN105204985 A CN 105204985A
- Authority
- CN
- China
- Prior art keywords
- region
- operational order
- detected
- illegal operation
- application
- 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.)
- Pending
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种漏洞检测方法及装置。其中,该方法包括:将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域;获取在运行待检测应用时所执行的操作指令;判断操作指令所操作的存储区域中是否包括已标识为非法的非法操作区域;若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。采用本发明,解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确的问题,实现了实时准确地检测待检测应用的漏洞的效果。
Description
技术领域
本发明涉及应用程序测试领域,具体而言,涉及一种漏洞检测方法及装置。
背景技术
目前业界所使用的自动化漏洞挖掘系统,按照挖掘思路的不同,大体上可以分为两种类型:白盒漏洞挖掘和黑盒漏洞挖掘,其中,上述的白盒漏洞挖掘具体指从待测试产品的源代码出发,尝试理解其语义和逻辑,然后根据准备好的漏洞规则对这些语义和逻辑进行扫描,以求找到漏洞;而黑盒漏洞挖掘则是把待测试产品当成一个黑盒子,向黑盒子的外部接口填充大量测试用例,然后观察黑盒子在处理这些测试用例时的表现,确定漏洞。
现有技术中相比白盒挖掘,黑盒挖掘更简单、更直接,在现有技术中进行漏洞挖掘时使用更为广泛。
具体地,在黑盒漏洞挖掘中,如果发现黑盒子的表现异常(如产品崩溃等),则将这个测试用例提出来做更细致的分析(甚至可以是人工分析),根据分析得到的异常原因找到漏洞。
采用现有技术中的黑盒漏洞挖掘只有在待测试产品发生顶层危险行为(即可以直接监测到的产品发生的异常现象,如产品崩溃)的情况下,才会分析产生该异常行为的原因;并且导致产品发生异常的原因很多样化,可能会有安全漏洞的原因,也可能没有安全漏洞的原因。在产品发生异常之后,自动或者手动分析发生异常的原因时,由于可能的原因很多,很难确定产品异常的是否是由漏洞导致的;并且在确定是由安全漏洞导致的异常的情况下,也无法准确识别漏洞。
针对上述的黑盒漏洞挖掘方法对漏洞的检测不准确的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种漏洞检测方法及装置,以至少解决现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确的问题。
根据本发明实施例的一个方面,提供了一种漏洞检测方法,该方法包括:漏洞检测方法,其特征在于,包括:将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域;获取在运行待检测应用时所执行的操作指令;判断操作指令所操作的存储区域中是否包括非法操作区域;若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
根据本发明实施例的另一方面,还提供了一种漏洞检测装置,该装置包括:标记模块,用于将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域;指令获取模块,用于获取在运行待检测应用时所执行的操作指令;区域判断模块,用于判断操作指令所操作的存储区域中是否包括非法操作区域;漏洞检测模块,用于若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
在本发明实施例中,采用本发明实施例,通过操作指令所操作的存储区域确定操作指令是否存在漏洞,对待检测应用执行的操作具有很强的针对性,而不是现有技术中的在挖掘漏洞过程中监测到产品崩溃才发现待检测应用存在漏洞。具体地,本发明实施例是从待检测应用执行的操作出发,通过跟踪待检测应用运行时的整个过程中的各个操作,通过判断操作中是否存在漏洞来挖掘待检测应用中的漏洞,能够给主动分析漏洞,实时性强,而不是现有技术中被动地等待产品发生顶层危险行为。解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确、漏洞挖掘滞后的问题,实现了实时准确地检测待检测应用的漏洞的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种漏洞检测方法的流程图;
图2是根据本发明实施例的一种获取操作指令的流程图;
图3是根据本发明实施例的一种可选的漏洞检测方法的流程图;
图4是根据本发明实施例的另一种可选的漏洞检测方法的流程图;
图5是根据本发明实施例的一种漏洞检测装置的结构示意图;以及
图6是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种漏洞检测方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,提供了一种漏洞检测方法,如图1所示,该检测方法可以通过如下步骤实现:
步骤S102:将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域。
步骤S104:获取在运行待检测应用时所执行的操作指令。
步骤S106:判断操作指令所操作的存储区域中是否包括非法操作区域。
步骤S108:若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
在判断操作指令所操作的存储区域中是否包括已标识为非法的非法操作区域之后,该方法还包括:若操作指令所操作的存储区域中不包括非法操作区域,则检测出操作指令不存在漏洞,则继续判断下一条操作指令,直至将运行待检测应用时所执行的所有操作指令均检测完成,以完成对整个待检测应用的检测。
采用本发明实施例,通过操作指令所操作的存储区域确定操作指令是否存在漏洞,对待检测应用执行的操作具有很强的针对性,而不是现有技术中的在挖掘漏洞过程中监测到产品崩溃才发现待检测应用存在漏洞。具体地,本发明实施例是从待检测应用执行的操作出发,通过跟踪待检测应用运行时的整个过程中的各个操作,通过判断操作中是否存在漏洞来挖掘待检测应用中的漏洞,能够给主动分析漏洞,实时性强,而不是现有技术中被动地等待产品发生顶层危险行为。解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确、漏洞挖掘滞后的问题,实现了实时准确地检测待检测应用的漏洞的效果。
其中,本发明实施例中可以将所有的外部输入数据(如网络包,外部文件,用户输入的内容)标记为污染源(即非法数据源),因为外部输入数据是不可信的,是可以被黑客控制的数据。然后将待检测应用对非法数据源执行存储操作时使用的区域(即待检测应用对非法数据源执行操作时的全部路径)均标记为非法的非法操作区域。
具体地,上述实施例中S102获取在运行所述待检测应用时所执行的操作指令可以通过如下步骤实现:在所述待检测应用上执行测试用例;获取所述检测应用执行所述测试用例时的运行指令,其中,所述运行指令为汇编指令;将所述运行指令转换为所述操作指令,其中,所述操作指令为使用中间语言描述的指令,所述中间语言为应用于抽象机器的编程语言。
具体地,如图2所示,本发明实施例可以通过如下步骤实现:
步骤S202:在待检测应用上执行测试用例。
其中,本发明实施例中的测试用例指:为某个安全漏洞挖掘目标而编制(如预先设置好)的一组测试输入、执行条件以及预期结果,以便测试待测试产品的代码路径或核实是否满足某个特定需求的字符串或数据包。
上述实施例中的测试用例可以为在开始进行漏洞挖掘前,预先设置好的一些固定的基准测试用例,该测试用例可以作为后续的运行逻辑、指令获取的来源。
步骤S204:获取待检测应用执行测试用例时的运行指令。
具体地,可以获取待检测应用执行测试用例时的运行逻辑,在获取运行逻辑之后获取对应的运行指令。运行逻辑也可以理解为约束集合,由待测试产品(即上述实施例中的待检测应用)中的所有约束所组成的一个集合,它代表着待检测应用的逻辑组织结构。
步骤S206:将运行指令翻译简化成中间指令。
其中,中间指令可以是使用中间语言描述的指令,在该实施例中的中间指令即为上述实施例中的操作指令。中间语言指一种应用于抽象机器(abstractmachine)的编程语言,它设计的目的,是用来帮助我们简化对程序的分析,也即通过执行该步骤可以简化分析测试用例中的运行逻辑。
具体地,通过定义中间语言的方法,将待测试产品(即上述实施例中的待检测应用)的运行过程中的100多种传统x86汇编指令通过指令翻译,缩简成仅包含10多种指令的中间指令,大大降低接下来对操作指令的分析的逻辑复杂度。
例如,三条传统的x86汇报指令:
moveax,0
movebx,1
addeax,ebx+8
经过指令翻译成中间语言后,简化成如下中间指令:
v1=0
v2=1
v3=v2+8
v4=v1+v3
经过简化,对于漏洞分析而言,中间语言较x86汇编语言存在以下优点:采用虚拟寄存器(v1-v100),仅有10余条指令,抛弃长度、编码等复杂cpu细节;每条指令都是三元组表达式,每条指令所做的行为都是单一的;可以大大简化分析待测产品运行时操作指令(即上述是实施例中的中间指令)的难度。
下面以微信为例,详细介绍本发明。
在微信上执行测试用例,并获取微信(即上述实施例中的待检测应用)执行测试用例的执行逻辑(即上述实施例中的运行逻辑),在得到执行逻辑之后,将与执行逻辑对应的运行指令简化为中间指令,然后判断该中间指令操作的存储区域中是否包括已经标记为非法操作区域的区域,如果该中间操作指令的存储区域中包括已经标记为非法操作区域的区域,则检测出该中间指令存在漏洞;如果该中间操作指令的存储区域中不包括已经标记为非法操作区域的区域,则检测出该中间指令不存在漏洞。
在本发明的上述实施例中,判断操作指令所操作的存储区域中是否包括非法操作区域可以包括:检测操作指令的操作对象所在的存储区域中是否包括存在非法操作标识的区域;若检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域,则判断出操作指令所操作的存储区域中包括非法操作区域。
其中,非法操作区域可以使用非法操作标识来标识,通过判断某个区域是否使用非法操作标识来判断该区域是否为非法操作区域。
具体地,如果该区域中存在非法操作标识则判断出该区域为非法操作区域;如果该区域中不存在非法操作标识则判断出该区域不为非法操作区域。
具体到上述实施例中,可以通过图3所示的步骤实现:
步骤S302:获取在运行待检测应用时所执行的操作指令。
该步骤与上述实施例中的步骤S102的实现方法一致,在此不再赘述。
步骤S304:检测操作指令的操作对象所在的存储区域中是否包括存在非法操作标识的区域。
其中,若检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域,则执行步骤S306;若检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域,则执行步骤S308。
步骤S306:判断出操作指令所操作的存储区域中包括非法操作区域。
步骤S306:判断出操作指令所操作的存储区域中不包括非法操作区域。
步骤S310:检测出操作指令存在漏洞。
步骤S312:检测出操作指令不存在漏洞。
在本发明一个可选的实施例中,检测操作指令的操作对象所在的存储区域中是否包括存在非法操作标识的区域可以包括:在操作指令为将操作对象从源区域复制至第一目标区域的指令的情况下,检测源区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若源区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域。
其中,操作指令可以为将操作对象从源区域复制至第一目标区域的指令,如memcpy函数、strcpy函数,在获取到的操作指令为将操作对象从源区域复制至第一目标区域的指令的情况下,通过检测源区域中是否包括非法操作区域来判断该操作指令是否为存在漏洞的指令。
具体地,可以检测源区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若源区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域;若源区域对应的运行待检测应用的系统的寄存区域中不包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中不包括存在非法操作标识的区域。
其中,strcpy函数为C语言标准库函数,把从src(source的简写,源)地址(即源地址)开始且含有null(空格)结束符的字符串复制到以dest开始的地址中去;memcpy函数从源地址所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。其中的源地址所述的内存地址即为上述的源区域,目标地址dest所指的内存地址即为上述的第一目标区域。
在本发明的上述实施例中,可以预先定义一些操作指令为危险指令,如调用上述的strcpy函数,就属于危险指令的操作指令与预定义的危险行为策略逐个进行匹配,如果该操作指令(如条微信行为)与预定义的危险行为策略匹配成功,就认为待检测应用在此处的危险行为(即上述实施例中的操作指令)可以导致漏洞。
下面以调用strcpy函数的操作指令为例,详细介绍本发明。
当获取到得在运行待检测应用时所执行的操作指令为调用strcpy函数的指令的情况下,也即运行待检测应用执行的流程进入危险行为区域(在本发明的该实施例中将要调用的strcpy的函数定义为危险函数。获取调用strcpy函数的源区域,检测源区域中是否包括已标记为非法的非法操作区域,如果源区域中包括已标记为非法的非法操作区域,则确定该函数调用的指令是可以导致漏洞的指令。如果源区域中不包括已标记为非法的非法操作区域,则确定该函数调用的指令不是可以导致漏洞的指令。
在确定该函数调用的指令是可以导致漏洞的指令之后,记录该指令,并生成漏洞报告。
在本发明上述实施例中,strcpy函数(目标缓冲区,源缓冲区,其中,的源缓冲区即上述实施例中的源区域)是危险的字符串处理函数,由于使用不小心可能导致缓冲区溢出漏洞进而被利用种植病毒木马。当源缓冲区被外部污染(或者可以理解为直接来自外部输入),而目标缓冲区的大小固定时,只要不停的扩大源缓冲区(如扩大源缓冲区的字符串的长度),就能导致目标缓冲区因为大小不够而被溢出,这就是一种典型的漏洞场景。针对这个漏洞场景,在本发明的上述实施例中,当程序执行到strcpy等同类的缓冲区拷贝函数时,它会分别检测源缓冲区和目标缓冲区,如果发现源缓冲区被污染(即源缓冲区中是否包括非法操作区域),且目标缓冲区是固定大小的,则确定该操作指令会触发漏洞逻辑并把这个漏洞的信息(即该操作指令)记录下来。
可选地,在该实施例中,可以单单检测源缓冲区是否被污染(即源缓冲区中是否包括非法操作区域)即可实现对操作指令的漏洞判断。
在本发明另一种可选的实施例中,检测操作指令的操作对象所在的存储区域中是否包括存在非法操作标识的区域可以包括:在操作指令为将操作对象存储至第二目标区域的指令的情况下,检测第二目标区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若第二目标区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域。
其中,操作指令可以为将操作对象存储至第二目标区域的指令,如call函数、jmp函数,在获取到的操作指令为将操作对象存储至第二目标区域的指令的情况下,通过检测第二目标区域中是否包括非法操作区域来判断该操作指令是否为存在漏洞的指令。
具体地,可以检测第二目标区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若第二目标区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域;若第二目标区域对应的运行待检测应用的系统的寄存区域中不包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中不包括存在非法操作标识的区域。
其中,call/jmp函数是执行流程跳转的函数。
在本发明的上述实施例中,可以预先定义一些操作指令为危险指令,如调用上述的call/jmp函数,就属于危险指令的操作指令与预定义的危险行为策略逐个进行匹配,如果该操作指令(如条微信行为)与预定义的危险行为策略匹配成功,就认为待检测应用在此处的危险行为(即上述实施例中的操作指令)可以导致漏洞。
下面以调用call函数的操作指令为例,详细介绍本发明。
当获取到得在运行待检测应用时所执行的操作指令为调用call函数的指令的情况下,也即运行待检测应用执行的流程进入危险行为区域(在本发明的该实施例中将要调用的call函数定义为危险函数。获取调用call函数的指令指示的存储操作对象的第二目标区域,检测第二目标区域中是否包括已标记为非法的非法操作区域,如果第二目标区域中包括已标记为非法的非法操作区域,则确定该函数调用的指令是可以导致漏洞的指令。如果第二目标区域中不包括已标记为非法的非法操作区域,则确定该函数调用的指令不是可以导致漏洞的指令。
在确定该函数调用的指令是可以导致漏洞的指令之后,记录该指令,并生成漏洞报告。
根据本发明的上述实施例,在检测出操作指令存在漏洞之后,漏洞检测方法包括:上报操作指令和漏洞。
在待检测应用中执行测试用例的过程中,可以获取测试用例中的每条运行指令(即x86汇编语句),将运行指令翻译成中间语言后的执行语义(即上述实施例中的中间指令)。跟踪该指令是否将污染数据(即上述实施例中的非法数据源)传给运行待检测应用的系统的x86寄存器,将该寄存器标记为被污染的存储区域(即上述实施例中的非法操作区域),因为它被外部污染数据(即上述实施例中的非法数据源)传染了;类似的,如果这条语句(即上述实施例中的中间指令)有内存操作并且源操作内存是污染的,那么我们也会标记目标内存区域为污染区域(即上述实施例中的非法操作区域)。
在该实施例中通过污点传播的思路,来精确的定位危险行为(即存在漏洞的操作指令)。
其中,污点传播即通过定义一个污染源(可以为上述实施例中的非法数据源),并在随后程序(可以为上述的待检测应用)的执行过程中,根据程序的实际逻辑,将污染源逐步传染到计算机内存和其他存储区域的过程。
在本发明的上述实施例中,通过跟踪待测试产品(即待检测应用)的运行的整个过程中的各个操作指令,先将执行流程中的执行指令使用中间语言进行简化得到中间指令,然后通过污点传播的思想,真实模拟待测试产品运行过程中污污染源(即上述实施例中的非法数据源)一步一步传播在执行待检测应用的系统的寄存区域的全过程,将被污染的区域全部标记出来,通过判断操作指令是否触发预定义的危险行为来进行漏洞判断,具体地,通过判断操作指令操作的存储区域是否包括污染区域来判断。通过上述实施例,可以主动分析在运行待检测应用时是否发生危险行为,不像传统的黑盒挖掘漏洞思路那样,过滤掉大量的有效信息,被动的等待顶层危险行为的发生,从而可以及时准确有效地确定待检测应用中的漏洞。
需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。
下面结合图4详细介绍本发明。如图4所示,本发明可以通过如下步骤实现:
步骤S401:在待检测应用上执行测试用例。
具体地,可以在开始进行漏洞检测之前,准备一些基准的测试用例,作为后续第一次执行、监控、翻译、危险行为匹配的污点输入来源。
步骤S402:获取待检测应用执行测试用例时的运行指令。
具体地,在漏洞检测开始后,运行待检测应用的系统可以将测试用例提交到待测试程序。然后监控待检测应用执行测试用例的每一个步骤,记录下测试信息用于后续中间指令翻译和模拟污染传播的过程。其中,测试信息包括测试逻辑和测试指令(即上述实施例中的运行指令)。
步骤S403:将运行指令翻译简化成中间指令。
其中,中间指令可以是使用中间语言描述的指令,在该实施例中的中间指令即为上述实施例中的操作指令。中间语言指一种应用于抽象机器(abstractmachine)的编程语言,它设计的目的,是用来帮助我们简化对程序的分析,也即通过执行该步骤可以简化分析测试用例中的运行逻辑。
具体地,通过定义中间语言的方法,将待测试产品(即上述实施例中的待检测应用)的运行过程中的100多种传统x86汇编指令通过指令翻译,缩简成仅包含10多种指令的中间指令,大大降低接下来对操作指令的分析的逻辑复杂度。
步骤S404:将待检测应用执行对已标记为非法的非法数据源的存储操作时使用的区域标记为非法操作区域。
通过该步骤可以模拟污染传播的执行。具体地,可以将所有的外部输入数据(如网络包,外部文件,用户输入的内容)标记为污染源(即非法数据源),因为外部输入数据是不可信的,是可以被黑客控制的数据。
其中,上述的模拟执行:即为不在真实的CPU中,而在抽象的虚拟机环境中,通过模拟真实CPU执行指令的过程,来虚拟的执行CPU指令的过程。
在待检测应用中执行测试用例的过程中,可以获取测试用例中的每条运行指令(即x86汇编语句),将运行指令翻译成中间语言后的执行语义(即上述实施例中的中间指令)。跟踪该指令是否将污染数据(即上述实施例中的非法数据源)传给运行待检测应用的系统的x86寄存器,将该寄存器标记为被污染的存储区域(即上述实施例中的非法操作区域),因为它被外部污染数据(即上述实施例中的非法数据源)传染了;类似的,如果这条语句(即上述实施例中的中间指令)有内存操作并且源操作内存是污染的,那么我们也会标记目标内存区域为污染区域(即上述实施例中的非法操作区域)。
步骤S405:判断操作指令所操作的存储区域中是否包括已标识为非法的非法操作区域。
其中,在操作指令所操作的存储区域中包括非法操作区域的情况下,执行步骤S406;在操作指令所操作的存储区域中不包括非法操作区域的情况下,执行步骤S407。
该步骤的实现方法与上述实施例中的步骤S104的实现方法一致,在此不再赘述。
步骤S406:检测出操作指令存在漏洞。
步骤S407:检测出操作指令不存在漏洞。
在执行完上述步骤之后,继续判断下一条操作指令,直至将运行待检测应用时所执行的所有操作指令均检测完成,以完成对整个待检测应用的检测。
通过本发明的上述实施例,较传统黑盒漏洞挖掘模块的单一顶层危险行为(产品崩溃),对漏洞的感知能力得到大大的提升,并且漏洞发现数量较传统黑盒漏洞挖掘模块提升近3倍,有效的减少了安全漏洞的数量。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种漏洞检测装置,该装置可以通过在实施例中涉及的方法来实现,下面对本申请的实施过程进行详细描述。
图5是根据本发明实施例的漏洞检测装置的结构示意图。
如图5所示,该装置可以包括:标记模块10、指令获取模块20、区域判断模块30、以及漏洞检测模块40。
其中,标记模块,用于将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域。
指令获取模块,用于获取在运行待检测应用时所执行的操作指令。
区域判断模块,用于判断操作指令所操作的存储区域中是否包括非法操作区域。
漏洞检测模块,用于若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
漏洞检测模块还用于若操作指令所操作的存储区域中不包括非法操作区域,则检测出操作指令不存在漏洞。
本发明上述实施例还可以包括循环模块,用于循环执行上述步骤,直至将运行待检测应用时所执行的所有操作指令均检测完成,以完成对整个待检测应用的检测。
采用本发明实施例,通过操作指令所操作的存储区域确定操作指令是否存在漏洞,对待检测应用执行的操作具有很强的针对性,而不是现有技术中的在挖掘漏洞过程中监测到产品崩溃才发现待检测应用存在漏洞。具体地,本发明实施例是从待检测应用执行的操作出发,通过跟踪待检测应用运行时的整个过程中的各个操作,通过判断操作中是否存在漏洞来挖掘待检测应用中的漏洞,能够给主动分析漏洞,实时性强,而不是现有技术中被动地等待产品发生顶层危险行为。解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确、漏洞挖掘滞后的问题,实现了实时准确地检测待检测应用的漏洞的效果。
其中,本发明实施例中可以将所有的外部输入数据(如网络包,外部文件,用户输入的内容)标记为污染源(即非法数据源),因为外部输入数据是不可信的,是可以被黑客控制的数据。然后将待检测应用对非法数据源执行存储操作时使用的区域(即待检测应用对非法数据源执行操作时的全部路径)均标记为非法的非法操作区域。
本发明上述实施例中的区域判断模块可以通过如下方法实现:在待检测应用上执行测试用例,然后获取待检测应用执行测试用例时的运行指令,并将运行指令翻译简化成中间指令。
其中,本发明实施例中的测试用例指:为某个安全漏洞挖掘目标而编制(如预先设置好)的一组测试输入、执行条件以及预期结果,以便测试待测试产品的代码路径或核实是否满足某个特定需求的字符串或数据包。中间指令可以是使用中间语言描述的指令,在该实施例中的中间指令即为上述实施例中的操作指令。中间语言指一种应用于抽象机器(abstractmachine)的编程语言,它设计的目的,是用来帮助我们简化对程序的分析,也即通过执行该步骤可以简化分析测试用例中的运行逻辑。
具体地,可以获取待检测应用执行测试用例时的运行逻辑,在获取运行逻辑之后获取对应的运行指令。运行逻辑也可以理解为约束集合,由待测试产品(即上述实施例中的待检测应用)中的所有约束所组成的一个集合,它代表着待检测应用的逻辑组织结构。
在本发明的上述实施例中,指令获取模块可以包括:执行模块,用于在待检测应用上执行测试用例;获取子模块,用于获取检测应用执行测试用例时的运行指令,其中,运行指令为汇编指令;转换模块,用于将运行指令转换为操作指令,其中,操作指令为使用中间语言描述的指令,中间语言为应用于抽象机器的编程语言。
具体地,通过定义中间语言的方法,将待测试产品(即上述实施例中的待检测应用)的运行过程中的100多种传统x86汇编指令通过指令翻译,缩简成仅包含10多种指令的中间指令,大大降低接下来对操作指令的分析的逻辑复杂度。
在本发明的上述实施例中,,区域判断模块可以包括:区域检测模块,用于检测操作指令的操作对象所在的存储区域中是否包括存在非法操作标识的区域;区域确定模块,用于若检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域,则判断出操作指令所操作的存储区域中包括非法操作区域。
其中,非法操作区域可以使用非法操作标识来标识,通过判断某个区域是否使用非法操作标识来判断该区域是否为非法操作区域。
具体地,如果该区域中存在非法操作标识则判断出该区域为非法操作区域;如果该区域中不存在非法操作标识则判断出该区域不为非法操作区域。
在本发明一个可选的实施例中,区域检测模块可以包括:第一检测子模块,用于在操作指令为将操作对象从源区域复制至第一目标区域的指令的情况下,检测源区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;第一确定子模块,用于若源区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域。
其中,操作指令可以为将操作对象从源区域复制至第一目标区域的指令,如memcpy函数、strcpy函数,在获取到的操作指令为将操作对象从源区域复制至第一目标区域的指令的情况下,通过检测源区域中是否包括非法操作区域来判断该操作指令是否为存在漏洞的指令。
具体地,可以检测源区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若源区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域;若源区域对应的运行待检测应用的系统的寄存区域中不包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中不包括存在非法操作标识的区域。
其中,strcpy函数为C语言标准库函数,把从src(source的简写,源)地址(即源地址)开始且含有null(空格)结束符的字符串复制到以dest开始的地址中去;memcpy函数从源地址所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。其中的源地址所述的内存地址即为上述的源区域,目标地址dest所指的内存地址即为上述的第一目标区域。
在本发明的上述实施例中,可以预先定义一些操作指令为危险指令,如调用上述的strcpy函数,就属于危险指令的操作指令与预定义的危险行为策略逐个进行匹配,如果该操作指令(如条微信行为)与预定义的危险行为策略匹配成功,就认为待检测应用在此处的危险行为(即上述实施例中的操作指令)可以导致漏洞。
下面以调用strcpy函数的操作指令为例,详细介绍本发明。
当获取到得在运行待检测应用时所执行的操作指令为调用strcpy函数的指令的情况下,也即运行待检测应用执行的流程进入危险行为区域(在本发明的该实施例中将要调用的strcpy的函数定义为危险函数。获取调用strcpy函数的源区域,检测源区域中是否包括已标记为非法的非法操作区域,如果源区域中包括已标记为非法的非法操作区域,则确定该函数调用的指令是可以导致漏洞的指令。如果源区域中不包括已标记为非法的非法操作区域,则确定该函数调用的指令不是可以导致漏洞的指令。
在确定该函数调用的指令是可以导致漏洞的指令之后,记录该指令,并生成漏洞报告。
在本发明另一种可选的实施例中,区域检测模块可以包括:第二检测子模块,用于在操作指令为将操作对象存储至第二目标区域的指令的情况下,检测第二目标区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;第二确定子模块,用于若第二目标区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域。
其中,操作指令可以为将操作对象存储至第二目标区域的指令,如call函数、jmp函数,在获取到的操作指令为将操作对象存储至第二目标区域的指令的情况下,通过检测第二目标区域中是否包括非法操作区域来判断该操作指令是否为存在漏洞的指令。
具体地,可以检测第二目标区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若第二目标区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域;若第二目标区域对应的运行待检测应用的系统的寄存区域中不包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中不包括存在非法操作标识的区域。
根据本发明的上述实施例,漏洞检测装置可以包括:上报模块,用于在检测出操作指令存在漏洞之后,上报操作指令和漏洞。
在待检测应用中执行测试用例的过程中,可以获取测试用例中的每条运行指令(即x86汇编语句),将运行指令翻译成中间语言后的执行语义(即上述实施例中的中间指令)。跟踪该指令是否将污染数据(即上述实施例中的非法数据源)传给运行待检测应用的系统的x86寄存器,将该寄存器标记为被污染的存储区域(即上述实施例中的非法操作区域),因为它被外部污染数据(即上述实施例中的非法数据源)传染了;类似的,如果这条语句(即上述实施例中的中间指令)有内存操作并且源操作内存是污染的,那么我们也会标记目标内存区域为污染区域(即上述实施例中的非法操作区域)。
在该实施例中通过污点传播的思路,来精确的定位危险行为(即存在漏洞的操作指令)。
其中,污点传播即通过定义一个污染源(可以为上述实施例中的非法数据源),并在随后程序(可以为上述的待检测应用)的执行过程中,根据程序的实际逻辑,将污染源逐步传染到计算机内存和其他存储区域的过程。
在本发明的上述实施例中,通过跟踪待测试产品(即待检测应用)的运行的整个过程中的各个操作指令,先将执行流程中的执行指令使用中间语言进行简化得到中间指令,然后通过污点传播的思想,真实模拟待测试产品运行过程中污污染源(即上述实施例中的非法数据源)一步一步传播在执行待检测应用的系统的寄存区域的全过程,将被污染的区域全部标记出来,通过判断操作指令是否触发预定义的危险行为来进行漏洞判断,具体地,通过判断操作指令操作的存储区域是否包括污染区域来判断。通过上述实施例,可以主动分析在运行待检测应用时是否发生危险行为,不像传统的黑盒挖掘漏洞思路那样,过滤掉大量的有效信息,被动的等待顶层危险行为的发生,从而可以及时准确有效地确定待检测应用中的漏洞。
需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。
通过本发明的上述实施例,较传统黑盒漏洞挖掘模块的单一顶层危险行为(产品崩溃),对漏洞的感知能力得到大大的提升,并且漏洞发现数量较传统黑盒漏洞挖掘模块提升近3倍,有效的减少了安全漏洞的数量。
实施例3
本发明的实施例还提供了一种终端。可选地,在本实施例中,上述终端可以执行漏洞检测方法,上述实施例中的漏洞检测装置可以设置在该终端上。
图6是根据本发明实施例的一种终端的结构框图。如图6所示,该终端50可以包括:一个或多个(图中仅示出一个)处理器51、存储器53、以及传输装置55。
其中,存储器53可用于存储软件程序以及模块,如本发明实施例中的漏洞检测方法和装置对应的程序指令/模块,处理器51通过运行存储在存储器53内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的漏洞检测方法。存储器53可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器53可进一步包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至终端50。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置55用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置55包括一个网络适配器(NetworkInterfaceController,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置15为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器53用于存储应用程序。
处理器51可以通过传输装置55调用存储器53存储的及应用程序,以执行下述步骤:获取在运行待检测应用时所执行的操作指令;判断操作指令所操作的存储区域中是否包括已标识为非法的非法操作区域;若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
在上述实施例中,处理器51还用于若操作指令所操作的存储区域中不包括非法操作区域,则检测出操作指令不存在漏洞,则继续判断下一条操作指令,直至将运行待检测应用时所执行的所有操作指令均检测完成,以完成对整个待检测应用的检测。
采用本发明实施例,通过操作指令所操作的存储区域确定操作指令是否存在漏洞,对待检测应用执行的操作具有很强的针对性,而不是现有技术中的在挖掘漏洞过程中监测到产品崩溃才发现待检测应用存在漏洞。具体地,本发明实施例是从待检测应用执行的操作出发,通过跟踪待检测应用运行时的整个过程中的各个操作,通过判断操作中是否存在漏洞来挖掘待检测应用中的漏洞,能够给主动分析漏洞,实时性强,而不是现有技术中被动地等待产品发生顶层危险行为。解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确、漏洞挖掘滞后的问题,实现了实时准确地检测待检测应用的漏洞的效果。
其中,本发明实施例中可以将所有的外部输入数据(如网络包,外部文件,用户输入的内容)标记为污染源(即非法数据源),因为外部输入数据是不可信的,是可以被黑客控制的数据。然后将待检测应用对非法数据源执行存储操作时使用的区域(即待检测应用对非法数据源执行操作时的全部路径)均标记为非法的非法操作区域。
在本发明的上述实施例中,处理器还用于执行下述操作:检测操作指令的操作对象所在的存储区域中是否包括存在非法操作标识的区域;若检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域,则判断出操作指令所操作的存储区域中包括非法操作区域。
在本发明的上述实施例中,处理器还用于执行下述操作:在操作指令为将操作对象从源区域复制至第一目标区域的指令的情况下,检测源区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若源区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域。
可选地,处理器还用于执行下述操作:在操作指令为将操作对象存储至第二目标区域的指令的情况下,检测第二目标区域对应的运行待检测应用的系统的寄存区域中是否包括存在非法操作标识的区域;若第二目标区域对应的运行待检测应用的系统的寄存区域中包括存在非法操作标识的区域,则检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域。
在本发明的上述实施例中,处理器还用于执行下述操作:漏洞检测方法包括:上报操作指令和漏洞。
可选地,处理器还用于执行下述操作:在所述待检测应用上执行测试用例;获取所述检测应用执行所述测试用例时的运行指令,其中,所述运行指令为汇编指令;将所述运行指令转换为所述操作指令,其中,所述操作指令为使用中间语言描述的指令,所述中间语言为应用于抽象机器的编程语言。
需要进一步说明的是,寄存区域为系统的内存和系统处理器中的寄存器。
本领域普通技术人员可以理解,图6所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌声电脑以及移动互联网设备(MobileInternetDevices,MID)、PAD等终端设备。图6其并不对上述电子装置的结构造成限定。例如,终端50还可包括比图6中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图6所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-OnlyMemory,ROM)、随机存取器(RandomAccessMemory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述的存储介质存储用于执行漏洞检测方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于实施例3所示的终端上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
步骤S1:将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域。
步骤S2:获取在运行待检测应用时所执行的操作指令。
步骤S3:判断操作指令所操作的存储区域中是否包括已标识为非法的非法操作区域。
步骤S4:若操作指令所操作的存储区域中包括非法操作区域,则检测出操作指令存在漏洞。
存储介质被设置为存储用于执行以下步骤的程序代码:若操作指令所操作的存储区域中不包括非法操作区域,则检测出操作指令不存在漏洞,则继续判断下一条操作指令,直至将运行待检测应用时所执行的所有操作指令均检测完成,以完成对整个待检测应用的检测。
采用本发明实施例,通过操作指令所操作的存储区域确定操作指令是否存在漏洞,对待检测应用执行的操作具有很强的针对性,而不是现有技术中的在挖掘漏洞过程中监测到产品崩溃才发现待检测应用存在漏洞。具体地,本发明实施例是从待检测应用执行的操作出发,通过跟踪待检测应用运行时的整个过程中的各个操作,通过判断操作中是否存在漏洞来挖掘待检测应用中的漏洞,能够给主动分析漏洞,实时性强,而不是现有技术中被动地等待产品发生顶层危险行为。解决了现有技术中黑盒漏洞挖掘方法对漏洞的检测不准确、漏洞挖掘滞后的问题,实现了实时准确地检测待检测应用的漏洞的效果。
其中,本发明实施例中可以将所有的外部输入数据(如网络包,外部文件,用户输入的内容)标记为污染源(即非法数据源),因为外部输入数据是不可信的,是可以被黑客控制的数据。然后将待检测应用对非法数据源执行存储操作时使用的区域(即待检测应用对非法数据源执行操作时的全部路径)均标记为非法的非法操作区域。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:检测操作指令的操作对象所在的存储区域中是否包括存在非法操作标识的区域;若检测出操作指令的操作对象所在的存储区域中包括存在非法操作标识的区域,则判断出操作指令所操作的存储区域中包括非法操作区域。
其中,非法操作区域可以使用非法操作标识来标识,通过判断某个区域是否使用非法操作标识来判断该区域是否为非法操作区域。
具体地,如果该区域中存在非法操作标识则判断出该区域为非法操作区域;如果该区域中不存在非法操作标识则判断出该区域不为非法操作区域。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可提取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种漏洞检测方法,其特征在于,包括:
将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域;
获取在运行所述待检测应用时所执行的操作指令;
判断所述操作指令所操作的存储区域中是否包括所述非法操作区域;
若所述操作指令所操作的所述存储区域中包括所述非法操作区域,则检测出所述操作指令存在漏洞。
2.根据权利要求1所述的漏洞检测方法,其特征在于,所述判断所述操作指令所操作的存储区域中是否包括所述非法操作区域包括:
检测所述操作指令的操作对象所在的所述存储区域中是否包括存在非法操作标识的区域;
若检测出所述操作指令的所述操作对象所在的所述存储区域中包括所述存在非法操作标识的区域,则判断出所述操作指令所操作的所述存储区域中包括所述非法操作区域。
3.根据权利要求2所述的漏洞检测方法,其特征在于,所述检测所述操作指令的操作对象所在的所述存储区域中是否包括存在非法操作标识的区域包括:
在所述操作指令为将所述操作对象从源区域复制至第一目标区域的指令的情况下,检测所述源区域对应的运行所述待检测应用的系统的寄存区域中是否包括所述存在非法操作标识的区域;
若所述源区域对应的运行所述待检测应用的系统的寄存区域中包括所述存在非法操作标识的区域,则检测出所述操作指令的所述操作对象所在的所述存储区域中包括所述存在非法操作标识的区域。
4.根据权利要求2所述的漏洞检测方法,其特征在于,所述检测所述操作指令的操作对象所在的所述存储区域中是否包括存在非法操作标识的区域包括:
在所述操作指令为将所述操作对象存储至第二目标区域的指令的情况下,检测所述第二目标区域对应的运行所述待检测应用的系统的寄存区域中是否包括所述存在非法操作标识的区域;
若所述第二目标区域对应的运行所述待检测应用的系统的寄存区域中包括所述存在非法操作标识的区域,则检测出所述操作指令的所述操作对象所在的所述存储区域中包括所述存在非法操作标识的区域。
5.根据权利要求1至4中任意一项所述的漏洞检测方法,其特征在于,
在检测出所述操作指令存在漏洞之后,所述漏洞检测方法包括:上报所述操作指令和所述漏洞。
6.根据权利要求1至4中任意一项所述的漏洞检测方法,其特征在于,获取在运行所述待检测应用时所执行的操作指令包括:
在所述待检测应用上执行测试用例;
获取所述检测应用执行所述测试用例时的运行指令,其中,所述运行指令为汇编指令;
将所述运行指令转换为所述操作指令,其中,所述操作指令为使用中间语言描述的指令,所述中间语言为应用于抽象机器的编程语言。
7.根据权利要求3或4所述的漏洞检测方法,其特征在于,所述寄存区域为所述系统的内存和所述系统的处理器中的寄存器。
8.一种漏洞检测装置,其特征在于,包括:
标记模块,用于将待检测应用对已标记为非法的非法数据源执行存储操作时使用的区域标记为非法的非法操作区域;
指令获取模块,用于获取在运行待检测应用时所执行的操作指令;
区域判断模块,用于判断所述操作指令所操作的存储区域中是否包括所述非法操作区域;
漏洞检测模块,用于若所述操作指令所操作的所述存储区域中包括所述非法操作区域,则检测出所述操作指令存在漏洞。
9.根据权利要求8所述的漏洞检测装置,其特征在于,所述区域判断模块包括:
区域检测模块,用于检测所述操作指令的操作对象所在的所述存储区域中是否包括存在非法操作标识的区域;
区域确定模块,用于若检测出所述操作指令的所述操作对象所在的所述存储区域中包括所述存在非法操作标识的区域,则判断出所述操作指令所操作的所述存储区域中包括所述非法操作区域。
10.根据权利要求9所述的漏洞检测装置,其特征在于,所述区域检测模块包括:
第一检测子模块,用于在所述操作指令为将所述操作对象从源区域复制至第一目标区域的指令的情况下,检测所述源区域对应的运行所述待检测应用的系统的寄存区域中是否包括所述存在非法操作标识的区域;
第一确定子模块,用于若所述源区域对应的运行所述待检测应用的系统的寄存区域中包括所述存在非法操作标识的区域,则检测出所述操作指令的所述操作对象所在的所述存储区域中包括所述存在非法操作标识的区域。
11.根据权利要求9所述的漏洞检测装置,其特征在于,所述区域检测模块包括:
第二检测子模块,用于在所述操作指令为将所述操作对象存储至第二目标区域的指令的情况下,检测所述第二目标区域对应的运行所述待检测应用的系统的寄存区域中是否包括所述存在非法操作标识的区域;
第二确定子模块,用于若所述第二目标区域对应的运行所述待检测应用的系统的寄存区域中包括所述存在非法操作标识的区域,则检测出所述操作指令的所述操作对象所在的所述存储区域中包括所述存在非法操作标识的区域。
12.根据权利要求8至11中任意一项所述的漏洞检测装置,其特征在于,所述漏洞检测装置包括:
上报模块,用于在检测出所述操作指令存在漏洞之后,上报所述操作指令和所述漏洞。
13.根据权利要求8至11中任意一项所述的漏洞检测装置,其特征在于,所述指令获取模块包括:
执行模块,用于在所述待检测应用上执行测试用例;
获取子模块,用于获取所述检测应用执行所述测试用例时的运行指令,其中,所述运行指令为汇编指令;
转换模块,用于将所述运行指令转换为所述操作指令,其中,所述操作指令为使用中间语言描述的指令,所述中间语言为应用于抽象机器的编程语言。
14.根据权利要求10或11所述的漏洞检测装置,其特征在于,所述寄存区域为所述系统的内存和所述系统的处理器中的寄存器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410283564.0A CN105204985A (zh) | 2014-06-23 | 2014-06-23 | 漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410283564.0A CN105204985A (zh) | 2014-06-23 | 2014-06-23 | 漏洞检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105204985A true CN105204985A (zh) | 2015-12-30 |
Family
ID=54952679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410283564.0A Pending CN105204985A (zh) | 2014-06-23 | 2014-06-23 | 漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105204985A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657177A (zh) * | 2017-09-30 | 2018-02-02 | 北京奇虎科技有限公司 | 一种漏洞检测方法及装置 |
CN108345522A (zh) * | 2017-12-15 | 2018-07-31 | 清华大学无锡应用技术研究院 | 用于对中央处理器cpu进行安全检测的方法、装置和系统 |
CN109893856A (zh) * | 2019-04-16 | 2019-06-18 | 珠海金山网络游戏科技有限公司 | 一种检测方法、装置、计算设备及存储介质 |
CN111291368A (zh) * | 2018-12-07 | 2020-06-16 | 北京奇虎科技有限公司 | Cpu漏洞的防御方法及系统 |
CN111382440A (zh) * | 2018-12-27 | 2020-07-07 | 北京奇虎科技有限公司 | 基于虚拟机实现的cpu漏洞检测方法及系统 |
CN111444509A (zh) * | 2018-12-27 | 2020-07-24 | 北京奇虎科技有限公司 | 基于虚拟机实现的cpu漏洞检测方法及系统 |
CN111506900A (zh) * | 2020-04-15 | 2020-08-07 | 北京字节跳动网络技术有限公司 | 漏洞检测方法、装置、电子设备及计算机存储介质 |
CN112416768A (zh) * | 2020-11-20 | 2021-02-26 | 深圳开源互联网安全技术有限公司 | 交互式安全弱点检测方法、系统、装置及可读存储介质 |
CN113076540A (zh) * | 2021-04-16 | 2021-07-06 | 顶象科技有限公司 | 一种攻击检测的方法、装置、电子设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7302707B1 (en) * | 2002-01-18 | 2007-11-27 | Cigital, Inc. | Systems and methods for detecting software buffer security vulnerabilities |
CN101616151A (zh) * | 2009-07-31 | 2009-12-30 | 中国科学院软件研究所 | 一种自动化的网络攻击特征生成方法 |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
CN102651062A (zh) * | 2012-04-09 | 2012-08-29 | 华中科技大学 | 基于虚拟机架构的恶意行为跟踪系统和方法 |
-
2014
- 2014-06-23 CN CN201410283564.0A patent/CN105204985A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7302707B1 (en) * | 2002-01-18 | 2007-11-27 | Cigital, Inc. | Systems and methods for detecting software buffer security vulnerabilities |
CN101616151A (zh) * | 2009-07-31 | 2009-12-30 | 中国科学院软件研究所 | 一种自动化的网络攻击特征生成方法 |
US20110145918A1 (en) * | 2009-12-15 | 2011-06-16 | Jaeyeon Jung | Sensitive data tracking using dynamic taint analysis |
CN102651062A (zh) * | 2012-04-09 | 2012-08-29 | 华中科技大学 | 基于虚拟机架构的恶意行为跟踪系统和方法 |
Non-Patent Citations (2)
Title |
---|
房陈 等: "基于动态染色的内存漏洞定位技术", 《计算机工程》 * |
郑纬民 等: "《2008中国计算机大会论文集》", 31 January 2010, 北京:清华大学出版社 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107657177A (zh) * | 2017-09-30 | 2018-02-02 | 北京奇虎科技有限公司 | 一种漏洞检测方法及装置 |
CN107657177B (zh) * | 2017-09-30 | 2020-11-06 | 北京奇虎科技有限公司 | 一种漏洞检测方法及装置 |
CN108345522A (zh) * | 2017-12-15 | 2018-07-31 | 清华大学无锡应用技术研究院 | 用于对中央处理器cpu进行安全检测的方法、装置和系统 |
CN111291368A (zh) * | 2018-12-07 | 2020-06-16 | 北京奇虎科技有限公司 | Cpu漏洞的防御方法及系统 |
CN111382440B (zh) * | 2018-12-27 | 2024-05-10 | 北京奇虎科技有限公司 | 基于虚拟机实现的cpu漏洞检测方法及系统 |
CN111382440A (zh) * | 2018-12-27 | 2020-07-07 | 北京奇虎科技有限公司 | 基于虚拟机实现的cpu漏洞检测方法及系统 |
CN111444509A (zh) * | 2018-12-27 | 2020-07-24 | 北京奇虎科技有限公司 | 基于虚拟机实现的cpu漏洞检测方法及系统 |
CN111444509B (zh) * | 2018-12-27 | 2024-05-14 | 北京奇虎科技有限公司 | 基于虚拟机实现的cpu漏洞检测方法及系统 |
CN109893856A (zh) * | 2019-04-16 | 2019-06-18 | 珠海金山网络游戏科技有限公司 | 一种检测方法、装置、计算设备及存储介质 |
CN111506900A (zh) * | 2020-04-15 | 2020-08-07 | 北京字节跳动网络技术有限公司 | 漏洞检测方法、装置、电子设备及计算机存储介质 |
CN111506900B (zh) * | 2020-04-15 | 2023-07-18 | 抖音视界有限公司 | 漏洞检测方法、装置、电子设备及计算机存储介质 |
CN112416768A (zh) * | 2020-11-20 | 2021-02-26 | 深圳开源互联网安全技术有限公司 | 交互式安全弱点检测方法、系统、装置及可读存储介质 |
CN113076540A (zh) * | 2021-04-16 | 2021-07-06 | 顶象科技有限公司 | 一种攻击检测的方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105204985A (zh) | 漏洞检测方法及装置 | |
KR101904911B1 (ko) | 하이브리드 퍼징 기반 보안 취약점 자동 탐색 방법 및 그 장치 | |
KR101981028B1 (ko) | 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램 | |
US20190258805A1 (en) | Computer-implemented method and data processing system for testing device security | |
CN111859375B (zh) | 漏洞检测方法、装置、电子设备及存储介质 | |
CN104834859B (zh) | 一种Android应用中恶意行为的动态检测方法 | |
CN108491321B (zh) | 测试用例范围确定方法、装置及存储介质 | |
CN110912776B (zh) | 一种实体路由器管理协议的自动化模糊测试方法及装置 | |
CN108268371B (zh) | 面向Android应用的智能模糊测试方法 | |
CN105787364B (zh) | 任务的自动化测试方法、装置及系统 | |
CN104766012A (zh) | 基于动态污点追踪的数据安全动态检测方法及系统 | |
CN107330345B (zh) | 一种检测隐私数据泄露的方法和装置 | |
CN105205394A (zh) | 用于入侵检测的数据检测方法和装置 | |
CN105515909B (zh) | 一种数据采集测试方法和装置 | |
CN105512045A (zh) | 一种应用程序的测试方法、装置及测试设备 | |
CN105224868A (zh) | 系统漏洞攻击的检测方法及装置 | |
CN109284611B (zh) | 基于Metasploit框架的测试系统及实现网络安全性测试的方法 | |
CN110086811A (zh) | 一种恶意脚本检测方法及相关装置 | |
CN113268243A (zh) | 内存预测方法及装置、存储介质、电子设备 | |
KR102162024B1 (ko) | 동작 모델링 및 비교 분석을 이용한 이동통신네트워크의 이상 진단 장치 및 그 방법 | |
CN106845235A (zh) | 一种基于机器学习方法的安卓平台回调函数检测方法 | |
JP5613000B2 (ja) | アプリケーション特性解析装置およびプログラム | |
CN111245800B (zh) | 网络安全测试方法和装置、存储介质、电子装置 | |
Al Kassar et al. | Testability Tarpits: the Impact of Code Patterns on the Security Testing of Web Applications. | |
CN106940772B (zh) | 变量对象的跟踪方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20151230 |