漏洞检测方法及装置与流程

文档序号:12825457阅读:291来源:国知局
漏洞检测方法及装置与流程

本申请涉及计算机领域,具体而言,涉及一种漏洞检测方法及装置。



背景技术:

漏洞扫描是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用的漏洞的一种安全检测(渗透攻击)行为。通常,漏洞扫描系统会根据待检测的漏洞制定对应的漏洞检测规则,漏洞扫描系统中扫描引擎的能力越强,其能够制定的漏洞检测规则也就越复杂。目前,若通过较为常用的漏洞检测规则定义方法(如文本方法)制定漏洞检测规则,则该漏洞检测规则在面对复杂漏洞或未知漏洞时检测效果较差,从而导致漏洞检测的准确性不高。

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



技术实现要素:

本申请实施例提供了一种漏洞检测方法及装置,以至少解决现有技术中漏洞检测准确率较低的技术问题。

根据本申请实施例的一个方面,提供了一种漏洞检测方法,包括:利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句;在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征;根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与所述漏洞特征匹配的查找结果;根据查找结果确定被检测程序中是否存在程序漏洞。

根据本申请实施例的另一方面,还提供了一种漏洞检测装置,包括:扫描单元,用于利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句;第一获取单元,用于在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征;查找单元,用于根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与所述漏洞特征匹配的查找结果;确定单元,用于根据查找结果确定被检测程序中是否存 在程序漏洞。

在本申请实施例中,采用利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句;在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征;根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与所述漏洞特征匹配的查找结果;根据查找结果确定被检测程序中是否存在程序漏洞的方式,通过预先设置的漏洞检测条件扫描被检测程序的反编译语句,并在匹配到该漏洞检测条件的起始条件时获取该起始条件所属的程序漏洞的漏洞信息,以及对该漏洞信息中的漏洞特征进行特征查找,达到了根据特征查找后所得到的查找结果确定被检测程序中是否存在程序漏洞,从而实现了提高漏洞检测的准确率和灵活性、增强可检测对象的覆盖度的技术效果,进而解决了现有技术中漏洞检测准确率较低的技术问题。

附图说明

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

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

图2是根据本申请实施例的一种可选的漏洞检测方法的流程示意图;

图3是根据本申请实施例的另一种可选的漏洞检测方法的流程示意图;

图4是根据本申请实施例的又一种可选的漏洞检测方法的流程示意图;

图5是根据本申请实施例的又一种可选的漏洞检测方法的流程示意图;

图6是根据本申请实施例的又一种可选的漏洞检测方法的流程示意图;

图7是根据本申请实施例的一种可选的漏洞检测装置的结构示意图;

图8是根据本申请实施例的另一种可选的漏洞检测装置的结构示意图;

图9是根据本申请实施例的又一种可选的漏洞检测装置的结构示意图;

图10是根据本申请实施例的又一种可选的漏洞检测装置的结构示意图;

图11是根据本申请实施例的又一种可选的漏洞检测装置的结构示意图;

图12是根据本申请实施例的又一种可选的漏洞检测装置的结构示意图;

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

具体实施方式

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

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

首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:

反编译语句:通过对检测程序进行反向编译(又称逆向编译)而得到的语句;

反编译:高级语言源程序经过编译变成可执行文件的逆过程;

漏洞信息:因计算机漏洞所衍生的信息,计算机漏洞是指在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,攻击者可以利用这些缺陷在未授权的情况下访问或者破坏计算机系统;

逻辑和算法:逻辑运算中的一种,又名逻辑与算法,逻辑和算法中的逻辑运算符可以为“and”或者“∧”;

递归运算(recursivealgorithm):一种直接或间接地调用自身算法的过程,一般可以通过函数或者子过程来实现,其方法为在函数或者子过程的内部,直接或间接地调用自己

逻辑或算法:逻辑运算中的一种,逻辑或算法中的逻辑运算符可以“or”或者“∨”。

实施例1

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

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

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

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

在上述运行环境下,本申请提供了如图2所示的漏洞检测方法。图2是根据本申请实施例一的漏洞检测方法的流程示意图。

如图2所示,该漏洞检测方法可以包括如下实现步骤:

步骤s202,利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句。

本申请上述步骤s202中,反编译语句是指通过对检测程序进行反向编译(又称逆向编译)而得到的语句。反编译是高级语言源程序经过编译变成可执行文件的逆过程。

步骤s204,在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则 获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征。此外,预先设置的漏洞检测条件可以被理解为一种关注于漏洞本身,而非漏洞扫描器的检测行为的规则。本申请将检测条件从扫描引擎检测逻辑的强耦合中分离出来,使检测条件的设置和定义具有较强的灵活性和可扩展性,而检测条件的灵活性实质上也决定了可检测的漏洞的复杂程度。

本申请上述步骤s204中,漏洞信息是指因计算机漏洞所衍生的信息,计算机漏洞是指在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,攻击者可以利用这些缺陷在未授权的情况下访问或者破坏计算机系统。例如,计算机芯片上存在的逻辑错误、邮件系统中编程错误、nfs(networkfilesystem,网络文件系统)协议中认证方式的弱点、甚或是unix(一种计算机操作系统)系统管理员设置匿名ftp(filetransferprotocol,文件传输协议)服务器时配置不当的问题,上述举例都可以被视为计算机漏洞。

步骤s206,根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与漏洞特征匹配的查找结果。

本申请上述步骤s206中,在反编译语句中进行特征查找可以为逐项查找,也可以为其他能够实现精确查找的查找方式,漏洞信息中的漏洞特征旨在描述该漏洞的属性,例如,该漏洞特征可以为该漏洞的地址、时间、漏洞类型等。

步骤s208,根据查找结果确定被检测程序中是否存在程序漏洞。

本申请上述步骤s208中,确定被检测程序中是否存在程序漏洞的方式可以有多种,依据漏洞检测的需求不同,是否存在程序漏洞的界定条件也不尽相同。例如,若存在两个漏洞检测条件,则该两个漏洞检测条件同时满足时可以确定存在程序漏洞,该两个漏洞检测条件满足其一时也可以确定存在程序漏洞,确定被检测程序中是否存在程序漏洞应视具体情况而定。

由上可知,本申请上述实施例一所提供的方案,通过预先设置的漏洞检测条件扫描被检测程序的反编译语句,并在匹配到该漏洞检测条件的起始条件时获取该起始条件所属的程序漏洞的漏洞信息,以及对该漏洞信息中的漏洞特征进行特征查找,达到了根据特征查找后所得到的查找结果确定被检测程序中是否存在程序漏洞,从而实现了提高漏洞检测的准确率和灵活性、增强可检测对象的覆盖度的技术效果,进而解决了现有技术中漏洞检测准确率较低的技术问题。

本申请上述实施例提供的一种可选方案中,图3是根据本申请实施例的另一种可选的漏洞检测方法的流程示意图,如图3所示,步骤s206,根据漏洞信息记录的漏洞 特征,在反编译语句中进行特征查找,得到与漏洞特征匹配的查找结果包括:

步骤s302,获取漏洞信息中的主匹配条件和/或子匹配条件。

其中,主匹配条件和/或子匹配条件用于记录程序漏洞的漏洞特征;

本申请上述步骤s302中,主匹配条件和/或子匹配条件之间可以为嵌套关系,主匹配条件中可以包含子匹配条件,子匹配条件可以为一个或者多个。

可选地,本实施例提供了一段xml(extensiblemarkuplanguage,可扩展标记语言)格式的代码,该段代码如下所示:

其中,上述代码中的第1132至第1160行定义了一个漏洞检测条件,该段代码中的第1147行至第1152行定义了一些子匹配条件,每个子匹配条件可以通过vulntypeid(匹配条件id)进行关联,由上述代码内容可知,主匹配条件的匹配条件id为33,子匹配条件的匹配条件id分别为03301、03302、03303和03304,每个子匹配条件之间可以通过逻辑运算关系进行关联,例如,若匹配条件id为03301的子匹配条件和匹配条件id为03302的子匹配条件为逻辑和关系,则必须同时满足上述两个子匹配条件;再者,若匹配条件id为03303的子匹配条件和匹配条件id为03304的子匹配条件为逻辑或关系,则仅需要满足上述两个子匹配条件中的任意一个子匹配条件即可。

