CN110990277A - 一种漏洞挖掘方法、装置及计算机可读存储介质 - Google Patents
一种漏洞挖掘方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN110990277A CN110990277A CN201911203273.5A CN201911203273A CN110990277A CN 110990277 A CN110990277 A CN 110990277A CN 201911203273 A CN201911203273 A CN 201911203273A CN 110990277 A CN110990277 A CN 110990277A
- Authority
- CN
- China
- Prior art keywords
- function
- program
- mined
- risk
- test file
- 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
- 238000000034 method Methods 0.000 title claims abstract description 99
- 238000005065 mining Methods 0.000 title claims abstract description 27
- 230000006870 function Effects 0.000 claims abstract description 258
- 238000012360 testing method Methods 0.000 claims abstract description 98
- 238000012544 monitoring process Methods 0.000 claims abstract description 27
- 230000005856 abnormality Effects 0.000 claims abstract description 14
- 230000015654 memory Effects 0.000 claims description 63
- 238000004590 computer program Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 4
- 238000001514 detection method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical 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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开一种漏洞挖掘方法、装置及计算机可读存储介质,用于解决由于不确定程序中那些位置存在漏洞,因此,在解析测试文件的过程中需要监测每一个位置,以致降低了监测效率的问题,其中,该方法包括:获取待挖掘程序;确定待挖掘程序中风险度大于阈值的风险函数;监测风险函数中每个函数解析测试文件的解析过程;在监测到第一函数解析测试文件的解析过程中出现异常的情况下,确定待挖掘程序中第一函数对应的位置存在漏洞,第一函数为风险函数中的任一函数。实施本发明实施例,可以提高监测效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种漏洞挖掘方法、装置及计算机可读存储介质。
背景技术
随着计算机技术的不断发展,软件开发人员针对不同应用场景开发了的程序越来越多。然而,在程序存在漏洞的情况下,不法人员很容易利用漏洞对程序进行攻击。因此,为了提高程序的安全性,如何挖掘程序中的漏洞已成为一个亟待解决的技术问题。
目前,一种常用的漏洞挖掘方法为:监测程序解析测试文件的过程,监测到待挖掘程序在解析测试文件的过程中发生异常的情况下,将发生异常的位置确定为程序的漏洞。上述方法中,由于不确定程序中那些位置存在漏洞,因此,在解析测试文件的过程中需要监测每一个位置,以致降低了监测效率。
发明内容
本发明实施例公开一种漏洞挖掘方法、装置及计算机可读存储介质,用于解决由于不确定程序中那些位置存在漏洞,因此,在解析测试文件的过程中需要监测每一个位置,以致降低了监测效率的问题。
本发明实施例第一方面公开一种漏洞挖掘方法,包括:
获取待挖掘程序;
确定所述待挖掘程序中风险度大于阈值的风险函数;
监测所述风险函数中每个函数解析测试文件的解析过程;
在监测到第一函数解析所述测试文件的解析过程中出现异常的情况下,确定所述待挖掘程序中所述第一函数对应的位置存在漏洞,所述第一函数为所述风险函数中的任一函数。
作为一种可能的实现方式,所述确定所述待挖掘程序中风险度大于阈值的函数包括:
将所述待挖掘程序包括的函数中具有内存拷贝功能的函数确定为所述待挖掘程序中风险度大于阈值的函数。
作为一种可能的实现方式,所述具有内存拷贝功能的函数包括具有内存拷贝功能的库函数和/或自定义函数。
作为一种可能的实现方式,所述获取待挖掘程序之后,所述方法还包括:
获取所述待挖掘程序的格式;
生成所述格式的初始文件,所述测试文件为所述初始文件或所述初始文件对应的文件。
作为一种可能的实现方式,所述确定所述待挖掘程序中风险度大于阈值的风险函数之后,所述方法还包括:
在所述待挖掘程序中的第二函数解析完所述测试文件后,根据所述初始文件确定下一个测试文件,所述第二函数为所述风险函数中的一个函数;
控制所述第二函数解析所述下一个测试文件。
作为一种可能的实现方式,所述确定所述待挖掘程序中风险度大于阈值的风险函数之后,所述方法还包括:
在所述待挖掘程序中所述第二函数对应位置设置断点;
所述根据所述初始文件确定下一个测试文件包括:
在所述断点修改所述初始文件的参数,得到下一个测试文件;
所述控制所述第二函数解析所述下一个测试文件包括:
控制所述断点解析所述下一个测试文件。
作为一种可能的实现方式,所述确定所述待挖掘程序中风险度大于阈值的风险函数之后,所述方法还包括:
在所述待挖掘程序第一次执行到所述断点时,存储所述待挖掘程序对应的中央处理器(central processing unit,CPU)环境和内存环境;
所述控制所述断点解析所述下一个测试文件之前,所述方法还包括:
将所述待挖掘程序对应的CPU环境和内存环境设置为所述CPU环境和所述内存环境。
本发明实施例第二方面公开一种漏洞挖掘装置,包括:
获取单元,用于获取待挖掘程序;
第一确定单元,用于确定所述待挖掘程序中风险度大于阈值的风险函数;
监测单元,用于监测所述风险函数中每个函数解析测试文件的解析过程;
第二确定单元,用于在监测到第一函数解析所述测试文件的解析过程中出现异常的情况下,确定所述待挖掘程序中所述第一函数对应的位置存在漏洞,所述第一函数为所述风险函数中的任一函数。
作为一种可能的实现方式,所述第一确定单元,具体用于将所述待挖掘程序包括的函数中具有内存拷贝功能的函数确定为所述待挖掘程序中风险度大于阈值的函数。
作为一种可能的实现方式,所述具有内存拷贝功能的函数包括具有内存拷贝功能的库函数和/或自定义函数。
作为一种可能的实现方式,所述获取单元,还用于获取待挖掘程序之后,获取所述待挖掘程序的格式;
所述装置还包括:
生成单元,用于生成所述格式的初始文件,所述测试文件为所述初始文件或所述初始文件对应的文件。
在一种可能的实现方式中,所述装置还包括:
第三确定单元,用于所述第一确定单元确定所述待挖掘程序中风险度大于阈值的风险函数之后,在所述待挖掘程序中的第二函数解析完所述测试文件后,根据所述初始文件确定下一个测试文件,所述第二函数为所述风险函数中的一个函数;
控制单元,用于控制所述第二函数解析所述下一个测试文件。
在一种可能的实现方式中,所述装置还包括:
设置单元,用于所述第一确定单元确定所述待挖掘程序中风险度大于阈值的风险函数之后,在所述待挖掘程序中所述第二函数对应位置设置断点;
所述第三确定单元,具体用于在所述断点修改所述初始文件的参数,得到下一个测试文件;
所述控制单元,具体用于控制所述断点解析所述下一个测试文件。
在一种可能的实现方式中,所述装置还包括:
存储单元,用于所述第一确定单元确定所述待挖掘程序中风险度大于阈值的风险函数之后,在所述待挖掘程序第一次执行到所述断点时,存储所述待挖掘程序对应的CPU环境和内存环境;
所述设置单元,还用于所述控制单元控制所述断点解析所述下一个测试文件之前,将所述待挖掘程序对应的CPU环境和内存环境设置为所述CPU环境和所述内存环境。
本发明实施例第三方面公开了一种漏洞挖掘装置,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于调用所述程序指令,执行本发明实施例第一方面或第一方面任一实现方式公开的漏洞挖掘方法。
本发明实施例第四方面公开了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行本发明实施例第一方面或第一方面任一实现方式公开的漏洞挖掘方法。
本发明实施例第五方面公开了一种应用程序,该应用程序用于在运行时执行本发明实施例第一方面或第一方面任一实现方式公开的漏洞挖掘方法。
本发明实施例中,获取待挖掘程序,确定待挖掘程序中风险度大于阈值的风险函数,监测风险函数中每个函数解析测试文件的解析过程,在监测到第一函数解析测试文件的解析过程中出现异常的情况下,确定待挖掘程序中第一函数对应的位置存在漏洞。可见,在待挖掘程序解析测试文件的过程中,不需要监测待挖掘程序的每一个位置,只需要监测风险度大于阈值的函数即可,减小了监测范围,因此,可以提高监测效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种漏洞挖掘方法的流程示意图;
图2是本发明实施例公开的另一种漏洞挖掘方法的流程示意图;
图3是本发明实施例公开的一种漏洞挖掘装置的结构示意图;
图4是本发明实施例公开的另一种漏洞挖掘装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开一种漏洞挖掘方法、装置及计算机可读存储介质,用于解决由于不确定程序中那些位置存在漏洞,因此,在解析测试文件的过程中需要监测每一个位置,以致降低了监测效率的问题。以下分别进行详细说明。
请参阅图1,图1是本发明实施例公开的一种漏洞挖掘方法的流程示意图。其中,该漏洞挖掘方法可以应用于台式电脑、笔记本电脑等可以运行代码的电子设备。如图1所示,该漏洞挖掘方法可以包括以下步骤。
101、获取待挖掘程序。
在需要对开发的程序进行漏洞挖掘的情况下,即需要确定待挖掘程序中存在哪些漏洞的情况下,可以获取待挖掘程序。待挖掘程序可以是各种应用的程序,也可以是其它模型、算法等的程序,如系统的程序,在此不加限定。待挖掘程序可以是从本地获取的,也可以是从网络或服务器获取的,还可以是从其它设备获取的,在此不加限定。
102、确定待挖掘程序中风险度大于阈值的风险函数。
由于程序中包括很多函数,而有些函数的风险度比较高,即存在漏洞的几率较大,因此,获取到待挖掘程序之后,可以确定待挖掘程序中风险度大于阈值的风险函数,即确定待挖掘程序中存在漏洞的几率大于一定阈值的函数。具体地,在函数中存在内存复制操作时,由于没有控制操作大小很容易导致漏洞,因此,可以将待挖掘程序包括的函数中具有内存拷贝功能的函数确定为待挖掘程序中风险度大于阈值的函数。具有内存拷贝功能的函数可以为具有内存拷贝功能的库函数,如memcpy函数、strcpy函数等;也可以为具有内存拷贝功能的自定义函数,如函数中存在rep movs等串操作指令;还可以为具有内存拷贝功能的库函数和自定义函数。具有内存拷贝功能即具有拷贝或复制内存中存储的数据的功能。自定义函数即用户自己定义的函数,不是标准的函数。
103、监测风险函数中每个函数解析测试文件的解析过程。
确定出待挖掘程序中风险度大于阈值的风险函数之后,可以监测风险函数中每个函数解析测试文件的解析过程。具体地,可以在待挖掘程序打开测试文件的过程中,监测风险函数中每个函数解析测试文件的解析过程。在待挖掘程序支持命令行启动的情况下,可以在待挖掘程序启动时打开测试文件。在待挖掘程序不支持命令行启动的情况下,可以先启动待挖掘程序,等待挖掘程序启动之后,即等待挖掘程序打开之后,再使用待挖掘程序打开测试文件。
104、在监测到第一函数解析测试文件的解析过程中出现异常的情况下,确定待挖掘程序中第一函数对应的位置存在漏洞。
在监测风险函数中每个函数解析测试文件的解析过程中,在监测到第一函数解析测试文件的解析过程中出现异常的情况下,可以确定待挖掘程序中第一函数对应的位置存在漏洞。第一函数为风险函数中的任一函数。异常可以是崩溃、拒绝服务、卡死等。
在图1所描述的漏洞挖掘方法中,获取待挖掘程序,确定待挖掘程序中风险度大于阈值的风险函数,监测风险函数中每个函数解析测试文件的解析过程,在监测到第一函数解析测试文件的解析过程中出现异常的情况下,确定待挖掘程序中第一函数对应的位置存在漏洞。可见,在待挖掘程序解析测试文件的过程中,不需要监测待挖掘程序的每一个位置,只需要监测风险度大于阈值的函数即可,减小了监测范围,因此,可以提高监测效率。
请参阅图2,图2是本发明实施例公开的另一种漏洞挖掘方法的流程示意图。其中,该漏洞挖掘方法可以应用于电脑、笔记本电脑等可以运行代码的电子设备。如图2所示,该漏洞挖掘方法可以包括以下步骤。
201、获取待挖掘程序。
在需要对开发的程序进行漏洞挖掘的情况下,即需要确定待挖掘程序中存在哪些漏洞的情况下,可以获取待挖掘程序。待挖掘程序可以是各种应用的程序,也可以是其它模型、算法等的程序,如系统的程序,在此不加限定。待挖掘程序可以是从本地获取的,也可以是从网络或服务器获取的,还可以是从其它设备获取的,在此不加限定。
202、获取待挖掘程序的格式,生成该格式的初始文件。
由于待挖掘程序可能存在多种格式,而不同格式对应的文件可能不同。例如,在待挖掘程序为office程序的情况下,它的格式可以为doc格式、docx格式、xls格式等。因此,获取到待挖掘程序之后,可以先获取待挖掘程序的格式,之后生成该格式的初始文件。
203、确定待挖掘程序中风险度大于阈值的风险函数。
由于程序中包括很多函数,而有些函数的风险度比较高,即存在漏洞的几率较大,因此,获取到待挖掘程序之后,可以确定待挖掘程序中风险度大于阈值的风险函数,即确定待挖掘程序中存在漏洞的几率大于一定阈值的函数。具体地,在函数中存在内存复制操作时,由于没有控制操作大小很容易导致漏洞,因此,可以将待挖掘程序包括的函数中具有内存拷贝功能的函数确定为待挖掘程序中风险度大于阈值的函数。具有内存拷贝功能的函数可以为具有内存拷贝功能的库函数,如memcpy函数、strcpy函数等;也可以为具有内存拷贝功能的自定义函数,如函数中存在rep movs等串操作指令;还可以为具有内存拷贝功能的库函数和自定义函数。具有内存拷贝功能即具有拷贝或复制内存中存储的数据的功能。自定义函数即用户自己定义的函数,不是标准的函数。
204、监测风险函数中每个函数解析测试文件的解析过程。
确定出待挖掘程序中风险度大于阈值的风险函数之后,可以通过待挖掘程序解析测试文件。在待挖掘程序解析测试文件的过程中,可以监测风险函数中每个函数解析测试文件的解析过程。具体地,可以在待挖掘程序打开测试文件的过程中,监测风险函数中每个函数解析测试文件的解析过程。在待挖掘程序支持命令行启动的情况下,可以在待挖掘程序启动时打开测试文件。在待挖掘程序不支持命令行启动的情况下,可以先启动待挖掘程序,等待挖掘程序启动之后,即等待挖掘程序打开之后,再使用待挖掘程序打开测试文件。测试文件可以是初始文件,也可以是初始文件对应的文件,即修改初始文件中的参数得到的文件,也即修改初始文件中参数的值得到的文件。
205、在监测到第一函数解析测试文件的解析过程中出现异常的情况下,确定待挖掘程序中第一函数对应的位置存在漏洞。
在监测风险函数中每个函数解析测试文件的解析过程中,在监测到第一函数解析测试文件的解析过程中出现异常的情况下,可以确定待挖掘程序中第一函数对应的位置存在漏洞。第一函数为风险函数中的任一函数。异常可以是崩溃、拒绝服务、卡死等。
206、在待挖掘程序中的第二函数解析完测试文件后,根据初始文件确定下一个测试文件,控制第二函数解析下一个测试文件。
在待挖掘程序解析完测试文件后,可以先根据初始文件确定下一个测试文件,即修改初始文件的参数得到下一个测试文件也即修改初始文件中的第二函数的参数。之后可以控制待挖掘程序中第二函数解析下一个测试文件。第二函数为风险函数中的一个函数。
在一些实施例中,确定出待挖掘程序中风险度大于阈值的风险函数之后,可以在待挖掘程序中第二函数对应位置设置断点,以便在待挖掘程序执行到断点时,可以得到待挖掘程序的控制权。具体地,可以通过调式方式启动待挖掘程序后,在待挖掘程序中第二函数对应位置设置断点;也可以通过其它方式启动待挖掘程序后,在待挖掘程序中第二函数对应位置设置断点。在此不对其它方式不进行限定,只要使用的方式启动后能够设置断点就可以。调试方式为启动进程设置一个标识,可以调用这个标识进行启动。
在一些实施例中,在待挖掘程序第一次执行到断点时,可以存储待挖掘程序对应的CPU环境和内存环境。待挖掘程序对应的CPU环境和内存环境包括待挖掘程序对应的所有CPU环境和所有内存环境。在控制断点解析下一个测试文件之前,可以将待挖掘程序对应的CPU环境和内存环境设置为上述CPU环境和上述内存环境,就可以得到执行待挖掘程序中断点之前的程序得到的环境,从而可以不用执行第二函数之前的程序。此外,由于设置了断点之后,断点位置执行完之后又会回到断点,不会向后继续执行。可见,在第二函数对应的位置设置了断点之后,只有第一次解析测试文件时,是从待挖掘程序的最开始执行到第二函数执行完,而后续每次只需要执行第二函数就可以了,因此,可以减少执行的程序内容,从而可以提高漏洞挖掘效率。此外,由于在每次监测的时候只需要监测第二函数,因此,可以进一步提高检测效率。其中,断点也可以为其它名称,只需要具有断点的功能即可。
可见,在执行到断点时,可以保存此时对应的CPU环境和堆栈环境(即内存环境),在后续执行到断点时,可以重新恢复CPU环境和堆栈环境,并重置函数的参数,进行下一轮的Fuzz。
在图2所描述的漏洞挖掘方法中,在待挖掘程序解析测试文件的过程中,不需要监测待挖掘程序的每一个位置,只需要监测风险度大于阈值的函数即可,减小了监测范围,因此,可以提高监测效率。此外,由于设置了断点,减少了执行的程序内容,从而可以提高漏洞挖掘效率。此外,由于只需要监测断点位置的函数,因此,可以进一步提高检测效率。
请参阅图3,图3是本发明实施例公开的一种漏洞挖掘装置的结构示意图。其中,该漏洞挖掘装置可以设置在电脑、笔记本电脑等可以运行代码的电子设备上。如图3所示,该漏洞挖掘装置可以包括:
获取单元301,获取待挖掘程序;
第一确定单元302,用于确定待挖掘程序中风险度大于阈值的风险函数;
监测单元303,用于监测风险函数中每个函数解析测试文件的解析过程;
第二确定单元304,用于在监测到第一函数解析测试文件的解析过程中出现异常的情况下,确定待挖掘程序中第一函数对应的位置存在漏洞,第一函数为风险函数中的任一函数。
在一个实施例中,第一确定单元302,具体用于将待挖掘程序包括的函数中具有内存拷贝功能的函数确定为待挖掘程序中风险度大于阈值的函数。
在一个实施例中,具有内存拷贝功能的函数包括具有内存拷贝功能的库函数和/或自定义函数。
在一个实施例中,获取单元301,还用于获取待挖掘程序之后,获取待挖掘程序的格式;
该漏洞挖掘装置还可以包括:
生成单元305,用于生成该格式的初始文件,测试文件为初始文件或初始文件对应的文件。
在一个实施例中,该漏洞挖掘装置还可以包括:
第三确定单元306,用于第一确定单元302确定待挖掘程序中风险度大于阈值的风险函数之后,在待挖掘程序中的第二函数解析完测试文件后,根据初始文件确定下一个测试文件,第二函数为风险函数中的一个函数;
控制单元307,用于控制第二函数解析下一个测试文件。
在一个实施例中,该漏洞挖掘装置还可以包括:
设置单元308,用于第一确定单元302确定待挖掘程序中风险度大于阈值的风险函数之后,在待挖掘程序中第二函数对应位置设置断点;
第三确定单元306,具体用于在断点修改初始文件的参数,得到下一个测试文件;
控制单元307,具体用于控制断点解析下一个测试文件。
在一个实施例中,该漏洞挖掘装置还可以包括:
存储单元309,用于第一确定单元302确定待挖掘程序中风险度大于阈值的风险函数之后,在待挖掘程序第一次执行到断点时,存储待挖掘程序对应的CPU环境和内存环境;
设置单元308,还用于控制单元307控制断点解析下一个测试文件之前,将待挖掘程序对应的CPU环境和内存环境设置为上述CPU环境和上述内存环境。
可以理解的是,本实施例的漏洞挖掘装置的获取单元301、第一确定单元302、监测单元303、第二确定单元304、生成单元305、第三确定单元306、控制单元307、设置单元308和存储单元309的功能可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
请参阅图4,图4是本发明实施例公开的另一种漏洞挖掘装置的结构示意图。其中,该漏洞挖掘装置可以设置在电脑、笔记本电脑等可以运行代码的电子设备上。如图4所示,该漏洞挖掘装置可以包括处理器401、存储器402和总线403,处理器401和存储器402通过总线403连接。其中:
存储器402用于存储一组计算机程序,计算机程序包括程序指令,处理器401用于调用该程序指令执行以下步骤:
获取待挖掘程序;
确定待挖掘程序中风险度大于阈值的风险函数;
监测风险函数中每个函数解析测试文件的解析过程;
在监测到第一函数解析测试文件的解析过程中出现异常的情况下,确定待挖掘程序中第一函数对应的位置存在漏洞,第一函数为风险函数中的任一函数。
在一个实施例中,处理器401确定待挖掘程序中风险度大于阈值的函数包括:
将待挖掘程序包括的函数中具有内存拷贝功能的函数确定为待挖掘程序中风险度大于阈值的函数。
在一个实施例中,具有内存拷贝功能的函数包括具有内存拷贝功能的库函数和/或自定义函数。
在一个实施例中,处理器401还用于调用该程序指令执行以下步骤:
获取待挖掘程序之后,获取待挖掘程序的格式;
生成格式的初始文件,测试文件为初始文件或初始文件对应的文件。
在一个实施例中,处理器401还用于调用该程序指令执行以下步骤:
确定待挖掘程序中风险度大于阈值的风险函数之后,在待挖掘程序中的第二函数解析完测试文件后,根据初始文件确定下一个测试文件,第二函数为风险函数中的一个函数;
控制第二函数解析下一个测试文件。
在一个实施例中,处理器401还用于调用该程序指令执行以下步骤:
确定待挖掘程序中风险度大于阈值的风险函数之后,在待挖掘程序中第二函数对应位置设置断点;
处理器401根据初始文件确定下一个测试文件包括:
在断点修改初始文件的参数,得到下一个测试文件;
处理器401控制第二函数解析下一个测试文件包括:
控制断点解析下一个测试文件。
在一个实施例中,处理器401还用于调用该程序指令执行以下步骤:
确定待挖掘程序中风险度大于阈值的风险函数之后,在待挖掘程序第一次执行到断点时,存储待挖掘程序对应的CPU环境和内存环境;
控制断点解析下一个测试文件之前,将待挖掘程序对应的CPU环境和内存环境设置为该CPU环境和该内存环境。
该漏洞挖掘装置的详细描述可以根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
其中,步骤101-步骤104,以及步骤201-步骤206可以由该漏洞挖掘装置中的处理器401和存储器402来执行。
其中,获取单元301、第一确定单元302、监测单元303、第二确定单元304、生成单元305、第三确定单元306、控制单元307、设置单元308和存储单元309可以由漏洞挖掘装置中的处理器401和存储器402来实现。
在一个实施例中公开了一种存储介质,该存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时使处理器执行图1和图2的漏洞挖掘方法。
在一个实施例中公开了一种应用程序,该应用程序用于在运行时执行图1和图2的漏洞挖掘方法。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory,RAM)、磁盘或光盘等。
以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种漏洞挖掘方法,其特征在于,包括:
获取待挖掘程序;
确定所述待挖掘程序中风险度大于阈值的风险函数;
监测所述风险函数中每个函数解析测试文件的解析过程;
在监测到第一函数解析所述测试文件的解析过程中出现异常的情况下,确定所述待挖掘程序中所述第一函数对应的位置存在漏洞,所述第一函数为所述风险函数中的任一函数。
2.根据权利要求1所述的方法,其特征在于,所述确定所述待挖掘程序中风险度大于阈值的函数包括:
将所述待挖掘程序包括的函数中具有内存拷贝功能的函数确定为所述待挖掘程序中风险度大于阈值的函数。
3.根据权利要求2所述的方法,其特征在于,所述具有内存拷贝功能的函数包括具有内存拷贝功能的库函数和/或自定义函数。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述获取待挖掘程序之后,所述方法还包括:
获取所述待挖掘程序的格式;
生成所述格式的初始文件,所述测试文件为所述初始文件或所述初始文件对应的文件。
5.根据权利要求4所述的方法,其特征在于,所述确定所述待挖掘程序中风险度大于阈值的风险函数之后,所述方法还包括:
在所述待挖掘程序中的第二函数解析完所述测试文件后,根据所述初始文件确定下一个测试文件,所述第二函数为所述风险函数中的一个函数;
控制所述第二函数解析所述下一个测试文件。
6.根据权利要求5所述的方法,其特征在于,所述确定所述待挖掘程序中风险度大于阈值的风险函数之后,所述方法还包括:
在所述待挖掘程序中所述第二函数对应位置设置断点;
所述根据所述初始文件确定下一个测试文件包括:
在所述断点修改所述初始文件的参数,得到下一个测试文件;
所述控制所述第二函数解析所述下一个测试文件包括:
控制所述断点解析所述下一个测试文件。
7.根据权利要求6所述的方法,其特征在于,所述确定所述待挖掘程序中风险度大于阈值的风险函数之后,所述方法还包括:
在所述待挖掘程序第一次执行到所述断点时,存储所述待挖掘程序对应的中央处理器CPU环境和内存环境;
所述控制所述断点解析所述下一个测试文件之前,所述方法还包括:
将所述待挖掘程序对应的CPU环境和内存环境设置为所述CPU环境和所述内存环境。
8.一种漏洞挖掘装置,其特征在于,包括:
获取单元,用于获取待挖掘程序;
第一确定单元,用于确定所述待挖掘程序中风险度大于阈值的风险函数;
监测单元,用于监测所述风险函数中每个函数解析测试文件的解析过程;
第二确定单元,用于在监测到第一函数解析所述测试文件的解析过程中出现异常的情况下,确定所述待挖掘程序中所述第一函数对应的位置存在漏洞,所述第一函数为所述风险函数中的任一函数。
9.一种漏洞挖掘装置,其特征在于,包括处理器和存储器,所述处理器和所述存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器用于调用所述程序指令,执行如权利要求1-7任一项所述的漏洞挖掘方法。
10.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的漏洞挖掘方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911203273.5A CN110990277A (zh) | 2019-11-29 | 2019-11-29 | 一种漏洞挖掘方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911203273.5A CN110990277A (zh) | 2019-11-29 | 2019-11-29 | 一种漏洞挖掘方法、装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110990277A true CN110990277A (zh) | 2020-04-10 |
Family
ID=70088473
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911203273.5A Pending CN110990277A (zh) | 2019-11-29 | 2019-11-29 | 一种漏洞挖掘方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110990277A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105608383A (zh) * | 2015-12-22 | 2016-05-25 | 工业和信息化部电子第五研究所 | ActiveX控件漏洞测试方法及系统 |
US20180121657A1 (en) * | 2016-11-01 | 2018-05-03 | International Business Machines Corporation | Security risk evaluation |
CN108256335A (zh) * | 2018-02-08 | 2018-07-06 | 北京百度网讯科技有限公司 | 用于检测漏洞的方法和装置 |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
CN109032927A (zh) * | 2018-06-26 | 2018-12-18 | 腾讯科技(深圳)有限公司 | 一种漏洞挖掘方法及装置 |
CN109670318A (zh) * | 2018-12-24 | 2019-04-23 | 中国科学院软件研究所 | 一种基于核控制流图循环验证的漏洞检测方法 |
CN109670316A (zh) * | 2018-12-19 | 2019-04-23 | 杭州安恒信息技术股份有限公司 | 一种基于Java异常的漏洞检测方法和装置 |
-
2019
- 2019-11-29 CN CN201911203273.5A patent/CN110990277A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105608383A (zh) * | 2015-12-22 | 2016-05-25 | 工业和信息化部电子第五研究所 | ActiveX控件漏洞测试方法及系统 |
US20180121657A1 (en) * | 2016-11-01 | 2018-05-03 | International Business Machines Corporation | Security risk evaluation |
CN108256335A (zh) * | 2018-02-08 | 2018-07-06 | 北京百度网讯科技有限公司 | 用于检测漏洞的方法和装置 |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
CN109032927A (zh) * | 2018-06-26 | 2018-12-18 | 腾讯科技(深圳)有限公司 | 一种漏洞挖掘方法及装置 |
CN109670316A (zh) * | 2018-12-19 | 2019-04-23 | 杭州安恒信息技术股份有限公司 | 一种基于Java异常的漏洞检测方法和装置 |
CN109670318A (zh) * | 2018-12-24 | 2019-04-23 | 中国科学院软件研究所 | 一种基于核控制流图循环验证的漏洞检测方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xu et al. | Early detection of configuration errors to reduce failure damage | |
US7962798B2 (en) | Methods, systems and media for software self-healing | |
US10579491B2 (en) | Method and system for automated injection of process type specific in process agents on process startup | |
US6698016B1 (en) | Method for injecting code into another process | |
KR101806090B1 (ko) | 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹 | |
US10042744B2 (en) | Adopting an existing automation script to a new framework | |
AU2021206497B2 (en) | Method and apparatus for authority control, computer device and storage medium | |
KR101972825B1 (ko) | 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램 | |
US11055416B2 (en) | Detecting vulnerabilities in applications during execution | |
CN109271789B (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
US11528298B2 (en) | Methods and systems for preventing malicious activity in a computer system | |
CN110851352A (zh) | 一种模糊测试系统及终端设备 | |
CN108090352B (zh) | 检测系统及检测方法 | |
KR101842263B1 (ko) | 어플리케이션에 대한 역공학 차단 방법 및 장치 | |
CN110990277A (zh) | 一种漏洞挖掘方法、装置及计算机可读存储介质 | |
CN113377588A (zh) | 硬盘的可持续集成测试方法、装置及计算机设备 | |
KR20230025144A (ko) | 바이너리 정적 분석을 통해 얻은 타입 정보를 활용하는 윈도우 커널 퍼징 기법 | |
CN109388948B (zh) | 一种基于虚拟化技术的潜在恶意软件分析方法及相关装置 | |
CN113672917A (zh) | 恶意代码检测方法、装置、存储介质及电子设备 | |
US11989296B2 (en) | Program execution anomaly detection for cybersecurity | |
CN114070580B (zh) | 反序列化攻击检测方法、装置、电子设备、介质及程序 | |
CN111625824A (zh) | 基于iast的安全测试方法、装置、电子装置及存储介质 | |
CN117034278A (zh) | 漏洞检测方法、装置、存储介质及电子设备 | |
CN114048473A (zh) | 针对计算机的恶意软件的处理方法 | |
CN117421734A (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 |