CN112527681A - 一种程序的漏洞检测方法及装置 - Google Patents
一种程序的漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN112527681A CN112527681A CN202011546005.6A CN202011546005A CN112527681A CN 112527681 A CN112527681 A CN 112527681A CN 202011546005 A CN202011546005 A CN 202011546005A CN 112527681 A CN112527681 A CN 112527681A
- Authority
- CN
- China
- Prior art keywords
- variation test
- variation
- test sample
- crash
- test samples
- 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.)
- Granted
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 42
- 238000012360 testing method Methods 0.000 claims abstract description 516
- 238000000034 method Methods 0.000 claims abstract description 98
- 238000012545 processing Methods 0.000 claims abstract description 96
- 230000035772 mutation Effects 0.000 claims description 73
- 238000012216 screening Methods 0.000 claims description 18
- 230000002068 genetic effect Effects 0.000 claims description 12
- 230000005856 abnormality Effects 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 claims description 10
- 238000003780 insertion Methods 0.000 claims description 8
- 230000037431 insertion Effects 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 7
- 230000037430 deletion Effects 0.000 claims description 7
- 238000013461 design Methods 0.000 description 20
- 238000003672 processing method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000005065 mining Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/12—Computing arrangements based on biological models using genetic models
- G06N3/126—Evolutionary algorithms, e.g. genetic algorithms or genetic programming
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Biology (AREA)
- Biomedical Technology (AREA)
- Genetics & Genomics (AREA)
- Artificial Intelligence (AREA)
- Physiology (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例涉及计算机技术领域,尤其涉及一种程序的漏洞检测方法及装置,用于解决程序崩溃检测中需要消耗大量的人力以及可以引起程序崩溃的样例稀缺的问题。该方法包括:获取测试样例队列中的测试样例,并对测试样例进行变异处理,从而得到测试样例对应的多个变异测试样例;通过将多个变异测试样例输入到被检测程序中进行执行,来确定各变异测试样例的指标参数,并在确定各变异测试样例中不存在导致被检测程序崩溃的变异测试样例时,从各变异测试样例中确定出指标参数符合预设条件的变异测试样例,将符合预设条件的变异测试样例加入测试样例队列进行下一轮测试,直到确定出预设数量的导致被检测程序崩溃的变异测试样例为止。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种程序的漏洞检测方法及装置。
背景技术
随着计算机技术领域的发展,计算机安全问题和安全隐患也随之越来越严重,因此,对于计算机程序漏洞的分析和挖掘,以避免遭受恶意攻击是如今备受关注的热点。
目前,对于程序漏洞的挖掘,大多数是由安全研究人员来首先捕捉可以引起程序崩溃的样例并加以分析,来确定导致程序崩溃的原因以及确定崩溃位置,若对于可以引起程序崩溃的测试样例经过分析后,确定可以被恶意利用,则可以将该可以引起程序崩溃的测试样例确定为程序漏洞,可以看出,对于程序漏洞的分析大多依赖于高级技术研究人员的人工操作,一方面对于程序崩溃的检测需要消耗大量的人力,另一方面,可以引起程序崩溃的样例稀缺。
因此,需要提供一种解决方案,用于解决由于依赖于人工操作而导致程序崩溃检测中需要消耗大量的人力以及可以引起程序崩溃的样例稀缺的问题。
发明内容
本发明实施例提供一种程序的漏洞检测方法及装置,用以解决由于依赖于人工操作而导致程序崩溃检测中需要消耗大量的人力以及引起程序崩溃的测试样例稀缺的问题。
第一方面,本发明实施例提供的一种程序的漏洞检测方法,包括:
获取测试样例队列中的测试样例;对所述测试样例进行变异处理,得到所述测试样例对应的多个变异测试样例;
将所述多个变异测试样例输入到被检测程序中进行执行,确定各变异测试样例的指标参数;
在确定所述各变异测试样例中不存在导致所述被检测程序崩溃的变异测试样例时,从所述各变异测试样例中确定出指标参数符合预设条件的变异测试样例;
将所述符合预设条件的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述被检测程序崩溃的变异测试样例为止。
通过上述方式,利用对变异测试样例的自动化的检测和符合预设条件的合理筛选,依据实际需求,来确定出预设数量的导致被检测程序崩溃的变异测试样例,实现了对程序漏洞的自动化检测;减少了大量人力且解决了引起程序崩溃的测试样例稀缺的问题,根据实际需求来进行程序漏洞的自动化检测,体现了对于程序的漏洞检测的人性化处理。
在一种可能的设计中,所述变异处理包括下述任一处理方式或任意处理方式的组合:
位反转变异处理、整数加减变异处理、特殊内容替换变异处理、删除变异处理、插入变异处理、文件拼接变异处理。
通过上述方式,通过所提供的多种变异处理方式,可使得测试样例随机选择任一种方式或任意处理方式的组合来进行变异,以得到多个变异测试样例。
在一种可能的设计中,所述将所述多个变异测试样例输入到被检测程序中进行执行,确定各变异测试样例的指标参数,包括:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,采用动态二进制插桩技术,检测并记录所述变异测试样例执行期间所述被检测程序的代码覆盖度及代码执行路径。
通过上述方式,利用动态二进制插桩技术,来检测执行过程中的各个变异测试样例,确定所对应的代码覆盖度及代码执行路径,用于从各变异测试样例中确定出指标参数符合预设条件的变异测试样例。
在一种可能的设计中,所述方法还包括:
针对所述各变异测试样例中任一变异测试样例,检测所述变异测试样例执行过程中是否抛出信号量和/或异常;
若抛出所述信号量和/或异常,则将抛出信号量和/或异常的变异测试样例确定为导致所述检测程序崩溃的变异测试样例,否则不存在导致所述检测程序崩溃的变异测试样例。
通过上述方式,通过对执行过程中的变异测试样例的检测,确定是否有信号量和/或异常被抛出,从而确定导致检测程序崩溃的变异测试样例,实现了对变异测试样例在执行期间的程序崩溃的检测。
在一种可能的设计中,在确定所述各变异测试样例中存在导致所述被检测程序崩溃的变异测试样例时,对所述导致所述被检测程序崩溃的变异测试样例进行去重,将去重后的所述导致所述被检测程序崩溃的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述被检测程序崩溃的变异测试样例为止。
通过上述方式,实现了对导致程序崩溃的相同原因的变异样例的去重,并经过下一轮的测试,保证了所确定的预设数量的导致被检测程序崩溃的变异测试样例是由不同原因而导致的程序崩溃,满足了对导致程序崩溃的不同原因的变异测试样例的确定。
在一种可能的设计中,所述对所述导致所述被检测程序崩溃的变异测试样例进行去重,包括:
针对所述导致所述被检测程序崩溃的变异测试样例,检测所述导致所述被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况;
对比所述崩溃点和堆栈调用情况,将具有相同的崩溃点和堆栈调用情况的所述导致所述被检测程序崩溃的变异测试样例去重。
通过上述方式,利用对导致所述被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况的检测,来确定出导致程序崩溃的相同原因的变异测试样例,进而通过崩溃点和堆栈调用情况进行被检测程序崩溃的变异测试样例的去重,保证了所确定的导致被检测程序崩溃的各变异测试样例分别是由于不同原因而导致的程序崩溃,使得程序崩溃的检测更具有可靠性。
在一种可能的设计中,所述从所述各变异测试样例中确定出指标参数符合预设条件的变异测试样例,包括:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,将所述预设的代码覆盖度及预设的代码执行路径作为遗传算法的选择参数,对所述变异测试样例的指标参数进行筛选;确定出符合所述预设的代码覆盖度和所述预设的代码执行路径的变异测试样例。
通过上述方式,利用预设的代码覆盖度及预设的代码执行路径来作为遗传算法的选择参数,进而筛选出符合条件的变异样例,该符合条件的变异样例是具有较高的适应度的变异样例,可以加入测试样例队列进行下一轮测试,直到确定出预设数量的导致被检测程序崩溃的变异测试样例为止。
第二方面,本发明实施例提供了程序的漏洞检测装置,包括:
获取模块,用于获取测试样例队列中的测试样例;
处理模块,用于对所述测试样例进行变异处理,得到所述测试样例对应的多个变异测试样例;将所述多个变异测试样例输入到检测程序中进行执行,确定各变异测试样例的指标参数;在确定所述各变异测试样例中不存在导致所述检测程序崩溃的变异测试样例时,从所述各变异测试样例中确定出指标参数符合预设条件的变异测试样例;将所述符合预设条件的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述检测程序崩溃的变异测试样例为止。
在一种可能的设计中,所述变异处理包括下述任一处理方式或任意处理方式的组合:
位反转变异处理、整数加减变异处理、特殊内容替换变异处理、删除变异处理、插入变异处理、文件拼接变异处理。
在一种可能的设计中,所述处理模块具体用于:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,采用动态二进制插桩技术,检测并记录所述变异测试样例执行期间所述被检测程序的代码覆盖度及代码执行路径。
在一种可能的设计中,所述处理模块,还用于:
针对所述各变异测试样例中任一变异测试样例,检测所述变异测试样例执行过程中是否抛出信号量和/或异常;
若抛出所述信号量和/或异常,则将抛出信号量和/或异常的变异测试样例确定为导致所述检测程序崩溃的变异测试样例,否则不存在导致所述检测程序崩溃的变异测试样例。
在一种可能的设计中,所述处理模块,还用于:
在确定所述各变异测试样例中存在导致所述被检测程序崩溃的变异测试样例时,对所述导致所述被检测程序崩溃的变异测试样例进行去重,将去重后的所述导致所述被检测程序崩溃的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述被检测程序崩溃的变异测试样例为止。
在一种可能的设计中,所述处理模块,具体用于:
针对所述导致所述被检测程序崩溃的变异测试样例,检测所述导致所述被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况;
对比所述崩溃点和堆栈调用情况,将具有相同的崩溃点和堆栈调用情况的所述导致所述被检测程序崩溃的变异测试样例去重。
在一种可能的设计中,所述处理模块,具体用于:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,将所述预设的代码覆盖度及预设的代码执行路径作为遗传算法的选择参数,对所述变异测试样例的指标参数进行筛选;确定出符合所述预设的代码覆盖度和所述预设的代码执行路径的变异测试样例。
第三方面,本发明实施例还提供一种计算设备,包括:存储器,用于存储计算机程序;处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如第一方面的各种可能的设计中所述的方法。
第四方面,本发明实施例还提供一种计算机可读非易失性存储介质,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如第一方面的各种可能的设计中所述的方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种系统架构的示意图;
图2为本发明实施例提供的一种程序的漏洞检测流程图;
图3为本发明实施例提供的一种具体的执行程序的漏洞检测的流程图;
图4为本发明实施例提供的一种程序的漏洞检测装置结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
图1为本发明实施例提供的一种系统架构。如图1所示,该系统架构可以为服务器100,该服务器100可以包括处理器110、通信接口120和存储器130。
其中,通信接口120用于与终端设备进行通信,收发该终端设备传输的信息,实现通信。
处理器110是服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储在存储器130内的软件程序/或模块,以及调用存储在存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。
存储器130可用于存储软件程序以及模块,处理器110通过运行存储在存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。
基于上述描述,图2详细的示出了本发明实施例提供的一种程序的漏洞检测方法的流程,该流程可以由程序的漏洞检测装置执行,该装置可以为上述服务器或位于上述服务器内。
如图2所示,该流程具体包括:
步骤201,获取测试样例队列中的测试样例,对测试样例进行变异处理,得到测试样例对应的多个变异测试样例;
步骤202,将多个变异测试样例输入到被检测程序中进行执行,确定各变异测试样例的指标参数;
步骤203,在确定各变异测试样例中不存在导致被检测程序崩溃的变异测试样例时,从各变异测试样例中确定出指标参数符合预设条件的变异测试样例;
步骤204,将符合预设条件的变异测试样例加入测试样例队列进行下一轮测试,直到确定出预设数量的导致被检测程序崩溃的变异测试样例为止。
在步骤201的具体实施过程中,首先由操作者选取一系列的测试样例,来构成测试样例队列,并按照队列的执行顺序,选取测试样例队列中的测试样例,针对该测试样例进行变异处理,使得原有的测试样例的某一部分具有一定的修改,而与原有的测试样例不再相同,该原有的测试样例的变异处理可针对该测试样例的任意位置进行修改,且可以对该原有的测试样例随机进行不同方式的变异处理,得到该测试样例对应的多个变异测试样例。并针对该多个变异测试样例执行步骤202。
在步骤202中,针对步骤201所获得的多个变异测试样例,将多个变异测试样例输入到被执行程序中进行程序执行,并针对执行过程中的变异测试样例进行监测,确定各变异测试样例的指标参数,那么针对不同的变异测试样例具有对应不同的指标参数。
在步骤203的具体实施过程中,针对执行过程中的变异样例,还会来检测该变异测试样例中是否存在导致被检测程序崩溃的变异测试样例。应当理解的是,通过一轮或几轮的对测试样例的变异以及程序执行,得到导致被检测程序崩溃的变异测试样例概率较小。那么在确定各变异测试样例中不存在导致被检测程序崩溃的变异测试样例时,根据步骤202所确定的各变异测试样例对应的指标参数,来从各变异测试样例中确定出指标参数符合预设条件的变异测试样例,并执行步骤204。
在步骤204的具体实施过程中,将执行步骤203后,确定符合预设条件的变异测试样例后,将符合预设条件的变异测试样例加入到测试样例队列中,即该测试样例队列进行了更新,将该更新了的测试样例队列中的测试样例再次执行步骤201-203,直到检测到导致程序崩溃的变异测试样例,且检测到符合预设数量的导致被检测程序崩溃的变异测试样例为止,完成对导致被检测程序崩溃的变异测试样例的确定,实现对程序的漏洞检测。
针对步骤201中,对测试样例的变异处理,如下提供一种具体的实现方式:
针对测试样例的变异处理,可以为下述任一处理方式或任意处理方式的组合:
位反转变异处理、整数加减变异处理、特殊内容替换变异处理、删除变异处理、插入变异处理、文件拼接变异处理。
变异处理方式中:位反转变异处理,即将测试样例以二进制形式打开,将原本为0的位置反转为1,1的位置反转为0,以得到变异测试样例。
整数加减变异处理,即将测试样例以二进制形式打开,选取8/16/32位长度数据(即字节、字、双字),对原有数据加上或减去一个随机数。例如,随机数为2,即对应的二进制数为10,选取该测试样例中8位长度数据,和二进制数10的加或减的运算,以得到变异测试样例。
特殊内容替换变异处理,即将测试样例以二进制形式打开,选取8/16/32位长度数据(即字节、字、双字),将原有数据替换为容易造成溢出的特殊数值。该容易造成溢出的特殊数值可以为:
字节替换:-128,-1,0,1,16,32,64,100,127;
字替换:-32768,-129,128,255,256,512,1000,1024,4096,32767;
双字替换:-2147483648,-100663046,-32769,32768,65535,65536,100663045,2147483647。
通过对测试样例中的特殊内容替换变异,以得到变异测试样例。
删除变异处理,即将测试样例以二进制形式打开,随机选取8位长度数据删除,以得到变异测试样例。
插入变异处理,在测试样例中插入原始测试样例中的一段随机长度数据,将该随机长度的数据等长的插入到测试样例的随机位置,以得到变异测试样例。
文件拼接变异处理,将两个测试样例分别从随机位置分割后重新拼接组合,以得到变异后的两个变异测试样例。
通过上述处理方式,对测试样例进行变异处理,可随机选择上述变异处理方式中的任一处理方式对测试样例的任意位置进行变异,或者将其中几种(例如2种或3中)变异方式组合,对测试样例进行任意处理方式的组合的变异处理。例如,针对测试样例1进行变异处理时,通过对测试样例1进行位反转变异处理,得到变异测试样例1,且对该测试样例1进行了整数加减变异处理和删除变异处理的组合处理方式,确定了变异测试样例1,对该测试样例1进行了插入变异处理,得到了变异测试样例3,那么针对测试样例1经过变异处理后,便得到了该测试样例1所对应的3个变异测试样例。
针对对测试样例的变异处理,另一种可实现的方式是,对测试样例进行特定的变异处理,该特定的变异处理可以是针对测试样例中的特定位置来进行上述任一种处理方式或任意处理方式的组合,也可以是针对测试样例的随机位置进行特定处理方式的变异处理,例如,采用位反转变异处理和整数加减变异处理对测试样例进行变异处理。
针对步骤202中,将多个变异测试样例输入到被检测程序中进行执行,确定各变异测试样例的指标参数,如下提供一种具体的实现方式:
针对执行过程中的各变异测试样例中的任一变异测试样例,采用动态二进制插桩技术,检测并记录变异测试样例执行期间被检测程序的代码覆盖度及代码执行路径。
其中,动态二进制插桩(Dynamic Binary Instrumentation,DBI)技术,为通过在程序运行时注入插桩代码,来分析程序在运行时的行为的方法。动态二进制插桩技术,可以在不影响程序动态执行结果的前提下,按照用户的分析需求,在程序执行过程中插入特定分析代码,实现对程序动态执行过程的监控与分析。
通过采用动态二进制插桩技术来对执行过程中的变异测试样例进行检测,检测并记录变异测试样例执行期间被测程序的代码覆盖度和代码执行路径。其中,代码覆盖度是软件测试中的一种度量,用来描述程序中源代码被测试的比例和程度,并且在适应度函数中,代码覆盖度更高的样例将获得较高的适应度,被算法保留。针对代码执行路径指的是变异处理后得到的变异测试样例在执行过程中会触发不同的执行路径,那么如果检测发现该变异测试样例的执行过程中触发了此前未出现过的执行路径,便认为该变异测试样例获得了良性变异,即在适应度函数中可获得较高的适应度,可以被算法保留。
针对执行过程中的变异测试样例是否为导致被检测程序崩溃的变异测试样例的检测,如下提供一种具体的实现方式:
针对各变异测试样例中任一变异测试样例,检测该变异测试样例执行过程中是否抛出信号量和/或异常,若抛出信号量和/或异常,则将抛出信号量和/或异常的变异测试样例确定为导致检测程序崩溃的变异测试样例,否则不存在导致检测程序崩溃的变异测试样例。
例如,针对测试样例1的变异处理后得到了该测试样例1对应的3个变异测试样例,分别为变异测试样例1和变异测试样例2;将该变异测试样例1和变异测试样例2依次输入到被测程序中执行,对执行过程中的变异测试样例1和变异测试样例2分别进行检测,即等待抛出信号量和/或异常,若检测到在变异测试样例1执行过程中没有抛出信号量和/或异常,则表示该变异测试样例1为不会导致检测程序崩溃的变异测试样例;若检测到在变异测试样例2执行过程中抛出了信号量和/或异常,则表示该变异测试样例2为导致检测程序崩溃的变异测试样例。
需要说明的是,针对执行过程中的变异测试样例,检测变异测试样例执行期间被检测程序的代码覆盖度及代码执行路径,以及是否为导致被检测程序崩溃的变异测试样例的检测为同时进行的,即在程序过程中完成对该变异测试样例的相关检测。
针对执行步骤203中,若所存在的各变异测试样例中具有导致被检测程序崩溃的变异测试样例时,如下提供一种具体的实现方式:
在确定各变异测试样例中存在导致被检测程序崩溃的变异测试样例时,对导致被检测程序崩溃的变异测试样例进行去重,将去重后的导致被检测程序崩溃的变异测试样例加入测试样例队列进行下一轮测试,直到确定出预设数量的导致被检测程序崩溃的变异测试样例为止。
在对各变异测试样例的执行过程中,若确定存在导致被检测程序崩溃的变异测试样例,首先对该变异测试样例进行去重处理,即去除掉由相同原因而导致被检测程序崩溃的变异测试样例。
例如,检测到变异测试样例4为由原因4而导致被检测程序崩溃的变异测试样例,那么将对该变异测试样例4进行相应去重处理,确定是否存在由相同原因4而导致被检测程序崩溃的其他变异测试样例,例如变异测试样例5,若不存在导致原因4而导致被检测程序崩溃的其他变异测试样例,则将该变异测试样例加入到测试样例队列中,进行新一轮的测试,即再次执行步骤201-204;若存在由相同原因4而导致被检测程序崩溃的其他变异测试样例,例如变异测试样例6,则将该变异样例4去重,将导致被检测程序崩溃的变异测试样例6加入到测试样例队列中,进行新一轮的测试,即再次执行步骤201-204,直到确定出预设数量的导致被检测程序崩溃的变异测试样例为止。
应当理解的是,通过去重后的导致被检测程序崩溃的变异测试样例加入测试样例队列进行下一轮测试,直到确定出预设数量的导致被检测程序崩溃的变异测试样例中,保证了该预设数量的变异样例为由于不同原因而导致程序崩溃的变异测试样例。
针对导致被检测程序崩溃的变异测试样例的去重,如下提供一种具体的实现方式:
针对导致被检测程序崩溃的变异测试样例,检测导致被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况;对比崩溃点和堆栈调用情况,将具有相同的崩溃点和堆栈调用情况的导致被检测程序崩溃的变异测试样例去重。
针对在检测到程序执行过程中存在导致被检测程序崩溃的变异测试样例时,将检测并记录该崩溃的崩溃点和堆栈调用情况,通过所记录的崩溃点和堆栈调用情况,便可以知道程序运行的位置以及判断导致问题出现的原因,且可以单独保存该导致被检测程序崩溃的变异测试样例。根据对导致被检测程序崩溃的各变异测试样例的检测,进行对比导致被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况,将具有相同崩溃点和堆栈调用情况的对应的导致被检测程序崩溃的变异测试样例进行去重。
例如,检测到变异测试样例4为导致被检测程序崩溃的变异测试样例,那么在该变异测试样例4执行过程中,检测该变异测试样例4的崩溃点和堆栈调用情况,将对该变异测试样例4进行相应去重处理,确定是否存在相同崩溃点和堆栈调用情况的导致被检测程序崩溃的其他变异测试样例,例如变异测试样例6,若检测到所记录的变异测试样例的崩溃点和堆栈调用情况与变异测试样例4的相同,则将该变异测试样例4去重。
利用对导致被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况的检测,来确定出导致程序崩溃的相同原因的变异测试样例,进而通过崩溃点和堆栈调用情况进行被检测程序崩溃的变异测试样例的去重,保证了所确定的导致被检测程序崩溃的各变异测试样例分别是由于不同原因而导致的程序崩溃,使得程序崩溃的检测更具有可靠性。
针对步骤204中,从各变异测试样例中确定出指标参数符合预设条件的变异测试样例,如下提供一种具体的实现方式:
针对执行过程中的各变异测试样例中的任一变异测试样例,将预设的代码覆盖度及预设的代码执行路径作为遗传算法的选择参数,对变异测试样例的指标参数进行筛选,并确定出符合预设的代码覆盖度和预设的代码执行路径的变异测试样例。
在针对各变异测试样例的筛选过程中,引入了遗传算法(Genetic Algorithm,GA)对变异测试样例做出筛选,其中将预设的代码覆盖度和执行路径作为遗传算法中适应度函数的重要选择参数;该遗传算法是通过模拟自然进化过程搜索最优解的方法,遗传算法从串集开始搜索且覆盖面大,利于全局择优。那么通过引入的遗传算法便可以确定出适应度高的变异测试样例,即更加倾向于导致程序崩溃的变异测试样例,通过对执行过程中的变异测试样例的检测,确定了各变异测试样例所对应的代码覆盖度和执行路径,利用预设的代码覆盖度和执行路径来对各变异测试样例指标参数进行筛选,即利用预设的代码覆盖度和执行路径来对携带有代码覆盖度和执行路径的各变异测试样例进行筛选,确定出符合预设的代码覆盖度和预设的代码执行路径的变异测试样例。
为了更清楚的介绍上述方法流程,本发明实施例提供以下示例。
图3为本发明实施例提供的一种具体的执行程序的漏洞检测方法的流程图;具体包括以下步骤:
S301、从测试队列中选取测试样例;
S302、将按照队列执行顺序所选取的测试样例送入变异模块;
S303、变异各测试样例;变异模块采用上述变异方式对测试样例进行变异处理,得到各变异测试样例;例如,针对测试样例1进行三种不同变异方式的变异处理,得到变异测试样例1、变异测试样例2和变异测试样例3。
S304、送入变异测试样例;将各变异测试样例依次送入程序执行模块中,执行各变异测试样例,并在执行过程中,利用代码覆盖度检测模块对各变异测试样例进行代码覆盖度检测和代码执行路径的检测,并同时利用崩溃检测模块,对变异测试样例进行实时监测,等待检测抛出的信号量和异常。
情形一:若检测到抛出的信号量和异常,则表示该变异测试样例为导致程序崩溃的变异测试样例,且针对变异测试样例在程序执行过程中出现的崩溃,崩溃检测模块将记录该崩溃的崩溃信息;
情形二:若没有检测到抛出的信号量和异常,则表示该变异测试样例不是引起程序崩溃的变异测试样例。
S305、送入各变异测试样例;
针对情形一:经过步骤S304后,变异测试样例不是导致程序崩溃的变异测试样例,将变异测试样例以及相应检测到的代码覆盖度检测和代码执行路径,送入筛选模块,根据遗传算法对变异测试样例做出筛选。
S306、筛选模块会选择代码覆盖度和代码执行路径高于预设代码覆盖度和代码执行路径的变异测试样例,执行步骤S306,即将此变异测试样例保留,并加入测试样例队列中,执行新一轮的步骤S301-S305;应当理解的是,针对代码覆盖度以及代码执行路径高于预设代码覆盖度和代码执行路径的变异测试样例,更加倾向于为引起程序崩溃的变异测试样例。
S307、丢弃此变异测试样例,并执行测试样例队列中的下一个测试样例;
针对步骤S306后,筛选模块获取的变异测试样例,若检测该变异测试样例的代码覆盖度和代码执行路径不符合预设代码覆盖度和代码执行路径,则将此变异测试样例丢弃,按照测试样例的队列顺序执行下一个测试样例,进行步骤S301-S305,直到筛选模块检测到预设数量的导致被检测程序崩溃的变异测试样例为止。
针对情形二:经过执行步骤S304,若崩溃检测模块对变异测试样例进行实时监测,检测到了抛出的信号量和异常,针对是导致被检测程序崩溃的变异测试样例,可根据实际需求,确定是否要继续获取引起程序崩溃的其他原因,即是否要获取更多的引起程序崩溃的变异测试样例;例如,实际需求为找出引起程序崩溃的原因X和原因Y;通过执行步骤S304后,将该导致被检测程序崩溃的变异测试样例执行步骤S305,送入筛选模块,筛选模块会根据该变异测试样例的崩溃信息,确定是由于原因X引起的程序崩溃,确定筛选模块所记录的变异测试样例没有原因X引起的程序崩溃,则将该变异测试样例加入到测试样例队列中,进行执行步骤S301-S305,确定引起程序崩溃的原因Y的变异测试样例。若经过再一轮的执行,筛选模块检测该变异测试样例的崩溃信息,确定仍是由于原因X引起的程序崩溃,则进行去重,即去除掉引起程序崩溃的相同原因X的变异测试样例,并将由于原因X引起的程序崩溃的变异测试样例加入到测试样例队列中,进行下一轮的执行步骤S301-S305,确定引起程序崩溃的原因Y的变异测试样例。
从上述内容可看出:获取测试样例队列中的测试样例,并对测试样例进行变异处理,得到测试样例对应的多个变异测试样例;通过将多个变异测试样例输入到被检测程序中进行执行,来确定各变异测试样例的指标参数,并在确定各变异测试样例中不存在导致被检测程序崩溃的变异测试样例时,从各变异测试样例中确定出指标参数符合预设条件的变异测试样例,将符合预设条件的变异测试样例加入测试样例队列进行下一轮测试,直到确定出预设数量的导致被检测程序崩溃的变异测试样例为止。通过上述方式,利用对变异测试样例的自动化的检测和符合预设条件的合理筛选,依据实际需求,来确定出预设数量的导致被检测程序崩溃的变异测试样例,实现了对程序漏洞的自动化检测;减少了大量人力且解决了引起程序崩溃的测试样例稀缺的问题,根据实际需求来进行程序漏洞的自动化检测,体现了对于程序的漏洞检测的人性化处理。
图4为本发明实施例提供的一种程序的漏洞检测装置结构示意图。基于相同构思,本发明实施例提供的一种程序的漏洞检测装置,该装置用于实现上述实施例中的任一种程序的漏洞检测方法。如图4所示,该程序的漏洞检测装置400包括:获取模块401和处理模块402,其中:
获取模块401,用于获取测试样例队列中的测试样例;
处理模块,用于对所述测试样例进行变异处理,得到所述测试样例对应的多个变异测试样例;将所述多个变异测试样例输入到检测程序中进行执行,确定各变异测试样例的指标参数;在确定所述各变异测试样例中不存在导致所述检测程序崩溃的变异测试样例时,从所述各变异测试样例中确定出指标参数符合预设条件的变异测试样例;将所述符合预设条件的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述检测程序崩溃的变异测试样例为止。
在一种可能的设计中,所述变异处理包括下述任一处理方式或任意处理方式的组合:
位反转变异处理、整数加减变异处理、特殊内容替换变异处理、删除变异处理、插入变异处理、文件拼接变异处理。
在一种可能的设计中,所述处理模块402具体用于:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,采用动态二进制插桩技术,检测并记录所述变异测试样例执行期间所述被检测程序的代码覆盖度及代码执行路径。
在一种可能的设计中,所述处理模块402,还用于:
针对所述各变异测试样例中任一变异测试样例,检测所述变异测试样例执行过程中是否抛出信号量和/或异常;
若抛出所述信号量和/或异常,则将抛出信号量和/或异常的变异测试样例确定为导致所述检测程序崩溃的变异测试样例,否则不存在导致所述检测程序崩溃的变异测试样例。
在一种可能的设计中,所述处理模块402,还用于:
在确定所述各变异测试样例中存在导致所述被检测程序崩溃的变异测试样例时,对所述导致所述被检测程序崩溃的变异测试样例进行去重,将去重后的所述导致所述被检测程序崩溃的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述被检测程序崩溃的变异测试样例为止。
在一种可能的设计中,所述处理模块402,具体用于:
针对所述导致所述被检测程序崩溃的变异测试样例,检测所述导致所述被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况;
对比所述崩溃点和堆栈调用情况,将具有相同的崩溃点和堆栈调用情况的所述导致所述被检测程序崩溃的变异测试样例去重。
在一种可能的设计中,所述处理模块402,具体用于:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,将所述预设的代码覆盖度及预设的代码执行路径作为遗传算法的选择参数,对所述变异测试样例的指标参数进行筛选;确定出符合所述预设的代码覆盖度和所述预设的代码执行路径的变异测试样例。
基于同样的发明构思,本发明实施例还提供另一种计算机设备,该计算机设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(PersonalDigital Assistant,PDA)等。该计算机设备可以包括中央处理器(Center ProcessingUnit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(CathodeRay Tube,CRT)等。
存储器可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本发明实施例中,存储器可以用于存储上述程序的漏洞检测方法的程序。
处理器通过调用存储器存储的程序指令,处理器用于按照获得的程序指令执行上述程序的漏洞检测方法。
基于同样的发明构思,本发明实施例提供了一种计算机存储介质,用于储存为上述计算机设备所用的计算机程序指令,其包含用于执行上述程序的漏洞检测方法的程序。
所述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (16)
1.一种程序的漏洞检测方法,其特征在于,所述方法包括:
获取测试样例队列中的测试样例;对所述测试样例进行变异处理,得到所述测试样例对应的多个变异测试样例;
将所述多个变异测试样例输入到被检测程序中进行执行,确定各变异测试样例的指标参数;
在确定所述各变异测试样例中不存在导致所述被检测程序崩溃的变异测试样例时,从所述各变异测试样例中确定出指标参数符合预设条件的变异测试样例;
将所述符合预设条件的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述被检测程序崩溃的变异测试样例为止。
2.根据权利要求1所述的方法,其特征在于,所述变异处理包括下述任一处理方式或任意处理方式的组合:
位反转变异处理、整数加减变异处理、特殊内容替换变异处理、删除变异处理、插入变异处理、文件拼接变异处理。
3.根据权利要求1所述的方法,其特征在于,所述将所述多个变异测试样例输入到被检测程序中进行执行,确定各变异测试样例的指标参数,包括:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,采用动态二进制插桩技术,检测并记录所述变异测试样例执行期间所述被检测程序的代码覆盖度及代码执行路径。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述各变异测试样例中任一变异测试样例,检测所述变异测试样例执行过程中是否抛出信号量和/或异常;
若抛出所述信号量和/或异常,则将抛出信号量和/或异常的变异测试样例确定为导致所述检测程序崩溃的变异测试样例,否则不存在导致所述检测程序崩溃的变异测试样例。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在确定所述各变异测试样例中存在导致所述被检测程序崩溃的变异测试样例时,对所述导致所述被检测程序崩溃的变异测试样例进行去重,将去重后的所述导致所述被检测程序崩溃的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述被检测程序崩溃的变异测试样例为止。
6.根据权利要求5所述的方法,其特征在于,所述对所述导致所述被检测程序崩溃的变异测试样例进行去重,包括:
针对所述导致所述被检测程序崩溃的变异测试样例,检测所述导致所述被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况;
对比所述崩溃点和堆栈调用情况,将具有相同的崩溃点和堆栈调用情况的所述导致所述被检测程序崩溃的变异测试样例去重。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述从所述各变异测试样例中确定出指标参数符合预设条件的变异测试样例,包括:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,将所述预设的代码覆盖度及预设的代码执行路径作为遗传算法的选择参数,对所述变异测试样例的指标参数进行筛选;确定出符合所述预设的代码覆盖度和所述预设的代码执行路径的变异测试样例。
8.一种程序的漏洞检测装置,其特征在于,包括:
获取模块,用于获取测试样例队列中的测试样例;
处理模块,用于对所述测试样例进行变异处理,得到所述测试样例对应的多个变异测试样例;将所述多个变异测试样例输入到检测程序中进行执行,确定各变异测试样例的指标参数;在确定所述各变异测试样例中不存在导致所述检测程序崩溃的变异测试样例时,从所述各变异测试样例中确定出指标参数符合预设条件的变异测试样例;将所述符合预设条件的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述检测程序崩溃的变异测试样例为止。
9.根据权利要求8所述的装置,其特征在于,所述变异处理包括下述任一处理方式或任意处理方式的组合:
位反转变异处理、整数加减变异处理、特殊内容替换变异处理、删除变异处理、插入变异处理、文件拼接变异处理。
10.根据权利要求8所述的装置,其特征在于,所述处理模块具体用于:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,采用动态二进制插桩技术,检测并记录所述变异测试样例执行期间所述被检测程序的代码覆盖度及代码执行路径。
11.根据权利要求8所述的装置,其特征在于,所述处理模块还用于:
针对所述各变异测试样例中任一变异测试样例,检测所述变异测试样例执行过程中是否抛出信号量和/或异常;
若抛出所述信号量和/或异常,则将抛出信号量和/或异常的变异测试样例确定为导致所述检测程序崩溃的变异测试样例,否则不存在导致所述检测程序崩溃的变异测试样例。
12.根据权利要求8所述的装置,其特征在于,所述处理模块还用于:
在确定所述各变异测试样例中存在导致所述被检测程序崩溃的变异测试样例时,对所述导致所述被检测程序崩溃的变异测试样例进行去重,将去重后的所述导致所述被检测程序崩溃的变异测试样例加入所述测试样例队列进行下一轮测试,直到确定出预设数量的导致所述被检测程序崩溃的变异测试样例为止。
13.根据权利要求12所述的装置,其特征在于,所述处理模块具体用于:
针对所述导致所述被检测程序崩溃的变异测试样例,检测所述导致所述被检测程序崩溃的变异测试样例的崩溃点和堆栈调用情况;
对比所述崩溃点和堆栈调用情况,将具有相同的崩溃点和堆栈调用情况的所述导致所述被检测程序崩溃的变异测试样例去重。
14.根据权利要求8至13任一项所述的装置,其特征在于,所述处理模块具体用于:
针对执行过程中的所述各变异测试样例中的任一变异测试样例,将所述预设的代码覆盖度及预设的代码执行路径作为遗传算法的选择参数,对所述变异测试样例的指标参数进行筛选;确定出符合所述预设的代码覆盖度和所述预设的代码执行路径的变异测试样例。
15.一种计算机设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如权利要求1-7任一项所述的方法。
16.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011546005.6A CN112527681B (zh) | 2020-12-24 | 2020-12-24 | 一种程序的漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011546005.6A CN112527681B (zh) | 2020-12-24 | 2020-12-24 | 一种程序的漏洞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112527681A true CN112527681A (zh) | 2021-03-19 |
CN112527681B CN112527681B (zh) | 2024-03-12 |
Family
ID=74976171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011546005.6A Active CN112527681B (zh) | 2020-12-24 | 2020-12-24 | 一种程序的漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527681B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114722403A (zh) * | 2022-05-19 | 2022-07-08 | 北京华云安信息技术有限公司 | 一种远程执行漏洞挖掘方法和装置 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010048776A1 (zh) * | 2008-10-28 | 2010-05-06 | 中国科学院研究生院 | 一种obex协议漏洞挖掘方法及其系统 |
CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
US20150087544A1 (en) * | 2009-11-23 | 2015-03-26 | Cyvek, Inc. | Methods and Systems for Manufacture of Microarray Assay Systems, Conducting Microfluidic Assays, and Monitoring and Scanning to Obtain Microfluidic Assay Results |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成系统和方法 |
US20170046518A1 (en) * | 2015-08-11 | 2017-02-16 | Symantec Corporation | Systems and methods for detecting unknown vulnerabilities in computing processes |
WO2017219589A1 (zh) * | 2016-06-19 | 2017-12-28 | 乐视控股(北京)有限公司 | 程序崩溃消息的处理方法及系统 |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
CN109032927A (zh) * | 2018-06-26 | 2018-12-18 | 腾讯科技(深圳)有限公司 | 一种漏洞挖掘方法及装置 |
CN109190379A (zh) * | 2018-08-03 | 2019-01-11 | 清华大学 | 一种深度学习系统的漏洞检测方法和装置 |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
CN110348216A (zh) * | 2019-05-24 | 2019-10-18 | 中国科学院信息工程研究所 | 一种针对云计算系统虚拟设备的模糊测试方法及系统 |
US20200082095A1 (en) * | 2018-09-11 | 2020-03-12 | Ca, Inc. | Independent development environment configured to annotate source code of container images with notifications of security vulnerabilities |
CN111382077A (zh) * | 2020-03-13 | 2020-07-07 | 北京奇艺世纪科技有限公司 | 应用程序崩溃原因定位方法、装置、电子设备及存储介质 |
-
2020
- 2020-12-24 CN CN202011546005.6A patent/CN112527681B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010048776A1 (zh) * | 2008-10-28 | 2010-05-06 | 中国科学院研究生院 | 一种obex协议漏洞挖掘方法及其系统 |
US20150087544A1 (en) * | 2009-11-23 | 2015-03-26 | Cyvek, Inc. | Methods and Systems for Manufacture of Microarray Assay Systems, Conducting Microfluidic Assays, and Monitoring and Scanning to Obtain Microfluidic Assay Results |
CN102622558A (zh) * | 2012-03-01 | 2012-08-01 | 北京邮电大学 | 一种二进制程序漏洞的挖掘装置和方法 |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成系统和方法 |
US20170046518A1 (en) * | 2015-08-11 | 2017-02-16 | Symantec Corporation | Systems and methods for detecting unknown vulnerabilities in computing processes |
WO2017219589A1 (zh) * | 2016-06-19 | 2017-12-28 | 乐视控股(北京)有限公司 | 程序崩溃消息的处理方法及系统 |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
CN109032927A (zh) * | 2018-06-26 | 2018-12-18 | 腾讯科技(深圳)有限公司 | 一种漏洞挖掘方法及装置 |
CN109190379A (zh) * | 2018-08-03 | 2019-01-11 | 清华大学 | 一种深度学习系统的漏洞检测方法和装置 |
US20200082095A1 (en) * | 2018-09-11 | 2020-03-12 | Ca, Inc. | Independent development environment configured to annotate source code of container images with notifications of security vulnerabilities |
CN110147310A (zh) * | 2019-04-02 | 2019-08-20 | 中国科学院信息工程研究所 | 一种基于变异策略的并行模糊测试调度方法及装置 |
CN110348216A (zh) * | 2019-05-24 | 2019-10-18 | 中国科学院信息工程研究所 | 一种针对云计算系统虚拟设备的模糊测试方法及系统 |
CN111382077A (zh) * | 2020-03-13 | 2020-07-07 | 北京奇艺世纪科技有限公司 | 应用程序崩溃原因定位方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
A.DESSIATNIKOFF等: "A clustering approach for web vulnerabilities detection", 《2011 17TH IEEE PACIFIC RIM INTERNATIONAL SYMPOSIUM ON DEPENDABLE COMPUTING》, pages 194 - 203 * |
郭健超: "智能物联网设备的二进制漏洞挖掘及安全防护技术研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》, no. 9, pages 136 - 147 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114722403A (zh) * | 2022-05-19 | 2022-07-08 | 北京华云安信息技术有限公司 | 一种远程执行漏洞挖掘方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112527681B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106610892B (zh) | 内存泄漏检测方法和装置 | |
KR101174751B1 (ko) | 커널 콜백 매커니즘을 이용한 악성코드 자동 분석 방법 | |
US20090320129A1 (en) | Secure control flows by monitoring control transfers | |
JP6777732B2 (ja) | コンピューティングデバイスにおけるプロセスに対するソフトウェア攻撃の検出 | |
US12093398B2 (en) | Vulnerability analysis and reporting for embedded systems | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN113419960B (zh) | 用于可信操作系统内核模糊测试的种子生成方法及系统 | |
US11609987B2 (en) | Advanced file modification heuristics | |
Gómez et al. | Mining test repositories for automatic detection of UI performance regressions in Android apps | |
CN111475411A (zh) | 一种服务器问题检测方法、系统、终端及存储介质 | |
CN115098292B (zh) | 应用程序崩溃根原因识别方法、装置及电子设备 | |
US10664594B2 (en) | Accelerated code injection detection using operating system controlled memory attributes | |
US11868465B2 (en) | Binary image stack cookie protection | |
CN109542341B (zh) | 一种读写io监测方法、装置、终端及计算机可读存储介质 | |
CN112527681B (zh) | 一种程序的漏洞检测方法及装置 | |
Guerra-Manzanares et al. | On the relativity of time: Implications and challenges of data drift on long-term effective android malware detection | |
CN116414722B (zh) | 模糊测试处理方法、装置、模糊测试系统及存储介质 | |
US8402545B1 (en) | Systems and methods for identifying unique malware variants | |
CN108427882B (zh) | 基于行为特征抽取的安卓软件动态分析检测法 | |
CN115630362A (zh) | 一种无文件攻击的检测方法、装置、设备及存储介质 | |
CN116775202A (zh) | 模糊测试方法、装置、介质、电子设备及计算机程序产品 | |
CN114647845A (zh) | 一种恶意样本延时代码的检测识别方法及装置 | |
Yuan et al. | A method for detecting buffer overflow vulnerabilities | |
JP2022518659A (ja) | エクスプロイト・キット検出 | |
CN113094709B (zh) | 风险应用的检测方法、装置和服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |