CN117633808A - 用于漏洞检测的方法、处理器及机器可读存储介质 - Google Patents
用于漏洞检测的方法、处理器及机器可读存储介质 Download PDFInfo
- Publication number
- CN117633808A CN117633808A CN202311586246.7A CN202311586246A CN117633808A CN 117633808 A CN117633808 A CN 117633808A CN 202311586246 A CN202311586246 A CN 202311586246A CN 117633808 A CN117633808 A CN 117633808A
- Authority
- CN
- China
- Prior art keywords
- function
- library
- vulnerability
- target program
- binary
- 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 69
- 238000001514 detection method Methods 0.000 title claims abstract description 28
- 238000003860 storage Methods 0.000 title claims abstract description 16
- 238000004458 analytical method Methods 0.000 claims abstract description 35
- 230000008569 process Effects 0.000 claims abstract description 26
- 238000010586 diagram Methods 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 218
- 238000001914 filtration Methods 0.000 claims description 61
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 9
- 238000012795 verification Methods 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 9
- 238000004590 computer program Methods 0.000 description 7
- 238000005065 mining Methods 0.000 description 7
- 239000000243 solution Substances 0.000 description 6
- 230000003993 interaction Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000005406 washing Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010835 comparative analysis Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000010219 correlation analysis Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012038 vulnerability analysis Methods 0.000 description 1
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种用于漏洞检测的方法、处理器及机器可读存储介质。该方法包括:获取二进制目标程序;对二进制目标程序进行反编译,以得到二进制目标程序对应的业务流程的控制流图;根据控制流图和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。本申请能利用反编译工具和技术实现无程序源码情况下的自动化漏洞挖掘,降低了漏洞发现的条件,同时通过预构建的规则库,实现了自动化分析和漏洞挖掘且提高了漏洞检出概率。
Description
技术领域
本申请涉及计算机技术领域,具体地涉及一种用于漏洞检测的方法、处理器及机器可读存储介质。
背景技术
安全漏洞的存在给网络安全带来了极大的风险,因此发现和防范漏洞是关键的网络安全措施之一。漏洞挖掘即针对目标信息系统进行分析,发现其中存在的漏洞的过程。现有技术通常采用关联分析组合,即通过目标程序代码序列对比脆弱信息数据库以发现漏洞,未处理代码序列存在细微变化的情况,可能导致无法发现目标中存在的漏洞,漏洞变种的检出概率较低。
发明内容
本申请实施例的目的是提供一种用于漏洞检测的方法、处理器及机器可读存储介质,用以解决现有技术中漏洞检出效率较低的问题。
为了实现上述目的,本申请实施例第一方面提供一种用于漏洞检测的方法,方法包括:
获取二进制目标程序;
对二进制目标程序进行反编译,以得到二进制目标程序对应的业务流程的控制流图;
根据控制流图和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。
在本申请实施例中,根据控制流图和安全系统知识数据库,判断二进制目标程序是否存在漏洞包括:根据所述控制流图,对所述业务流程的输入数据进行污点分析,以确定参与污点数据处理的初始函数序列;根据初始函数序列和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。
在本申请实施例中,预构建的安全系统知识数据库包括:基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库。
在本申请实施例中,根据初始函数序列和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞包括:
通过基本库指纹数据库识别初始函数序列中每个函数所使用的基本库及函数名;
根据每个函数所使用的基本库及函数名确定业务流程所引用的目标函数序列;
根据危险函数库和安全过滤代码库识别目标函数序列中的多个特定函数;
根据漏洞模式规则库对多个特定函数进行模式匹配,以确定二进制目标程序是否存在漏洞。
在本申请实施例中,根据危险函数库和安全过滤代码库识别目标函数序列中的多个特定函数包括:
将目标函数序列代入危险函数库,以判断目标函数序列中是否存在函数为危险函数;
将目标函数序列代入安全过滤代码库,以判断目标函数序列中是否存在函数为过滤函数;
在判定存在函数为危险函数或过滤函数的情况下,将危险函数和过滤函数确定为特定函数。
在本申请实施例中,根据漏洞模式规则库对特定函数进行模式匹配,以判断二进制目标程序是否存在漏洞包括:
在任意特定函数的模式匹配结果为数据为外部数据、数据未经过滤清洗直接参与计算以及计算结果未经过滤清洗直接参与内部使用的情况下,判定二进制目标程序存在漏洞。
在本申请实施例中,方法还包括:
在基本库指纹数据库、危险函数库以及安全过滤代码库无法识别的情况下,将二进制目标程序的主要业务流程的控制流图和污点数据以图形或列表的方式发送至用户终端,以通过用户终端判定二进制目标程序是否存在漏洞。
在本申请实施例中,方法还包括:
将库函数以及系统接口函数中的预设函数进行汇总以形成危险函数库;
将数据范围限定的代码、数据计算结果正确性验证代码以及安全内存操作代码进行汇总以形成安全过滤代码库;
通过语法定义,将预设漏洞规则进行汇聚以形成漏洞模式规则库;
基于基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库构建安全系统知识数据库。
本申请实施例第二方面提供一种处理器,被配置成执行根据上述的用于漏洞检测的方法。
本申请实施例第三方面提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行根据上述的用于漏洞检测的方法。
通过上述技术方案,首先获取二进制目标程序,然后对二进制目标程序进行反编译,以得到二进制目标程序对应的业务流程的控制流图,最后根据控制流图和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。本申请能利用反编译工具和技术实现无程序源码情况下的自动化漏洞挖掘,降低了漏洞发现的条件,同时通过预构建的规则库,实现了自动化分析和漏洞挖掘且提高了漏洞检出概率。
本申请实施例的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本申请实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本申请实施例,但并不构成对本申请实施例的限制。在附图中:
图1示意性示出了根据本申请实施例的一种用于漏洞检测的方法的流程图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解的是,此处所描述的具体实施方式仅用于说明和解释本申请实施例,并不用于限制本申请实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明,若本申请实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
另外,若本申请实施例中有涉及“第一”、“第二”等的描述,则该“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
图1示意性示出了根据本申请实施例的一种用于漏洞检测的方法的流程图。如图1所示,本申请实施例提供一种用于漏洞检测的方法,该方法可以包括下列步骤。
步骤S101、获取二进制目标程序。
步骤S102、对二进制目标程序进行反编译,以得到二进制目标程序对应的业务流程的控制流图。
步骤S103、根据控制流图和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。
在现有技术中,漏洞挖掘可以根据其方法和技术特点大致分为静态分析、动态分析及智能挖掘三大类。其中,静态分析是通过分析程序的源代码或二进制代码来寻找漏洞;动态分析是通过运行程序或系统,并监视其行为来挖掘漏洞。智能挖掘是利用机器学习、深度学习等人工智能技术,自动挖掘漏洞。本申请实施例中的漏洞检测的方法,主要是针对无源码的二进制目标程序,采用静态分析的技术实现自动化漏洞检测。
可以理解,二进制程序是计算机中使用二进制代码编写的程序,也称为机器码,二进制程序是源代码经过编译器编译之后的产物。在一些场合下,通常无法获得需要进行漏洞挖掘的程序的源码,从而导致无法进行漏洞挖掘,而二进制程序则容易获得。控制流图是一个过程或程序的抽象表现,是用在编译器中的一个抽象数据结构,由编译器在内部维护,代表了一个程序执行过程中会遍历到的所有路径。控制流图以图的形式表示一个过程内所有基本块执行的可能流向,以及反映一个过程的实时执行过程。
具体地,二进制目标程序即为需要进行漏洞检测或漏洞挖掘的程序。处理器首先可以获取二进制目标程序,然后通过反编译工具对该二进制目标程序进行反编译。常见的反编译工具如:IDA、Ghidra。通过对二进制目标程序进行反编译可以得到二进制目标程序对应的业务流程的控制流图,然后在控制流图的基础上进行控制流污点分析,根据分析结果,结合预构建的安全系统知识数据库,通过模式匹配的方式,可以判断二进制目标程序是否存在安全漏洞。其中,预构建的安全系统知识数据库可以包括基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库。基本库指纹数据库用于识别业务流程的函数序列所使用的基本库及其函数名,以为后续分析做基础;危险函数库和安全过滤代码库用于识别函数序是否为特定函数,也就是说确定污点数据是否经过清洗过滤、是否用于危险操作;漏洞模式规则库中存储有预设的漏洞规则,用于对特定函数进行模式匹配以判断是否存在漏洞。需要说明的是,针对不同种类的漏洞所使用的安全系统知识数据库不同,根据需要检测或挖掘的漏洞种类,可以采集不同的数据以构建不同的数据库,以用于后续分析做判断依据,在本申请实施例中,以检测内存破坏类漏洞为例进行说明。
通过上述技术方案,首先获取二进制目标程序,然后对二进制目标程序进行反编译,以得到二进制目标程序对应的业务流程的控制流图,最后根据控制流图和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。本申请能利用反编译工具和技术实现无程序源码情况下的自动化漏洞挖掘,降低了漏洞发现的条件,同时通过预构建的规则库,实现了自动化分析和漏洞挖掘且提高了漏洞检出概率。
在本申请实施例中,根据控制流图和安全系统知识数据库,判断二进制目标程序是否存在漏洞可以包括:根据控制流图,对业务流程的输入数据进行污点分析,以确定参与污点数据处理的初始函数序列;根据初始函数序列和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。
具体地,在漏洞分析中,使用污点分析技术将所感兴趣的数据(通常来自程序的外部输入,假定所有输入都是危险的)标记为污点数据,然后通过跟踪和污点数据相关的信息的流向,可以知道它们是否会影响某些关键的程序操作,进而挖掘程序漏洞。因此,在本申请实施例中,处理器可以根据控制流图,对业务流程的输入数据进行污点分析,也就是说分析目标程序处理外部数据的完整控制流,通过对其进行污点分析,从而确定参与污点数据处理的完整函数序列即初始函数序列。然后在污点分析的基础上,结合预构建的安全系统知识数据库,对初始函数序列进行漏洞模式判定,从而判断二进制目标程序是否存在漏洞。
在本申请实施例中,预构建的安全系统知识数据库可以包括:基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库。
在本申请实施例中,用于漏洞检测的方法还可以包括:将库函数以及系统接口函数中的预设函数进行汇总以形成危险函数库;将数据范围限定的代码、数据计算结果正确性验证代码以及安全内存操作代码进行汇总以形成安全过滤代码库;通过语法定义,将预设漏洞规则进行汇聚以形成漏洞模式规则库;基于基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库构建安全系统知识数据库。
具体地,预构建的安全系统知识数据库主要由基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库这四类子库组成。其中,基本库指纹数据库用于识别业务流程的函数序列所使用的基本库及其函数名,能够通过二进制机器码序列实现对二进制程序静态引用的基本库的识别,以为后续分析做基础。
一方面,在程序中,部分函数的不合理使用极易导致安全漏洞的产生,比如C库函数中的strcpy()\memcpy()\system(),系统接口函数中的Loadlibra ry()\CreateProcess()等等。因此,将库函数以及系统接口函数中的极易导致漏洞产生的函数即预设函数进行汇总就可以构建危险函数库,供后续漏洞模式判定使用。另一方面,在程序中,有一类代码是用于数据过滤的,此处的过滤包括:对数据范围限定的代码、数据计算结果正确性验证代码、安全内存操作代码。通常,未对数据做安全过滤的控制流,存在漏洞的可能性较大。因此通过识别这类安全过滤代码可以判断代码是否存在安全漏洞。处理器将数据范围限定的代码、数据计算结果正确性验证代码以及安全内存操作代码进行汇总就构建了安全过滤代码库。危险函数库和安全过滤代码库均用于识别函数序是否为特定函数,也就是说确定污点数据是否经过清洗过滤、是否用于危险操作。
通常情况下,存在漏洞的代码序列具有高度相似性。比如:未经验证和过滤的文本参数,直接传递给C库函数system(),则有可能导致命令注入漏洞的产生。因此,处理器可以通过语法定义,将预设规则进行汇总构建一套规则库即漏洞模式规则库,用以识别指定的函数路径是否存在安全漏洞。本申请实施例中的漏洞模式规则库中的规则为相对模糊的漏洞规则,这样可以进一步提高漏洞检出率,在漏报率和误报率之中寻找平衡。
在本申请实施例中,根据初始函数序列和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞可以包括:通过基本库指纹数据库识别初始函数序列中每个函数所使用的基本库及函数名;根据每个函数所使用的基本库及函数名确定业务流程所引用的目标函数序列;根据危险函数库和安全过滤代码库识别目标函数序列中的多个特定函数;根据漏洞模式规则库对多个特定函数进行模式匹配,以判断二进制目标程序是否存在漏洞。
在本申请实施例中,根据危险函数库和安全过滤代码库识别目标函数序列中的多个特定函数可以包括:将目标函数序列代入危险函数库,以判断目标函数序列中是否存在函数为危险函数;将目标函数序列代入安全过滤代码库,以判断目标函数序列中是否存在函数为过滤函数;在判定存在函数为危险函数或过滤函数的情况下,将危险函数和过滤函数确定为特定函数。
具体地,处理器首先通过基本库指纹数据库识别初始函数序列中每个函数所使用的基本库及函数名,从而根据每个函数所使用的基本库及函数名确定业务流程所引用的目标函数序列。然后将得到的目标函数序列分别代入危险函数库和安全过滤代码库以对特定函数进行标记,便于后续根据漏洞模式规则库对多个特定函数进行模式匹配。其中,特定函数包括危险函数和过滤函数,通过将目标函数序列中的函数代入至危险函数库,可以识别目标函数序列中是否存在函数为危险函数;通过将目标函数序列中的函数代入至安全过滤代码库,可以识别目标函数序列中是否存在函数为过滤函数。对于任意函数,只要满足为危险函数或过滤函数中的一种,即为特定函数。在对特定函数完成标记后,处理器就可以根据漏洞模式规则库对特定函数进行模式匹配,以判断二进制目标程序是否存在漏洞。
在本申请实施例中,根据漏洞模式规则库对特定函数进行模式匹配,以确定二进制目标程序是否存在漏洞可以包括:在任意特定函数的模式匹配结果为数据为外部数据、数据未经过滤清洗直接参与计算以及计算结果未经过滤清洗直接参与内部使用的情况下,判定二进制目标程序存在漏洞。
具体地,在存在外部输入数据直接参与内部计算,并将计算结果直接用于内存管理的情况下,由于未处理可能存在的整数溢出,则会导致内存破坏漏洞的产生。因此本申请实施例中的漏洞模式规则库的规则包括存在漏洞的典型特征:数据为外部数据、数据未经过滤清洗直接参与计算以及计算结果未经过滤清洗直接参与内部使用。在任意特定函数与漏洞模式规则库的模式匹配结果为数据为外部数据、数据未经过滤清洗直接参与计算以及计算结果未经过滤清洗直接参与内部使用的情况下,处理器判定二进制目标程序存在漏洞。
在本申请实施例中,方法还可以包括:在基本库指纹数据库、危险函数库以及安全过滤代码库无法识别的情况下,将二进制目标程序的业务流程的控制流图和污点数据以图形或列表的方式发送至用户终端,以通过用户终端判定二进制目标程序是否存在漏洞。
具体地,处理器可以根据预构建的安全系统知识数据库对主要业务流程的控制流图进行分析,判断二进制目标程序是否存在漏洞,并输出分析报告。根据分析结果,分析报告可以有两种。第一种是输出漏洞报告,即通过分析发现了疑似的安全漏洞,处理器可以标明控制流图及其关键路径,并说明理由及后果,其结果可由人工进行验证。第二种是输出辅助漏洞挖掘的结果报告,即在分析中可能由于数据库广度问题,导致无法识别危险函数库、安全过滤代码以及基本库等,在这种情况下,处理器可将控制流图和污点数据等,以图形、列表等通过便于人工阅读的方式发送至用户终端以进行展示,通过用户终端根据报告结果继续进行漏洞挖掘。
在一具体实施例中,本申请的漏洞检测的方法可以用于人工安全测试中的辅助漏洞挖掘工作,能有效提高针对无源码二进制目标的漏洞挖掘效率。一方面可以通过快速分析目标程序,自动发现部分安全漏洞,但其结果存在漏报或者误报的可能,可进一步辅以人工验证,以最终确定漏洞真实性。另一方面,可以通过快速分析目标程序,标记污点分析结果(主要是程序控制流图),生成报表,供人工辅助进行代码审计,以进行漏洞挖掘。下面以辅助人工漏洞挖掘为例,详述其具体流程:
1)确定漏洞挖掘目标程序,对目标主程序做初步分析,确定目标程序的基本情况,例如:文件结构、机器架构、编译环境等,主要用于帮助后期开展人工分析和静态分析工作;
2)对目标程序进行逆向分析,获得程序的数据交互接口。数据交互接口是后续漏洞挖掘的主要目标,因为信息系统的主要功能是处理用户输入,各种安全漏洞的产生和触发,都与数据交互接口有关,故需通过人工的方式,找出目标程序所有的交互接口。将所有的交互接口,设定为漏洞挖掘目标入口Target;
3)利用IDA Pro对目标程序进行反编译,取得所有Target的控制流图(ControlFlow Graph,CFG),使得能够遍历Target的所有基本块;
4)编写IDA Plugin,利用IDA提供的接口遍历Target的CFG,并根据预构建的安全系统知识数据库,对CFG进行对比分析。
5)根据分析结果,输出分析报告。
本申请实施例提供一种处理器,被配置成执行根据上述的用于漏洞检测的方法。
具体地,在本申请实施例中,处理器可以被配置成:获取二进制目标程序;对二进制目标程序进行反编译,以得到二进制目标程序对应的业务流程的控制流图;根据控制流图和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。
在一个实施例中,处理器进一步被配置成:根据控制流图,对业务流程的输入数据进行污点分析,以确定参与污点数据处理的初始函数序列;根据初始函数序列和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。
在一个实施例中,处理器进一步被配置成:通过基本库指纹数据库识别初始函数序列中每个函数所使用的基本库及函数名;根据每个函数所使用的基本库及函数名确定业务流程所引用的目标函数序列;根据危险函数库和安全过滤代码库识别目标函数序列中的多个特定函数;根据漏洞模式规则库对多个特定函数进行模式匹配,以确定二进制目标程序是否存在漏洞。
在一个实施例中,处理器进一步被配置成:将目标函数序列代入危险函数库,以判断目标函数序列中是否存在函数为危险函数;将目标函数序列代入安全过滤代码库,以判断目标函数序列中是否存在函数为过滤函数;在判定存在函数为危险函数或过滤函数的情况下,将危险函数和过滤函数确定为特定函数。
在一个实施例中,处理器进一步被配置成:在任意特定函数的模式匹配结果为数据为外部数据、数据未经过滤清洗直接参与计算以及计算结果未经过滤清洗直接参与内部使用的情况下,判定二进制目标程序存在漏洞。
在一个实施例中,处理器进一步被配置成:在基本库指纹数据库、危险函数库以及安全过滤代码库无法识别的情况下,将二进制目标程序的主要业务流程的控制流图和污点数据以图形或列表的方式发送至用户终端,以通过用户终端判定二进制目标程序是否存在漏洞。
在一个实施例中,处理器进一步被配置成:将库函数以及系统接口函数中的预设函数进行汇总以形成危险函数库;将数据范围限定的代码、数据计算结果正确性验证代码以及安全内存操作代码进行汇总以形成安全过滤代码库;通过语法定义,将预设漏洞规则进行汇聚以形成漏洞模式规则库;基于基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库构建安全系统知识数据库。
通过上述技术方案,首先获取二进制目标程序,然后对二进制目标程序进行反编译,以得到二进制目标程序对应的业务流程的控制流图,最后根据控制流图和预构建的安全系统知识数据库,判断二进制目标程序是否存在漏洞。本申请能利用反编译工具和技术实现无程序源码情况下的自动化漏洞挖掘,降低了漏洞发现的条件,同时通过预构建的规则库,实现了自动化分析和漏洞挖掘且提高了漏洞检出概率。
本申请实施例还提供一种机器可读存储介质,该机器可读存储介质上存储有指令,该指令用于使得机器执行上述的用于漏洞检测的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种用于漏洞检测的方法,其特征在于,所述方法包括:
获取二进制目标程序;
对所述二进制目标程序进行反编译,以得到所述二进制目标程序对应的业务流程的控制流图;
根据所述控制流图和预构建的安全系统知识数据库,判断所述二进制目标程序是否存在漏洞。
2.根据权利要求1所述的方法,其特征在于,所述根据所述控制流图和所述安全系统知识数据库,判断所述二进制目标程序是否存在漏洞包括:
根据所述控制流图,对所述业务流程的输入数据进行污点分析,以确定参与污点数据处理的初始函数序列;
根据所述初始函数序列和所述预构建的安全系统知识数据库,判断所述二进制目标程序是否存在漏洞。
3.根据权利要求1所述的方法,其特征在于,所述预构建的安全系统知识数据库包括:
基本库指纹数据库、危险函数库、安全过滤代码库和漏洞模式规则库。
4.根据权利要求3所述的方法,其特征在于,所述根据所述初始函数序列和所述预构建的安全系统知识数据库,判断所述二进制目标程序是否存在漏洞包括:
通过所述基本库指纹数据库识别所述初始函数序列中每个函数所使用的基本库及函数名;
根据每个函数所使用的基本库及函数名确定所述业务流程所引用的目标函数序列;
根据所述危险函数库和所述安全过滤代码库识别所述目标函数序列中的多个特定函数;
根据所述漏洞模式规则库对所述多个特定函数进行模式匹配,以判断所述二进制目标程序是否存在漏洞。
5.根据权利要求4所述的方法,其特征在于,所述根据所述危险函数库和所述安全过滤代码库识别所述目标函数序列中的多个特定函数包括:
将所述目标函数序列代入所述危险函数库,以判断所述目标函数序列中是否存在函数为危险函数;
将所述目标函数序列代入安全过滤代码库,以判断所述目标函数序列中是否存在函数为过滤函数;
在判定存在函数为危险函数或过滤函数的情况下,将所述危险函数和过滤函数确定为特定函数。
6.根据权利要求4所述的方法,其特征在于,所述根据所述漏洞模式规则库对所述特定函数进行模式匹配,以确定所述二进制目标程序是否存在漏洞包括:
在任意所述特定函数的模式匹配结果为数据为外部数据、数据未经过滤清洗直接参与计算以及计算结果未经过滤清洗直接参与内部使用的情况下,判定所述二进制目标程序存在漏洞。
7.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述基本库指纹数据库、所述危险函数库以及所述安全过滤代码库无法识别的情况下,将所述二进制目标程序的主要业务流程的控制流图和污点数据以图形或列表的方式发送至用户终端,以通过所述用户终端判定所述二进制目标程序是否存在漏洞。
8.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将库函数以及系统接口函数中的预设函数进行汇总以形成所述危险函数库;
将数据范围限定的代码、数据计算结果正确性验证代码以及安全内存操作代码进行汇总以形成所述安全过滤代码库;
通过语法定义,将预设漏洞规则进行汇聚以形成所述漏洞模式规则库;
基于所述基本库指纹数据库、所述危险函数库、所述安全过滤代码库和所述漏洞模式规则库构建安全系统知识数据库。
9.一种处理器,其特征在于,被配置成执行根据权利要求1至8中任一项所述的用于漏洞检测的方法。
10.一种机器可读存储介质,其特征在于,该机器可读存储介质上存储有指令,该指令用于使得机器执行根据权利要求1至8中任一项所述的用于漏洞检测的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311586246.7A CN117633808A (zh) | 2023-11-24 | 2023-11-24 | 用于漏洞检测的方法、处理器及机器可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311586246.7A CN117633808A (zh) | 2023-11-24 | 2023-11-24 | 用于漏洞检测的方法、处理器及机器可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117633808A true CN117633808A (zh) | 2024-03-01 |
Family
ID=90033192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311586246.7A Pending CN117633808A (zh) | 2023-11-24 | 2023-11-24 | 用于漏洞检测的方法、处理器及机器可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117633808A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118094255A (zh) * | 2024-04-29 | 2024-05-28 | 杭州默安科技有限公司 | 一种过滤函数的识别方法、装置、设备及存储介质 |
-
2023
- 2023-11-24 CN CN202311586246.7A patent/CN117633808A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118094255A (zh) * | 2024-04-29 | 2024-05-28 | 杭州默安科技有限公司 | 一种过滤函数的识别方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110263536B (zh) | 一种区块链中智能合约的监控方法及装置 | |
CN111259395B (zh) | 智能合约的利用程序获取方法、装置及存储介质 | |
CN111695119B (zh) | 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法 | |
CN114328173B (zh) | 软件模糊测试方法和装置、电子设备及存储介质 | |
KR101640479B1 (ko) | 소스코드기반 소프트웨어 취약점 공격행위 분석시스템 | |
Mercaldo et al. | Hey malware, i can find you! | |
CN114491566B (zh) | 一种基于代码相似性的模糊测试方法、装置及存储介质 | |
CN112749389B (zh) | 一种检测智能合约破坏敏感数据漏洞的检测方法及装置 | |
CN109635568B (zh) | 一种基于静态分析和模糊测试相结合的并发漏洞检测方法 | |
CN117633808A (zh) | 用于漏洞检测的方法、处理器及机器可读存储介质 | |
CN111523784A (zh) | 自动执行路径的监控方法及装置 | |
CN114996126B (zh) | 一种针对eosio智能合约的漏洞检测方法及系统 | |
CN111832026B (zh) | 一种漏洞利用定位方法、系统、装置及介质 | |
CN113946825B (zh) | 一种内存马处理方法及系统 | |
KR20180010053A (ko) | 보안 취약점 점검을 위한 위험성 코드 검출 시스템 및 그 방법 | |
CN112560043A (zh) | 一种基于上下文语义的漏洞相似性度量方法 | |
CN115659335A (zh) | 基于混合模糊测试的区块链智能合约漏洞检测方法及装置 | |
RadhaKrishna | Design and analysis of novel kernel measure for software fault localization | |
Ye et al. | Towards automated generation of bug benchmark for smart contracts | |
EP3945441B1 (en) | Detecting exploitable paths in application software that uses third-party libraries | |
Zahan et al. | Shifting the Lens: Detecting Malware in npm Ecosystem with Large Language Models | |
CN111752819A (zh) | 一种异常监控方法、装置、系统、设备和存储介质 | |
CN113392016B (zh) | 对程序异常情况处理的规约生成方法、装置、设备及介质 | |
RU168346U1 (ru) | Устройство выявления уязвимостей | |
Kim et al. | Source code analysis for static prediction of dynamic memory usage |
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 |