CN106709335B - 漏洞检测方法和装置 - Google Patents

漏洞检测方法和装置 Download PDF

Info

Publication number
CN106709335B
CN106709335B CN201510794315.2A CN201510794315A CN106709335B CN 106709335 B CN106709335 B CN 106709335B CN 201510794315 A CN201510794315 A CN 201510794315A CN 106709335 B CN106709335 B CN 106709335B
Authority
CN
China
Prior art keywords
function
vulnerability
specific
sample
sequence
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.)
Active
Application number
CN201510794315.2A
Other languages
English (en)
Other versions
CN106709335A (zh
Inventor
陈晋福
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510794315.2A priority Critical patent/CN106709335B/zh
Publication of CN106709335A publication Critical patent/CN106709335A/zh
Application granted granted Critical
Publication of CN106709335B publication Critical patent/CN106709335B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本申请提供了一种漏洞检测方法和装置,所述漏洞检测方法包括:将待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行;收集所述待检测文件在所述独立空间中执行的函数序列;从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,所述函数属性指示特定漏洞在具有或排除特定函数、以及按特定顺序具有特定函数方面的属性;如果存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞。本申请实施例可以有效地检测出软件中的漏洞,尤其是可以有效地检测出逻辑漏洞。

Description

漏洞检测方法和装置
技术领域
本申请涉及信息安全,尤其涉及一种漏洞检测方法和装置。
背景技术
漏洞通常是指一个软件设计时存在的缺陷或编码时产生的错误,从而基于该缺陷或错误可能使该软件遭受到攻击。
现有的漏洞检测方法通常采用静态检测(包括现有的正向漏洞检测和逆向漏洞检测)。即通过采集大量漏洞的样本,判断软件中的待检测文件中是否存在与大量样本之一相同的特征函数和特征函数所带的参数,如果存在,则判断所述待检测文件中存在漏洞。例如,对于样本之一f($a)所包含的特征函数为f()以及该特征函数所带的参数为$a,如果待检测文件中存在f($a),则判断所述待检测文件中存在漏洞。但是,现有的这种判断方式存在局限性,只能有效地判断特征函数和特征函数所带的参数明显与样本相同的漏洞,不适合检测复杂性相对较高的逻辑漏洞(即存在逻辑缺陷的漏洞)。
其中,常见的逻辑漏洞为在线支付逻辑漏洞,例如某支付应用程序的关键步骤数据包中直接传递需要支付的金额,传递过程没有签名算法的认证,从而导致攻击者可以随意篡改所述金额,由于该类漏洞涉及的是应用程序的整体分析,无法通过现有技术中简单的特征函数及特征函数所带的参数的匹配进行准确地判断,有必要提供一种适合判断该类漏洞的检测方法和装置。
发明内容
本申请的目的之一是提升对软件中的待检测文件的漏洞尤其是逻辑漏洞进行检测的准确性。
根据本申请的一个方面,提供了一种漏洞检测方法,其中所述漏洞检测方法包括:
将待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行;
收集所述待检测文件在所述独立空间中执行的函数序列;
从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,所述函数属性指示特定漏洞在具有或排除特定函数、以及按特定顺序具有特定函数方面的属性;
如果存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞。
根据本申请的另一个方面,还提供了一种漏洞检测装置,包括:
文件放入单元,被配置为将待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行;
收集单元,被配置为收集所述待检测文件在所述独立空间中执行的函数序列;
函数判断单元,被配置为全部函数属性从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,所述函数属性指示特定漏洞在具有或排除特定函数、以及按特定顺序具有特定函数方面的属性;
漏洞检测单元,被配置为如果存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞。
与现有技术相比,本申请实施例具有以下优点:本申请实施例通过判断待检测文件执行过程中的函数序列是否存在于特定漏洞所包含的函数属性相匹配的函数集合,从而有效地检测出待检测文件是否存在漏洞或/和存在何种漏洞,相对于现有的静态检测技术,本申请可以从文件的整体执行过程上判断待检测文件是否存在漏洞,从而提升对逻辑漏洞检测的准确性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为根据本申请一个实施例的漏洞检测方法的流程图;
图2示出了根据本申请一个实施例的对图1所示的步骤S102所包含的子步骤的流程图;
图3示出了根据本申请一个实施例的对图1所示的步骤S102之后的步骤以及步骤S103所包含的子步骤的示意图;
图4示出了根据本申请一个实施例的对图1所示的步骤S101之前的步骤进行描述的流程图;
图5为根据本申请一个优选实施例的漏洞检测装置的示意性框图;
图6为根据本申请一个优选实施例的漏洞检测装置所包括的其他单元的示意性框图;
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行特定程序或指令来执行数值计算和/或逻辑计算等特定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行特定处理过程,或是由ASIC、FPGA、DSP等硬件执行特定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本申请,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本申请。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的。但是本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
根据本申请的一个方面的一个实施例,提供了一种漏洞检测方法。
本实施例中,漏洞检测主要针对软件中的待检测文件中的漏洞进行检测。所述软件在此是泛指,包括系统软件、应用软件和介于这两者之间的中间件等,或者说包括在计算机上运行的程序以及与该程序相关的文档等等。
所述待检测文件可以指所述软件的全部或部分应用程序、编码等。
所述漏洞可以指软件设计时所存在的缺陷或编码时所产生的错误,从而基于该缺陷或错误可能使该软件遭受到攻击。以在线支付软件的漏洞为例,该类软件通常存在现有技术中常见的逻辑上的设计缺陷,基于该设计缺陷,攻击者可以随意篡改在线支付软件中的支付金额。
所述漏洞检测方法可以由服务器执行。例如,通过在诸如电脑、手机等电子设备上输入特定网址的方式,以建立与该特定网址对应的单个服务器、多个服务器或云服务器的连接,进而通过在该特定网址对应的网页上上传或输入待检测文件,由所述连接的服务器来检测所述待检测文件是否存在漏洞。
所述漏洞检测方法也可以由电脑、手机等终端执行。例如,通过在诸如电脑、手机等电子设备上安装用于检测漏洞的应用程序,通过该应用程序来检测所述待检测文件是否存在漏洞。
其中所述漏洞可以指一个文件(或应用软件、系统)设计时存在的缺陷或编码时产生的错误,从而基于该缺陷或错误可能使该文件(或应用软件、系统)遭受到攻击。
请参考图1,图1为根据本申请一个实施例的漏洞检测方法的流程图。
如图1所示,所述漏洞检测方法1包括:
S101,将待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行。
待检测文件可以指软件的全部或其包括的部分应用程序、编码等。
实际执行环境是指待检测文件实际执行时的硬件和软件环境。硬件环境是指例如该待检测文件执行时占用的硬件空间,软件环境是指例如该待检测文件执行时调用的函数、需要的参数等。如果待检测文件在实际的硬件和软件环境中执行,如果此时待检测文件存在漏洞,则可能因该漏洞使所述待检测文件遭受攻击,从而造成实际危害。因此,本申请实施例中,将待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中运行,这个独立空间不影响待检测文件实际的执行。即使在独立空间中运行时产生问题,也不会对待检测文件的实际执行造成影响。独立空间是指物理位置上独立、与外界的函数调用和参数交换也独立的空间。
在一种实现方式中,所述独立空间可以是沙箱(Sand Box)。在另一种实现方式中,所述独立空间可以是虚拟机。
需要说明的是,本申请实施例是将待检测文件放入到独立空间中模拟运行,不同于所述待检测文件在实际执行环境中对函数实际执行的过程。
S102,收集所述待检测文件在所述独立空间中执行的函数序列。
本实施例中所述函数序列可以指待检测文件在执行过程中所包括的各执行路径的函数的集合,以C语言编写而成的某待检测文件为例,其编写的代码例如为:
Figure BDA0000849635790000061
Figure BDA0000849635790000071
上述待检测文件所包括的其中一条执行路径的函数的集合为:scanf("%d",&a)、if(a==123520)、printf("密码正确")、getch();其中另一条执行路径的函数的集合为:scanf("%d",&a)、if(a==123520)、else、printf("错了请重新输入")、getch(),则上述两条示例的执行路径的函数的集合即为待检测文件在所述独立空间中执行的函数序列的示例。
当然,上文仅是以待检测文件所包括的条件语句if-else进行执行路径的示例,并不在此限定,基于其他语句(如跳转语句、循环语句等)而执行其他路径的情况以引用的方式包含于此。
可选地,请参考图2,所述收集待检测文件在所述独立空间中执行的函数序列的步骤S102包括:
步骤S201,确定所述待检测文件在所述独立空间中执行时顺序执行到的待检测文件中的函数。
对于待检测文件而言,以应用程序为例,虽然该应用程序可能包括100个函数,但是可能有10个函数在独立空间中不会执行,即这10个函数可能仅用于说明和解释,其他90个函数才会在独立空间中执行,那么这90个在独立空间中执行的函数即为所述待检测文件在独立空间中执行时执行到的函数。
而所述顺序执行到的待检测文件中的函数是指按照执行的顺序依次确定的函数,例如应用程序中包括5个函数,按照编码的顺序依次以A、B、C、D、E表示,该应用程序在执行时,依次执行的函数的顺序为A-D-B-C-E,则所述函数A、D、B、C、E为所确定的顺序执行到的待检测文件中的函数。
步骤S202,将确定的函数按执行顺序串联成函数序列。
以上文确定的函数A、D、B、C、E而言,将这些函数按照执行的顺序串联成函数序列为:A-D-B-C-E。
继续参考图1,步骤S103,从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,所述函数属性指示特定漏洞在具有或排除特定函数、以及按特定顺序具有特定函数方面的属性。
其中,所述特定漏洞所关联的全部函数属性可以包括以下中的至少一项:
特定漏洞必须包含的函数;
特定漏洞必须排除的函数;
特定漏洞可能包含、但如果包含必须在特定函数之前包含的函数;
特定漏洞可能包含、但如果包含必须在特定函数之后包含的函数。
需要说明的是,上文只仅示出了函数属性的部分示例,并不意在限定,其他函数属性以引用的方式包含于此。
例如,对于特定漏洞X而言,其关联的全部函数属性包括:
-必须包含的起始函数A;
-必须包含的结束函数S;
-必须排除(或不能包含)的函数P1;
-必须包含的函数P2;
-必须包含的函数集合{P3、P4}中的至少之一的函数P3、P4。
其中所述函数属性指示特定漏洞在具有或排除特定函数,例如,对于上述特定漏洞X,其所关联的全部函数属性中,起始函数A、结束函数S以及函数P2、函数集合{P3、P4}中的至少之一的函数P3、P4为特定漏洞X具有的函数,函数P1为特定漏洞X必须排除的函数。
所述函数属性指示特定漏洞按特定顺序具有特定函数方面的属性,例如,对于漏洞Y,其可以包括函数H1、H2和M,但是H2必须在H1、M之前执行才能实现漏洞Y的功能,也即所述特定顺序可以指函数执行的顺序,包括之前、之后等。
所述从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,以上述特定漏洞X,下文中四个示例性的待检测文件的函数序列进行说明:
1)A->P2->P3->S
2)A->P1->P2->P3->S
3)A->P2->P4->S
4)A->S
对于上述函数序列1)而言,其包含了函数A、函数P2以及函数集合{P3、P4}中的之一P3、函数S,而对于特定漏洞X而言,如上文所述,其所关联的全部函数属性中,起始函数A、结束函数S以及函数P2、函数集合{P3、P4}中的至少之一的函数P3、P4为其必须具有的函数,函数P1为其排除的函数,通过比对上述函数序列1)和特定漏洞X关联的全部函数属性,则可以判断得到该函数序列1)所包括的函数集合与特定漏洞X所关联的全部函数属性相匹配,也即该函数序列1)存在与特定漏洞X所关联的全部函数属性相匹配的函数集合。
同理,上述函数序列3)由于包含了函数A、P1、P2、P3、S,这些函数所构成的函数集合与特定漏洞X所关联的全部函数属性也匹配,也即该函数序列3)也存在与特定漏洞X所关联的全部函数属性相匹配的函数集合。
而对于上述函数序列2)而言,其包含的函数中存在特定漏洞X必须排除的函数P1,因此,包括该函数在内的函数集合与特定漏洞X所关联的全部函数属性不匹配。
对于上述函数序列4)而言,由于其缺少特定漏洞X必须包含的函数P2、函数集合{P3、P4}中的至少之一的函数P3、P4,因此,该函数序列与特定漏洞X所关联的全部函数属性不匹配,也即,不存在与特定漏洞X所关联的全部函数属性相匹配的函数集合。
可选地,请参考图3,所述方法在所述收集所述待检测文件在所述独立空间中执行的函数序列的步骤S102之后还包括:
-步骤S301,在收集的函数序列中进一步确定与特定漏洞相关的函数序列。
可选地,所述从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合的步骤S103进一步包括:
-步骤S302,从确定的与特定漏洞相关的函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合。
具体而言,步骤S301中所述与特定漏洞相关的函数序列可以指包括特定漏洞中必须包含的函数之一的函数序列,以上文示例的四个函数序列和特定漏洞X而言,这四个函数序列都包括了特定漏洞X必须包含的函数A、S中的至少之一,当然,所述相关也可以根据其他规则来判定。
可选地,对于上述步骤S301而言,其包括:
-从收集的函数序列中查找第一特定函数,其中所述第一特定函数与特定漏洞所关联的起始函数相同;
具体地,所述第一特定函数可以位于所述待检测文件中的开始、中间或/和结尾等位置。例如,所述收集的函数序列依次包括A、B、C和S,则在函数序列的开始查找到与上述特定漏洞X的起始函数A相同的第一特定函数。
需要说明的是,所述第一特定函数中的“第一特定”在此只是为了将所述待检测文件中的一个函数与另一个函数进行区分,下文中的“第二特定”类似描述同样为了与其他函数进行区分。
-如果查找到所述第一特定函数,在收集的函数序列中第一特定函数之后查找第二特定函数,其中所述第二特定函数与特定漏洞所关联的结束函数相同。
具体地,所述第二特定函数可以位于所述待检测文件中的开始、中间或/和结尾等位置且在所述第一特定函数之后执行。例如,所述收集的函数序列依次包括A、B、C和S,则在函数序列的开始查找到与上述特定漏洞X的起始函数A相同的第一特定函数,在该函数序列的末尾即第一特定函数A之后查找到与上述特定漏洞X的结束函数S相同的第二特定函数。
对于上述步骤S302从确定的与特定漏洞相关的函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,可以参考上文步骤S103的相关描述,在此不再赘述。
继续参考图1,步骤S104,如果存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞。
具体地,以上文中的待检测文件的函数序列1)~4)为例,由于函数序列1)和3)存在与特定漏洞X所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞,可选地,检测出所述待检测文件中存在特定漏洞X。
可选地,所述方法还包括:如果不存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中不存在所述特定漏洞。
具体地,以上文中的待检测文件的函数序列1)~4)为例,由于函数序列2)和4)不存在与特定漏洞X所关联的全部函数属性相匹配的函数集合,则检测出所述两个待检测文件中不存在所述特定漏洞。
本申请的实施例通过分析漏洞的函数属性以及待检测文件的执行序列,可以有效地检测出待检测文件中的漏洞,尤其是可以检测出待检测文件存在或不存在何种漏洞,具有针对性。
可选地,在所述步骤S101之前,请参考图4,所述方法还包括:
步骤S401,接收特定漏洞的多个样本函数集合。
具体地,可以通过与用户进行交互来接收输入到计算机的多个样本函数集合,也可以接收从计算机中预先存储的数据库中所选取的多个样本函数集合,也可以通过其他现有的方式来接收。
所述样本函数集合包括可以形成该特定漏洞的函数集合,也可以包括不能形成该特定漏洞的函数集合,以上述特定漏洞X而言,其可以包括如下的样本函数集合:
样本一:{A、P2、P3、S}
样本二:{A、P2、P4、S}
样本三:{A、P2、P3、P4、S};
样本四:{A、P1、P2、P3、P4、S};
其中,样本一至样本三可以形成特定漏洞X,而样本四虽然与样本一至样本三存在某些函数的交集,但是由于多了函数P1而不能形成特定漏洞X。
步骤S402,为所述多个样本集合中的每个样本函数集合,确定所包含的函数及函数的执行顺序。
具体地,所述确定所包含的函数在此可以指确定必须包含的函数以及排除必须不能包含的函数。所述确定可以根据特定漏洞的功能是否能实现来判断,例如,对于上述样本三和样本四而言,样本四比样本三多了一个函数P1,如果样本三能实现特定漏洞X的功能,而样本四不能实现特定漏洞X的功能,则排除特定漏洞X必须不能包含的函数P1。
所述样本函数集合所包含的函数的执行顺序的也可以根据特定漏洞的功能是否能实现来确定,例如对于上述样本一而言,只有依次执行函数A、P2、P3、S的情况下,才能实现漏洞X的功能,否则,其他执行顺序下例如A-S-P2-P3,则不能实现漏洞X的功能,因此,对于样本一所确定的函数及函数的执行顺序为:A-P2-P3-S。
步骤S403,根据确定的各样本函数集合各自所包含的函数及函数的执行顺序,确定所述多个样本函数集合共同具有的函数、共同排除的函数、以及具有特定执行顺序的函数,作为所述与特定漏洞所关联的全部函数属性。
具体地,仍以上述四个样本函数集合为例,各自包含的函数即函数的执行顺序依次如下:
A-P2-P3-S;
A-P2-P4-S;
A-P2-P3-P4-S;
A-P1-P2-P3-P4-S
根据比对,上述三个样本函数集合中共同具有的函数为A、P2和S以及{P3、P4}函数集合中的至少之一,共同排除的函数为P1、具有的特定执行顺序包括A-P2-P3-S、A-P2-P4-S和A-P2-P3-P4-S,则将这些函数所具有的以下属性作为特定漏洞X的全部函数属性:
-必须包含的起始函数A;
-必须包含的结束函数S;
-必须排除(或不能包含)的函数P1;
-必须包含的函数P2;
-必须包含的函数集合{P3、P4}中的至少之一的函数P3、P4。
可选地,上述确定所述多个样本函数集合共同具有的函数、共同排除的函数、以及具有特定执行顺序的函数的步骤S403包括:
Ⅰ)根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同具有的函数,作为与特定漏洞所关联的函数属性;
具体地,以上述四个样本为例,这四个样本各自所包含的函数中,函数A、P2、{P3、P4}中的至少之一是这四个样本共同具有的函数,因此,确定以下函数属性作为特定漏洞X所关联的函数属性:
-必须包含的起始函数A;
-必须包含的结束函数S;
-必须包含的函数P2;
-必须包含的函数集合{P3、P4}中的至少之一的函数P3、P4。
Ⅱ)根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同排除的函数,作为与特定漏洞所关联的函数属性;
具体地,仍以上述四个样本为例,这四个样本共同需排除的函数为P1,否则不能形成漏洞X,则确定以下函数属性作为特定漏洞X所关联的函数属性:
-必须排除(或不能包含)的函数P1。
Ⅲ)根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之前包含的函数,作为与特定漏洞所关联的函数属性;
具体地,仍以上述四个样本为例,在前三个可以形成特定漏洞X的样本中,都包含函数A,且函数A必须在所有其他函数之前包含。
Ⅳ)根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之后包含的函数,作为与特定漏洞所关联的函数属性。
具体地,仍以上述四个样本为例,在前三个可以形成特定漏洞X的样本中,都包含函数S,且函数S必须在所有其他函数之后包含。
根据本申请的另一个实施例,还提供了一种漏洞检测装置。
本实施例中,漏洞检测主要针对软件中的待检测文件中的漏洞进行检测。所述软件在此是泛指,包括系统软件、应用软件和介于这两者之间的中间件等,或者说包括在计算机上运行的程序以及与该程序相关的文档等等。
所述待检测文件可以指所述软件的全部或部分应用程序、编码等。
请参考图5,所述漏洞检测装置包括:
-文件放入单元501,被配置为将所述待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行。其中所述独立空间包括但不限于沙箱和/或虚拟机。
-收集单元502,被配置为收集所述待检测文件在所述独立空间中执行的函数序列。
-函数判断单元503,被配置为从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,所述函数属性指示特定漏洞在具有或排除特定函数、以及按特定顺序具有特定函数方面的属性;
-漏洞检测单元504,被配置为如果存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞。
可选地,所述收集单元502被配置为:
-确定所述待检测文件在所述独立空间中执行时顺序执行到的待检测文件中的函数;
-将确定的函数按执行顺序串联成函数序列。
可选地,所述装置还包括:
-函数序列确定单元(图中未示出),被配置为在收集的函数序列中进一步确定与特定漏洞相关的函数序列;
其中所述函数判断单元503,被配置为从确定的与特定漏洞相关的函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合。
可选地,所述函数序列确定单元被配置为:
从收集的函数序列中查找第一特定函数,其中所述第一特定函数与特定漏洞所关联的起始函数相同;
如果查找到所述第一特定函数,在收集的函数序列中第一特定函数之后查找第二特定函数,其中所述第二特定函数与特定漏洞所关联的结束函数相同。
可选地,上述特定漏洞所关联的全部函数属性包括以下中的至少一项:
特定漏洞必须包含的函数;
特定漏洞必须排除的函数;
特定漏洞可能包含、但如果包含必须在特定函数之前包含的函数;
特定漏洞可能包含、但如果包含必须在特定函数之后包含的函数。
可选地,所述漏洞检测单元504还被配置为:
-如果不存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中不存在所述特定漏洞。
可选地,请参考图6,所述装置还包括:
样本函数集合接收单元601,被配置为接收特定漏洞的多个样本函数集合;
第一确定单元602,被配置为为所述多个样本集合中的每个样本函数集合,确定所包含的函数及函数的执行顺序;
第二确定单元603,被配置为根据确定的各样本函数集合各自所包含的函数及函数的执行顺序,确定所述多个样本函数集合共同具有的函数、共同排除的函数、以及具有特定执行顺序的函数,作为所述与特定漏洞所关联的全部函数属性。
可选地,所述第二确定单元603被配置为:
根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同具有的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同排除的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之前包含的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之后包含的函数,作为与特定漏洞所关联的函数属性。
应当理解,图5-图6所述的结构框图仅仅是为了示例的目的,而不是对本申请范围的限制。在某些情况下,可以根据具体情况增加或减少某些设备。
所属技术领域的技术人员知道,本申请可以实现为系统、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:可以是完全的硬件,也可以是完全的软件,还可以是硬件和软件结合的形式。
附图中的流程图和框图显示了根据本申请的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