步骤s304,检测反编译语句是否符合主匹配条件和/或子匹配条件,以获取查找结果。

本申请上述步骤s304中,可以通过检测反编译语句是否符合上述代码中的主匹配条件或子匹配条件,从而获取到查找结果。例如,在对反编译语句进行逐项匹配之后,若确定该反编译语句符合上述代码中匹配条件id为03301的子匹配条件和匹配条件id为03302的子匹配条件,则可以获取到该反编译语句经上述两个子匹配条件进行某种运算或处理之后所得到的查找结果。

可选地,本实施例还提供了一段xml(extensiblemarkuplanguage,可扩展标记语言)格式的代码,该段代码如下所示:

其中,上述代码中的第1163行至第1176行定义了匹配条件id为03301的子匹配条件,其中,该段代码中的第1167行定义了进行漏洞检测所需要的api(applicationprogramminginterface,应用程序编程接口)函数,该段代码中的第1168行定义了该子匹配条件的匹配条件id。除过第1167行和第1168行,上述代码中的其他各行定义了一些确认漏洞所需要的附加条件,在此不做赘述。

可选地,检测反编译语句是否符合主匹配条件和/或子匹配条件包括:

步骤s12,在检测到反编译语句中存在子匹配条件的起始条件时,检测反编译语句是否符合子匹配条件,得到第一查找子结果。

步骤s14,在对子匹配条件检测完成之后,检测反编译语句是否符合主匹配条件,得到第二查找子结果,其中,查找结果包括第一查找子结果和第二查找子结果。

需要说明的是,步骤s12和步骤s14在执行过程中可以不具有先后顺序或主次关系。

本申请上述步骤s12和步骤s14中,应先检测反编译语句是否符合子匹配条件,再检测该反编译语句是否符合主匹配条件。例如,对该反编译语句进行逐条分析,若确定该反编译语句中存在子匹配条件的起始条件,则可以依据漏洞查找算法查找该子匹配条件,若该子匹配条件为一个递归条件,则可以将主匹配条件中的判断条件拷贝至该子匹配条件,若该子匹配条件不是递归条件,则可以在子匹配条件所定义的内容中进行查找,并得到与所述漏洞特征匹配的查找结果。

本申请上述实施例提供的一种可选方案中,图4是根据本申请实施例的另一种可选的漏洞检测方法的流程示意图,如图4所示,子匹配条件为多个,步骤s12,检测反编译语句是否符合子匹配条件,得到第一查找子结果包括:

步骤s402,检测反编译语句是否符合各个子匹配条件,得到初始查找子结果。

本申请上述步骤s402中,初始查找结果可以为各个子匹配条件中的一个或若干个子匹配条件,若该反编译语句不符合各个子匹配条件,则说明预先设置的漏洞检测条件并未覆盖该反编译语句所对应的被检测程序。若需对该检测程序进行漏洞检测,则需要扩展预先设置的漏洞检测条件。

步骤s404,获取各个子匹配条件之间的逻辑运算关系。

本申请上述步骤s404中,多个子匹配条件之间的逻辑运算关系可以为逻辑和关系、逻辑或关系、逻辑非关系或者递归关系。

步骤s406,按照逻辑运算关系,将各个子匹配条件的初始查找子结果进行逻辑运算,得到第一查找子结果。

本申请上述步骤s406中,第一查找子结果可以为经上述逻辑运算后所得到的结果,该结果可以用“true”或“false”来进行标示,也可以用其他方式进行表示。例如,上述反编译语句符合子匹配条件“条件a”和子匹配条件“条件b”,并且获取到子匹 配条件“条件a”和子匹配条件“条件b”的逻辑运算关系为逻辑和关系,因此,该反编译语句需要同时满足该子匹配条件“条件a”和子匹配条件“条件b”,才能确定该反编译语句所对应的被检测程序存在漏洞。

可选地,逻辑运算关系包括下述至少之一:逻辑和运算、递归运算以及逻辑或运算。

具体地,逻辑和算法是逻辑运算中的一种,又名逻辑与算法,逻辑和算法中的逻辑运算符可以为“and”或者“∧”。递归运算(recursivealgorithm)是一种直接或间接地调用自身算法的过程,一般可以通过函数或者子过程来实现,其方法为在函数或者子过程的内部,直接或间接地调用自己。逻辑或算法也是逻辑运算中的一种,逻辑或算法中的逻辑运算符可以“or”或者“∨”。此外,除上述逻辑运算关系,还可以包括逻辑非运算,逻辑非运算中的逻辑运算符可以为“not”或者“!”。

本申请上述实施例提供的一种可选方案中,图5是根据本申请实施例的另一种可选的漏洞检测方法的流程示意图,如图5所示的实施例中可以包括步骤s202至步骤s208,该实施例中的子匹配条件和主匹配条件均具有匹配条件id,在执行步骤s208,即根据查找结果确定被检测程序中是否存在程序漏洞之后,方法还包括:

步骤s502,在确定被检测程序中存在程序漏洞的情况下,获取被检测程序中命中的程序漏洞的漏洞特征。

步骤s504,输出命中的漏洞特征所对应的匹配条件id。

本申请上述步骤s502至步骤s504中,获取被检测程序中命中的程序漏洞的漏洞特征,并将输出命中的漏洞特征所对应的匹配条件id,可以实现漏洞的精准检测和描述。任意一个程序漏洞都可能包含多个漏洞特征,输出多个漏洞特征所对应的匹配条件id,可以对多发漏洞进行统计和二次处理,也可以基于此优化相关匹配条件,从而进一步增强漏洞检测的准确性。

本申请上述实施例提供的一种可选方案中,图6是根据本申请实施例的另一种可选的漏洞检测方法的流程示意图,如图6所示,在执行步骤s202,即在利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句之前,方法还包括:

步骤s602,获取保存有预先设置的漏洞检测条件的配置文件。

步骤s604,通过漏洞扫描程序解析配置文件,并加载预先设置的漏洞检测条件。

本申请上述步骤s604至步骤s604中,配置文件可以被理解为该漏洞检测条件的载体,漏洞检测条件需要写入该配置文件,才能被漏洞扫描程序进行解析和加载。该 配置文件可以进行读写操作,从而在面对较为复杂的待检测程序时,可以进行漏洞检测条件的更改或重新定义。该配置文件也可以为只读文件,从而防止攻击者破解或攻击。

可选地,本实施例又提供了一段xml(extensiblemarkuplanguage,可扩展标记语言)格式的代码,用以作为对本申请上述实施例的补充,该段代码旨在避免因漏洞而引发的安全风险,具体如下所示:

1://covertintentschemeurltointentobject

2:intentintent=intent.parseuri(uri);

3://forbidlaunchingactivitieswithoutbrowsablecategory

4:intent.addcategory("android.intent.category.browsable");

5://forbidexplicitcall

6:intent.setcomponent(null);

7://forbidintentwithselectorintent

8:intent.setselector(null);

9://starttheactivitybytheintent

10:context.startactivityifneeded(intent,-1);

其中,该段代码中第2行的“intent”需要设置3个属性(具体见上述代码中的第4行、第6行和第8行)才能够避免因漏洞而引发的安全风险,其中,每个属性又具有自己的查找规则。例如,第4行“intent”在调用“addcatetory”时必须以“android.intent.category.browsable”作为传入参数,第6行和第8行调用相关函数时需要传入“null”参数。

具体地,上述代码中的主匹配条件和/或子匹配条件如下所示:

主匹配条件:查找待检测程序中是否调用“intent.parseuri”,并跟踪函数的返回值(具体见上述代码中第2行中的“intent”);

子匹配条件一:查找主匹配条件中跟踪的“intent”,是否调用了“addcatetory”函数并以“android.intent.category.browsable”作为传入参数;

子匹配条件二:查找主匹配条件中跟踪的“intent”,是否调用了“setcomponent”函数并以“null”作为传入参数;

子匹配条件三:查找主匹配条件中跟踪的“intent”,是否调用了“setselector”函数并以“null”作为传入参数

子匹配条件四:查找主匹配条件中跟踪的“intent”,是否被“context”类的“startactivityifneeded”函数作为第一个调用参数。

可选地,上述四个子匹配条件的属性均为“add”操作(逻辑和运算),即只有当上述四个子匹配条件都被反编译语句所匹配时,主匹配条件才确认存在漏洞。

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

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

实施例2

根据本申请实施例,还提供了一种用于实施上述漏洞检测方法的漏洞检测装置,如图7所示,该装置可以包括:扫描单元701、第一获取单元703、查找单元705和确定单元707。

其中,扫描单元701,用于利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句;第一获取单元703,用于在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征;查找单元705,用于根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与漏洞特征匹配的查找结果;确定单元707,用于根据查找结果确定被检测程序中是否存在程序漏洞。

此处需要说明的是,上述扫描单元701、第一获取单元703、查找单元705、确定单元707对应于实施例一中的步骤s202至步骤s208,四个单元与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述 单元作为装置的一部分可以运行在实施例一提供的计算机终端10中。

由上可知,本申请上述实施例二所提供的方案,通过预先设置的漏洞检测条件扫描被检测程序的反编译语句,并在匹配到该漏洞检测条件的起始条件时获取该起始条件所属的程序漏洞的漏洞信息,以及对该漏洞信息中的漏洞特征进行特征查找,达到了根据特征查找后所得到的查找结果确定被检测程序中是否存在程序漏洞,从而实现了提高漏洞检测的准确率和灵活性、增强可检测对象的覆盖度的技术效果,进而解决了现有技术中漏洞检测准确率较低的技术问题。

可选地,如图8所示,查找单元705包括:获取子单元801和检测子单元803。

其中,获取子单元801,用于获取漏洞信息中的主匹配条件和/或子匹配条件,其中,主匹配条件和/或子匹配条件用于记录程序漏洞的漏洞特征;检测子单元803,用于检测反编译语句是否符合主匹配条件和/或子匹配条件,以获取查找结果。

此处需要说明的是,上述获取子单元801和检测子单元803对应于实施例一中的步骤s302至步骤s304,两个子单元与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述子单元作为装置的一部分可以运行在实施例一提供的计算机终端10中。

可选地,如图9所示,检测子单元803可以包括:第一检测模块901和第二检测模块903。

第一检测模块901,用于在检测到反编译语句中存在子匹配条件的起始条件时,检测反编译语句是否符合子匹配条件,得到第一查找子结果;第二检测模块903,用于在对子匹配条件检测完成之后,检测反编译语句是否符合主匹配条件,得到第二查找子结果,其中,查找结果包括第一查找子结果和第二查找子结果。

此处需要说明的是,上述第一检测模块901和第二检测模块903对应于实施例一中的步骤s12至步骤s14,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。

可选地,子匹配条件为多个,如图10所示,第一检测模块901可以包括:检测子模块1001、获取子模块1003和处理子模块1005。

其中,检测子模块1001,用于检测反编译语句是否符合各个子匹配条件,得到初始查找子结果;获取子模块1003,用于获取各个子匹配条件之间的逻辑运算关系;处理子模块1005,用于按照逻辑运算关系,将各个子匹配条件的初始查找子结果进行逻 辑运算,得到第一查找子结果。

此处需要说明的是,上述检测子模块1001、获取子模块1003和处理子模块1005对应于实施例一中的步骤s402至步骤s406,三个子模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述子模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。

可选地,逻辑运算关系包括下述至少之一:逻辑和运算、递归运算以及逻辑或运算。

可选地,子匹配条件和主匹配条件均具有匹配条件id,每个匹配条件的id用于唯一标识该匹配条件,如图11所示,该装置还可以包括:第二获取单元1101和输出单元1103。

其中,第二获取单元1101,用于在确定被检测程序中存在程序漏洞的情况下,获取被检测程序中命中的程序漏洞的漏洞特征;输出单元1103,用于输出命中的漏洞特征所对应的匹配条件id。可选地,还可以从存储器中读取匹配条件id对应的漏洞修补信息。

此处需要说明的是,上述第二获取单元1101和输出单元1103对应于实施例一中的步骤s502至步骤s504,两个单元与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述单元作为装置的一部分可以运行在实施例一提供的计算机终端10中。

可选地,如图12所示,该装置还可以包括:第三获取单元1201和处理单元1203。

其中,第三获取单元,用于获取保存有预先设置的漏洞检测条件的配置文件;处理单元,用于通过漏洞扫描程序解析配置文件,并加载预先设置的漏洞检测条件。

此处需要说明的是,上述第三获取单元1201和处理单元1203对应于实施例一中的步骤s602至步骤s604,两个单元与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述单元作为装置的一部分可以运行在实施例一提供的计算机终端10中。

实施例3

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

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

在本实施例中,上述计算机终端可以执行应用程序的漏洞检测方法中以下步骤的程序代码:利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句;在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征;根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与漏洞特征匹配的查找结果;根据查找结果确定被检测程序中是否存在程序漏洞。

由上可知,本申请上述实施例三所提供的方案,通过预先设置的漏洞检测条件扫描被检测程序的反编译语句,并在匹配到该漏洞检测条件的起始条件时获取该起始条件所属的程序漏洞的漏洞信息,以及对该漏洞信息中的漏洞特征进行特征查找,达到了根据特征查找后所得到的查找结果确定被检测程序中是否存在程序漏洞,从而实现了提高漏洞检测的准确率和灵活性、增强可检测对象的覆盖度的技术效果,进而解决了现有技术中漏洞检测准确率较低的技术问题。

可选地,图13是根据本申请实施例的一种计算机终端的结构框图。如图13所示,该计算机终端a可以包括:一个或多个(图中仅示出一个)处理器1301、存储器1303、以及传输装置1305。

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

上述的传输装置1305用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1305包括一个网络适配器(networkinterfacecontroller,nic),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1305为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

其中,具体地,存储器1303用于存储预设动作条件和预设权限用户的信息、以及应用程序。

处理器1301可以通过传输装置1305调用存储器1303存储的信息及应用程序,以执行下述步骤:利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句;在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征;根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与漏洞特征匹配的查找结果;根据查找结果确定被检测程序中是否存在程序漏洞。

可选的,上述处理器1301还可以执行如下步骤的程序代码:获取漏洞信息中的主匹配条件和/或子匹配条件,其中,主匹配条件和/或子匹配条件用于记录程序漏洞的漏洞特征;检测反编译语句是否符合主匹配条件和/或子匹配条件,以获取查找结果。

可选的,上述处理器1301还可以执行如下步骤的程序代码:在检测到反编译语句中存在子匹配条件的起始条件时,检测反编译语句是否符合子匹配条件,得到第一查找子结果;在对子匹配条件检测完成之后,检测反编译语句是否符合主匹配条件,得到第二查找子结果,其中,查找结果包括第一查找子结果和第二查找子结果。

可选的,上述处理器1301还可以执行如下步骤的程序代码:检测反编译语句是否符合各个子匹配条件,得到初始查找子结果;获取各个子匹配条件之间的逻辑运算关系;按照逻辑运算关系,将各个子匹配条件的初始查找子结果进行逻辑运算,得到第一查找子结果。

可选的,上述处理器1301还可以执行如下步骤的程序代码:在确定被检测程序中存在程序漏洞的情况下,获取被检测程序中命中的程序漏洞的漏洞特征;输出命中的漏洞特征所对应的匹配条件id。

可选的,上述处理器1301还可以执行如下步骤的程序代码:获取保存有预先设置的漏洞检测条件的配置文件;通过漏洞扫描程序解析配置文件,并加载预先设置的漏洞检测条件。

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

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

实施例4

本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的漏洞检测方法所执行的程序代码。

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

可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:利用预先设置的漏洞检测条件,扫描被检测程序的反编译语句;在扫描反编译语句的过程中,若匹配到漏洞检测条件的起始条件,则获取起始条件所属的程序漏洞的漏洞信息,其中,漏洞信息中记录有程序漏洞的漏洞特征;根据漏洞信息记录的漏洞特征,在反编译语句中进行特征查找,得到与漏洞特征匹配的查找结果;根据查找结果确定被检测程序中是否存在程序漏洞。

此处需要说明的是,上述计算机终端群中的任意一个可以与网站服务器和扫描器建立通信关系,扫描器可以扫描计算机终端上php执行的web应用程序的值命令。

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

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

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

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

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

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

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

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