Claims (18)

1.一种漏洞检测方法,其特征在于,包括:
将待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行;
收集所述待检测文件在所述独立空间中执行的函数序列;
从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,所述函数属性指示特定漏洞在具有特定函数、排除特定函数、以及具有按特定顺序的特定函数方面的属性;
如果存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞;
在将所述待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行的步骤之前,所述方法还包括:
接收特定漏洞的多个样本函数集合;
为所述多个样本集合中的每个样本函数集合,确定所包含的函数及函数的执行顺序;
根据确定的各样本函数集合各自所包含的函数及函数的执行顺序,确定所述多个样本函数集合共同具有的函数、共同排除的函数、以及具有特定执行顺序的函数,作为所述与特定漏洞所关联的全部函数属性。
2.根据权利要求1所述的漏洞检测方法,其特征在于,所述独立空间包括沙箱和/或虚拟机。
3.根据权利要求1所述的漏洞检测方法,其特征在于,所述收集所述待检测文件在所述独立空间中执行的函数序列的步骤包括:
确定所述待检测文件在所述独立空间中执行时顺序执行到的待检测文件中的函数;
将确定的函数按执行顺序串联成函数序列。
4.根据权利要求1所述的漏洞检测方法,其特征在于,所述方法在收集所述待检测文件在所述独立空间中执行的函数序列的步骤之后还包括:在收集的函数序列中进一步确定与特定漏洞相关的函数序列,
所述从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合的步骤进一步包括:从确定的与特定漏洞相关的函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合。
5.根据权利要求4所述的漏洞检测方法,其特征在于,所述在收集的函数序列中进一步确定与特定漏洞相关的函数序列的步骤包括:
从收集的函数序列中查找第一特定函数,其中所述第一特定函数与特定漏洞所关联的起始函数相同;
如果查找到所述第一特定函数,在收集的函数序列中第一特定函数之后查找第二特定函数,其中所述第二特定函数与特定漏洞所关联的结束函数相同。
6.根据权利要求1所述的漏洞检测方法,其特征在于,所述特定漏洞所关联的全部函数属性包括以下中的至少一项:
特定漏洞必须包含的函数;
特定漏洞必须排除的函数;
特定漏洞可能包含、但如果包含必须在特定函数之前包含的函数;
特定漏洞可能包含、但如果包含必须在特定函数之后包含的函数。
7.根据权利要求1所述的漏洞检测方法,其特征在于,所述方法还包括:如果不存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中不存在所述特定漏洞。
8.根据权利要求1所述的漏洞检测方法,其特征在于,所述确定所述多个样本函数集合共同具有的函数、共同排除的函数、以及具有特定执行顺序的函数的步骤包括:
根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同具有的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同排除的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之前包含的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之后包含的函数,作为与特定漏洞所关联的函数属性。
9.根据权利要求1所述的漏洞检测方法,其特征在于,所述待检测文件是软件的全部或部分。
10.一种漏洞检测装置,包括:
文件放入单元,被配置为将待检测文件放入与该待检测文件的实际执行环境隔离的独立空间中执行;
收集单元,被配置为收集所述待检测文件在所述独立空间中执行的函数序列;
函数判断单元,被配置为从所述函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合,所述函数属性指示特定漏洞在具有特定函数、排除特定函数、以及具有按特定顺序的特定函数方面的属性;
漏洞检测单元,被配置为如果存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中存在漏洞;
样本函数集合接收单元,被配置为接收特定漏洞的多个样本函数集合;
第一确定单元,被配置为为所述多个样本集合中的每个样本函数集合,确定所包含的函数及函数的执行顺序;
第二确定单元,被配置为根据确定的各样本函数集合各自所包含的函数及函数的执行顺序,确定所述多个样本函数集合共同具有的函数、共同排除的函数、以及具有特定执行顺序的函数,作为所述与特定漏洞所关联的全部函数属性。
11.根据权利要求10所述的漏洞检测装置,其特征在于,所述独立空间包括沙箱和/或虚拟机。
12.根据权利要求10所述的漏洞检测装置,其特征在于,所述收集单元,被配置为:
确定所述待检测文件在所述独立空间中执行时顺序执行到的待检测文件中的函数;
将确定的函数按执行顺序串联成函数序列。
13.根据权利要求10所述的漏洞检测装置,其特征在于,所述装置还包括:
函数序列确定单元,被配置为在收集的函数序列中进一步确定与特定漏洞相关的函数序列;
其中所述函数判断单元,被配置为从确定的与特定漏洞相关的函数序列中判断是否存在与特定漏洞所关联的全部函数属性相匹配的函数集合。
14.根据权利要求13所述的漏洞检测装置,其特征在于,所述函数序列确定单元被配置为:
从收集的函数序列中查找第一特定函数,其中所述第一特定函数与特定漏洞所关联的起始函数相同;
如果查找到所述第一特定函数,在收集的函数序列中第一特定函数之后查找第二特定函数,其中所述第二特定函数与特定漏洞所关联的结束函数相同。
15.根据权利要求10所述的漏洞检测装置,其特征在于,所述特定漏洞所关联的全部函数属性包括以下中的至少一项:
特定漏洞必须包含的函数;
特定漏洞必须排除的函数;
特定漏洞可能包含、但如果包含必须在特定函数之前包含的函数;
特定漏洞可能包含、但如果包含必须在特定函数之后包含的函数。
16.根据权利要求10所述的漏洞检测装置,其特征在于,所述漏洞检测单元,还被配置为:
如果不存在与特定漏洞所关联的全部函数属性相匹配的函数集合,则检测出所述待检测文件中不存在所述特定漏洞。
17.根据权利要求10所述的漏洞检测装置,其特征在于,所述第二确定单元被配置为:
根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同具有的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数,确定所述多个样本函数集合共同排除的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之前包含的函数,作为与特定漏洞所关联的函数属性;
根据确定的各样本函数集合各自所包含的函数的执行顺序,确定所述多个样本函数中一旦包含则一定在特定函数之后包含的函数,作为与特定漏洞所关联的函数属性。
18.根据权利要求10所述的漏洞检测装置,其特征在于,所述待检测文件是软件的全部或部分。
CN201510794315.2A 2015-11-17 2015-11-17 漏洞检测方法和装置 Active CN106709335B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510794315.2A CN106709335B (zh) 2015-11-17 2015-11-17 漏洞检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510794315.2A CN106709335B (zh) 2015-11-17 2015-11-17 漏洞检测方法和装置

Publications (2)

Publication Number Publication Date
CN106709335A CN106709335A (zh) 2017-05-24
CN106709335B true CN106709335B (zh) 2020-12-04

Family

ID=58932285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510794315.2A Active CN106709335B (zh) 2015-11-17 2015-11-17 漏洞检测方法和装置

Country Status (1)

Country Link
CN (1) CN106709335B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108932429B (zh) * 2017-05-27 2023-02-03 腾讯科技(深圳)有限公司 应用程序的分析方法、终端及存储介质
CN107862327B (zh) * 2017-10-26 2020-07-24 华中科技大学 一种基于多特征的安全缺陷识别系统和方法
CN110826074A (zh) * 2019-11-06 2020-02-21 腾讯科技(深圳)有限公司 一种应用漏洞检测方法、装置和计算机可读存储介质
CN111462410A (zh) * 2019-12-25 2020-07-28 哈尔滨理工大学 一种基于云安全的智能手机柜

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016410A1 (en) * 2006-07-11 2008-01-17 Calton Pu System and method for preventing race condition vulnerability
CN101187872A (zh) * 2007-10-31 2008-05-28 白杰 基于行为的程序种类判断方法、装置和程序控制方法、装置
CN101923618A (zh) * 2010-08-19 2010-12-22 中国航天科技集团公司第七一○研究所 一种基于隐马尔可夫模型的汇编指令级漏洞检测方法
CN102999374A (zh) * 2012-12-10 2013-03-27 北京神州绿盟信息安全科技股份有限公司 一种基于虚拟机的信息记录方法
CN104252594A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 病毒检测方法和装置
CN104298923A (zh) * 2014-09-28 2015-01-21 北京奇虎科技有限公司 漏洞类型识别方法以及装置
CN104573522A (zh) * 2013-10-21 2015-04-29 深圳市腾讯计算机系统有限公司 一种漏洞分析方法和装置
CN105045715A (zh) * 2015-07-27 2015-11-11 电子科技大学 基于编程模式和模式匹配的漏洞聚类方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080016410A1 (en) * 2006-07-11 2008-01-17 Calton Pu System and method for preventing race condition vulnerability
CN101187872A (zh) * 2007-10-31 2008-05-28 白杰 基于行为的程序种类判断方法、装置和程序控制方法、装置
CN101923618A (zh) * 2010-08-19 2010-12-22 中国航天科技集团公司第七一○研究所 一种基于隐马尔可夫模型的汇编指令级漏洞检测方法
CN102999374A (zh) * 2012-12-10 2013-03-27 北京神州绿盟信息安全科技股份有限公司 一种基于虚拟机的信息记录方法
CN104252594A (zh) * 2013-06-27 2014-12-31 贝壳网际(北京)安全技术有限公司 病毒检测方法和装置
CN104573522A (zh) * 2013-10-21 2015-04-29 深圳市腾讯计算机系统有限公司 一种漏洞分析方法和装置
CN104298923A (zh) * 2014-09-28 2015-01-21 北京奇虎科技有限公司 漏洞类型识别方法以及装置
CN105045715A (zh) * 2015-07-27 2015-11-11 电子科技大学 基于编程模式和模式匹配的漏洞聚类方法

Also Published As

Publication number Publication date
CN106709335A (zh) 2017-05-24

Similar Documents

Publication Publication Date Title
Yang et al. Appintent: Analyzing sensitive data transmission in android for privacy leakage detection
KR102017756B1 (ko) 이상행위 탐지 장치 및 방법
US20210021644A1 (en) Advanced cybersecurity threat mitigation using software supply chain analysis
US10505960B2 (en) Malware detection by exploiting malware re-composition variations using feature evolutions and confusions
US20160188885A1 (en) Software vulnerability analysis method and device
CN106326737B (zh) 用于检测可在虚拟堆栈机上执行的有害文件的系统和方法
CN106709335B (zh) 漏洞检测方法和装置
CN110474900B (zh) 一种游戏协议测试方法及装置
CN102722672B (zh) 一种检测运行环境真实性的方法及装置
Yao et al. Identifying privilege separation vulnerabilities in IoT firmware with symbolic execution
EP3264274B1 (en) Input discovery for unknown program binaries
Mercaldo et al. Hey malware, i can find you!
CN112527674B (zh) Ai框架的安全评测方法、装置、设备及存储介质
US10198576B2 (en) Identification of mislabeled samples via phantom nodes in label propagation
CN112749389B (zh) 一种检测智能合约破坏敏感数据漏洞的检测方法及装置
WO2019180701A1 (en) A method and system for detecting and preventing issues in smart contracts based on historical behavior analysis
CN109815697A (zh) 误报行为处理方法及装置
US9021596B2 (en) Correcting workflow security vulnerabilities via static analysis and virtual patching
Choi et al. All‐in‐One Framework for Detection, Unpacking, and Verification for Malware Analysis
JP5868515B2 (ja) シグニチャ検証装置及びシグニチャ検証方法及びプログラム
Liu et al. Control-Flow Checking Using Branch Sequence Signatures
KR101324691B1 (ko) 모바일 악성 행위 어플리케이션 탐지 시스템 및 방법
US8365281B2 (en) Determining whether method of computer program is a validator
DeMott et al. Systematic bug finding and fault localization enhanced with input data tracking
Frechette et al. Regression Test Reduction for Object‐Oriented Software: A Control Call Graph Based Technique and Associated Tool

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant