CN113918959A - 一种漏洞挖掘方法、装置、电子设备及介质 - Google Patents
一种漏洞挖掘方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN113918959A CN113918959A CN202111233897.9A CN202111233897A CN113918959A CN 113918959 A CN113918959 A CN 113918959A CN 202111233897 A CN202111233897 A CN 202111233897A CN 113918959 A CN113918959 A CN 113918959A
- Authority
- CN
- China
- Prior art keywords
- function
- basic block
- test sample
- program
- tested program
- 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
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/004—Artificial life, i.e. computing arrangements simulating life
- G06N3/006—Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Molecular Biology (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请提供了一种漏洞挖掘方法、装置、电子设备及介质,其中,该方法包括:对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。本申请实施例使检测过程向疑似脆弱点方向导向,从而大大提高程序中脆弱点的发现概率。
Description
技术领域
本申请涉及软件漏洞挖掘技术领域,尤其是涉及一种漏洞挖掘方法、装置、电子设备及介质。
背景技术
随着信息技术及其相关产业不断发展,人们的生活、工作和学习越来越多地依靠网络以及各种网络化软件。尤其在工业领域,由于工业控制系统与外网连接增多,工业控制系统更容易被外部探测。与此同时,针对政府、公司以及个人系统攻击的安全事件不断出现,攻击者往往利用软件漏洞来达到其不可告人的目的。软件数量日益增加,软件漏洞数量也迅速增长,虽然对软件漏洞进行管理可以抑制部分安全事件的发生,但这远远不够,还需要从源头控制软件漏洞的引入,这使得软件脆弱性检测变得越来越重要。
目前,软件脆弱性检测方案可以分为静态分析和动态检测这两种方案,但是这两种方案都存在不足。静态分析方案是通过分析代码而不执行程序来发现程序的脆弱性,其缺点是需要源码支持,误报率高,需要大量的人工分析,不能发现未知漏洞。动态检测方案中最常用的模糊测试(Fuzzing)方法则是在程序运行过程中,利用各种随机输入数据对程序进行测试,其缺点是漏报率高,测试速度慢,难以覆盖所有的代码或路径,难以发现需要复杂条件触发的脆弱点。
发明内容
有鉴于此,本申请的目的在于提供一种漏洞挖掘方法、装置、电子设备及介质,以使检测过程向疑似脆弱点方向导向,从而大大提高程序中脆弱点的发现概率。
第一方面,本申请实施例提供了一种基于粒子群算法的漏洞挖掘方法,包括:
对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;
针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;
在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;
基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
在一种可能的实施方式中,所述在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息之前,还包括:
对所述被测程序的源代码进行插桩;
在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中。
在一种可能的实施方式中,所述对所述被测程序的源代码进行插桩,包括:
分析所述被测程序的抽象语法树;
在所述被测程序的源代码中每个基本块和函数的头部位置进行插桩。
在一种可能的实施方式中,在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中之后,还包括:
获取用于记录每个基本块和函数是否被覆盖的数组;
基于所述指定文件中记录的覆盖信息,修改所述数组中被覆盖的基本块和函数对应位置的数值。
在一种可能的实施方式中,基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本,包括:
定义样本模板,选择初始样本对其进行归一化处理,并按照字节编码为粒子的位置向量,得到初始粒子;
基于所述覆盖信息计算每个粒子的初始适应度;
初始化粒子个体历史最优位置向量和种群全局历史最优位置向量;
在每次迭代时,更新粒子速度向量、位置向量、粒子的适应度、粒子个体历史最优位置向量和种群全局历史最优位置向量;
当种群全局历史最优位置向量的适应度满足最小适应度或迭代次数达到最大时,停止迭代;
记录种群全局历史最优位置向量,并将所述种群全局历史最优位置向量进行解码后,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
在一种可能的实施方式中,基于所述覆盖信息计算每个粒子的初始适应度,包括:
针对每个粒子,将所述粒子的位置向量解码为样本参数;
在所述被测程序运行结束后,读取所述指定文件中记录的基本块和函数的覆盖信息;
按照各个基本块和函数的顺序,基于所述数组寻找第一个被成功覆盖的基本块或函数:
记录第一个被成功覆盖的函数与所述疑似脆弱点位置之间的第一距离,以及第一个被成功覆盖的基本块与所述疑似脆弱点位置之间的第二距离;
基于所述第一距离与第二距离计算所述粒子的适应度。
在一种可能的实施方式中,还包括通过以下步骤确定各个基本块和函数的顺序:
对所述被测程序进行静态分析,得到所述被测程序对应的控制流图和函数调用图;
根据所述控制流图和函数调用图,计算所述被测程序中每个基本块和函数分别与所述疑似脆弱点位置之间的最短距离;
按照所述被测程序中各个基本块和函数对应的所述最短距离从小到大的顺序,分别对各个基本块和函数进行排序。
第二方面,本申请实施例还提供一种基于粒子群算法的漏洞挖掘装置,包括:
静态分析模块,用于对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;
样本输入模块,用于针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;
信息记录模块,用于在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;
样本迭代模块,用于基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本申请实施例提供的一种基于粒子群算法的漏洞挖掘方法,采用对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本,与现有技术中的静态分析方案检查程序本身的源代码,误报率很高,而动态检测方案中最常用的的模糊测试(Fuzzing)技术漏报率比较高,误报率基本可以忽略相比,其通过静态分析确定疑似脆弱点位置,采用粒子群算法对测试样本集中的测试样本进行大量迭代优化,引导测试样本覆盖疑似脆弱点位置,生成能够覆盖所述疑似脆弱点位置所在基本块和函数的高质量目标测试样本,可以增加程序中脆弱点的发现概率,从而提高软件脆弱性检测的效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种基于粒子群算法的漏洞挖掘方法的流程图;
图2示出了本申请实施例所提供的一种基于粒子群算法的漏洞挖掘装置的结构示意图;
图3示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,软件脆弱性检测方案可以分为静态分析和动态检测这两种方案,但是这两种方案都存在不足。静态分析方案是通过分析代码而不执行程序来发现程序的脆弱性,其缺点是需要源码支持,误报率高,需要大量的人工分析,不能发现未知漏洞。动态检测方案中最常用的模糊测试(Fuzzing)方法则是在程序运行过程中,利用各种随机输入数据对程序进行测试,其缺点是漏报率高,测试速度慢,难以覆盖所有的代码或路径,难以发现需要复杂条件触发的脆弱点。基于此,本申请实施例提供了一种漏洞挖掘方法、装置、电子设备及介质,下面通过实施例进行描述。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种基于粒子群算法的漏洞挖掘方法进行详细介绍。
请参照图1,图1为本申请实施例所提供的一种基于粒子群算法的漏洞挖掘方法的流程图。如图1所示,所述方法可以包括以下步骤:
S101、对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;
S102、针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;
S103、在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;
S104、基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
步骤S101中,对被测程序进行静态分析,得到所述被测程序对应的控制流图和函数调用图,同时得到所述被测程序的疑似脆弱点位置。
在得到所述被测程序对应的控制流图和函数调用图之后,根据所述控制流图和函数调用图,计算所述被测程序中每个基本块和函数分别与所述疑似脆弱点位置之间的最短距离。按照所述被测程序中各个基本块和函数对应的所述最短距离从小到大的顺序,分别对各个基本块和函数进行排序。在具体实施中,根据以邻接矩阵形式存储的所述控制流图和函数调用图,使用Dijkstra算法计算所述被测程序中每个基本块和函数分别与所述疑似脆弱点位置之间的最短距离。按照所述被测程序中各个基本块和函数对应的所述最短距离从小到大的顺序,分别对各个基本块和函数进行排序,按照顺序记录各个基本块和函数的标号。
步骤S102中,测试样本集包括若干测试样本,测试样本是用来触发被测程序崩溃的。例如:被测程序为图片浏览器,输入一个破坏的文件样本,可能就会触发被测程序崩溃。但是,不是所有的测试样本都会触发被测程序崩溃,需要引导生成覆盖疑似脆弱点位置的测试样本。
在步骤S103之前,还可以包括以下步骤:
S1、对所述被测程序的源代码进行插桩;
S2、在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中。
步骤S1中,分析所述被测程序的抽象语法树,优选地,在所述被测程序的源代码中每个基本块和函数的头部位置进行插桩。
步骤S2中,在执行所述被测程序的过程中,在所述被测程序的尾部插入语句,将每个基本块和函数的覆盖信息记录到指定文件中。
在步骤S2之后,所述方法还可以包括:获取用于记录每个基本块和函数是否被覆盖的数组;基于所述指定文件中记录的覆盖信息,修改所述数组中被覆盖的基本块和函数对应位置的数值。在具体实施中,修改所述数组中被覆盖的基本块和函数对应位置的数值为1。
步骤S104中,采用粒子群算法对测试样本集中的测试样本进行大量迭代优化,引导测试样本覆盖疑似脆弱点位置,生成能够覆盖所述疑似脆弱点位置所在基本块和函数的高质量目标测试样本,可以增加程序中脆弱点的发现概率,从而提高软件脆弱性检测的效率。
具体地,步骤S104可以包括如下子步骤:
S1041、定义样本模板,选择初始样本对其进行归一化处理,并按照字节编码为粒子的位置向量,得到初始粒子;
S1042、基于所述覆盖信息计算每个粒子的初始适应度;
S1043、初始化粒子个体历史最优位置向量Pbest和种群全局历史最优位置向量Gbest;
S1044、在每次迭代时,更新粒子速度向量、位置向量、粒子的适应度、粒子个体历史最优位置向量Pbest和种群全局历史最优位置向量Gbest;
S1045、当种群全局历史最优位置向量Gbest的适应度满足最小适应度或迭代次数达到最大时,停止迭代;
S1046、记录种群全局历史最优位置向量Gbest,并将所述种群全局历史最优位置向量Gbest进行解码后,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
步骤S1042中,获取所述指定文件中记录的覆盖信息,基于所述覆盖信息计算每个粒子的初始适应度。
具体地,步骤S1042可以包括如下子步骤:
S10421、针对每个粒子,将所述粒子的位置向量解码为样本参数;
S10422、在所述被测程序运行结束后,读取所述指定文件中记录的基本块和函数的覆盖信息;
S10423、按照各个基本块和函数的顺序,基于所述数组寻找第一个被成功覆盖的基本块或函数:
S10424、记录第一个被成功覆盖的函数与所述疑似脆弱点位置之间的第一距离function_d,以及第一个被成功覆盖的基本块与所述疑似脆弱点位置之间的第二距离block_d;
S10425、基于所述第一距离function_d与第二距离block_d计算所述粒子的适应度fit=functiond×100+block_d。
步骤S1043中,粒子的初始个体历史最优位置向量Pbest即自身初始的位置向量,通过比较得到初始种群全局历史最优位置向量Gbest。
步骤S1044中,根据以下表达式更新第k轮迭代中粒子i第d维的速度和位置分量:
其中,惯性权重ω随搜索次数线性变化,学习因子c1、c2设置为固定常数2。
并且,通过比较适应度判断是否更新粒子个体历史最优位置向量Pbest和种群全局历史最优位置向量Gbest。
本申请实施例提供的一种基于粒子群算法的漏洞挖掘方法,采用对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本,与现有技术中的静态分析方案检查程序本身的源代码,误报率很高,而动态检测方案中最常用的的模糊测试(Fuzzing)技术漏报率比较高,误报率基本可以忽略相比,其通过静态分析确定疑似脆弱点位置,采用粒子群算法对测试样本集中的测试样本进行大量迭代优化,引导测试样本覆盖疑似脆弱点位置,生成能够覆盖所述疑似脆弱点位置所在基本块和函数的高质量目标测试样本,可以增加程序中脆弱点的发现概率,从而提高软件脆弱性检测的效率。
基于相同的技术构思,本申请实施例还提供一种基于粒子群算法的漏洞挖掘装置、电子设备、以及计算机存储介质等,具体可参见以下实施例。
请参照图2,图2为本申请实施例所提供的一种基于粒子群算法的漏洞挖掘装置的结构示意图。如图2所示,所述装置可以包括:
静态分析模块10,用于对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;
样本输入模块20,用于针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;
信息记录模块30,用于在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;
样本迭代模块40,用于基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
在一种可能的实施方式中,信息记录模块30还用于:
在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息之前,对所述被测程序的源代码进行插桩;
在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中。
在一种可能的实施方式中,信息记录模块30具体用于:
分析所述被测程序的抽象语法树;
在所述被测程序的源代码中每个基本块和函数的头部位置进行插桩。
在一种可能的实施方式中,信息记录模块30还用于:
在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中之后,获取用于记录每个基本块和函数是否被覆盖的数组;
基于所述指定文件中记录的覆盖信息,修改所述数组中被覆盖的基本块和函数对应位置的数值。
在一种可能的实施方式中,样本迭代模块40包括:
编码单元,用于定义样本模板,选择初始样本对其进行归一化处理,并按照字节编码为粒子的位置向量,得到初始粒子;
计算单元,用于基于所述覆盖信息计算每个粒子的初始适应度;
初始化单元,用于初始化粒子个体历史最优位置向量和种群全局历史最优位置向量;
更新单元,用于在每次迭代时,更新粒子速度向量、位置向量、粒子的适应度、粒子个体历史最优位置向量和种群全局历史最优位置向量;
停止单元,用于当种群全局历史最优位置向量的适应度满足最小适应度或迭代次数达到最大时,停止迭代;
解码单元,用于记录种群全局历史最优位置向量,并将所述种群全局历史最优位置向量进行解码后,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
在一种可能的实施方式中,计算单元具体用于:
针对每个粒子,将所述粒子的位置向量解码为样本参数;
在所述被测程序运行结束后,读取所述指定文件中记录的基本块和函数的覆盖信息;
按照各个基本块和函数的顺序,基于所述数组寻找第一个被成功覆盖的基本块或函数:
记录第一个被成功覆盖的函数与所述疑似脆弱点位置之间的第一距离,以及第一个被成功覆盖的基本块与所述疑似脆弱点位置之间的第二距离;
基于所述第一距离与第二距离计算所述粒子的适应度。
在一种可能的实施方式中,静态分析模块10还用于:
对所述被测程序进行静态分析,得到所述被测程序对应的控制流图和函数调用图;
根据所述控制流图和函数调用图,计算所述被测程序中每个基本块和函数分别与所述疑似脆弱点位置之间的最短距离;
按照所述被测程序中各个基本块和函数对应的所述最短距离从小到大的顺序,分别对各个基本块和函数进行排序。
本申请实施例公开了一种电子设备,如图3所示,包括:处理器301、存储器302和总线303,所述存储器302存储有所述处理器301可执行的机器可读指令,当电子设备运行时,所述处理器301与所述存储器302之间通过总线303通信。所述机器可读指令被所述处理器301执行时执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
本申请实施例所提供的一种基于粒子群算法的漏洞挖掘方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种基于粒子群算法的漏洞挖掘方法,其特征在于,包括:
对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;
针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;
在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;
基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
2.根据权利要求1所述的方法,其特征在于,所述在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息之前,还包括:
对所述被测程序的源代码进行插桩;
在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中。
3.根据权利要求2所述的方法,其特征在于,所述对所述被测程序的源代码进行插桩,包括:
分析所述被测程序的抽象语法树;
在所述被测程序的源代码中每个基本块和函数的头部位置进行插桩。
4.根据权利要求2所述的方法,其特征在于,在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中之后,还包括:
获取用于记录每个基本块和函数是否被覆盖的数组;
基于所述指定文件中记录的覆盖信息,修改所述数组中被覆盖的基本块和函数对应位置的数值。
5.根据权利要求4所述的方法,其特征在于,基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本,包括:
定义样本模板,选择初始样本对其进行归一化处理,并按照字节编码为粒子的位置向量,得到初始粒子;
基于所述覆盖信息计算每个粒子的初始适应度;
初始化粒子个体历史最优位置向量和种群全局历史最优位置向量;
在每次迭代时,更新粒子速度向量、位置向量、粒子的适应度、粒子个体历史最优位置向量和种群全局历史最优位置向量;
当种群全局历史最优位置向量的适应度满足最小适应度或迭代次数达到最大时,停止迭代;
记录种群全局历史最优位置向量,并将所述种群全局历史最优位置向量进行解码后,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
6.根据权利要求5所述的方法,其特征在于,基于所述覆盖信息计算每个粒子的初始适应度,包括:
针对每个粒子,将所述粒子的位置向量解码为样本参数;
在所述被测程序运行结束后,读取所述指定文件中记录的基本块和函数的覆盖信息;
按照各个基本块和函数的顺序,基于所述数组寻找第一个被成功覆盖的基本块或函数:
记录第一个被成功覆盖的函数与所述疑似脆弱点位置之间的第一距离,以及第一个被成功覆盖的基本块与所述疑似脆弱点位置之间的第二距离;
基于所述第一距离与第二距离计算所述粒子的适应度。
7.根据权利要求6所述的方法,其特征在于,还包括通过以下步骤确定各个基本块和函数的顺序:
对所述被测程序进行静态分析,得到所述被测程序对应的控制流图和函数调用图;
根据所述控制流图和函数调用图,计算所述被测程序中每个基本块和函数分别与所述疑似脆弱点位置之间的最短距离;
按照所述被测程序中各个基本块和函数对应的所述最短距离从小到大的顺序,分别对各个基本块和函数进行排序。
8.一种基于粒子群算法的漏洞挖掘装置,其特征在于,包括:
静态分析模块,用于对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;
样本输入模块,用于针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;
信息记录模块,用于在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;
样本迭代模块,用于基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111233897.9A CN113918959A (zh) | 2021-10-22 | 2021-10-22 | 一种漏洞挖掘方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111233897.9A CN113918959A (zh) | 2021-10-22 | 2021-10-22 | 一种漏洞挖掘方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113918959A true CN113918959A (zh) | 2022-01-11 |
Family
ID=79242424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111233897.9A Pending CN113918959A (zh) | 2021-10-22 | 2021-10-22 | 一种漏洞挖掘方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113918959A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114611106A (zh) * | 2022-03-10 | 2022-06-10 | 昆明理工大学 | 一种基于多目标粒子群算法的程序控制流证明方法 |
-
2021
- 2021-10-22 CN CN202111233897.9A patent/CN113918959A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114611106A (zh) * | 2022-03-10 | 2022-06-10 | 昆明理工大学 | 一种基于多目标粒子群算法的程序控制流证明方法 |
CN114611106B (zh) * | 2022-03-10 | 2024-04-09 | 昆明理工大学 | 一种基于多目标粒子群算法的程序控制流证明方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9720798B2 (en) | Simulating black box test results using information from white box testing | |
CN108319858B (zh) | 针对不安全函数的数据依赖图构建方法及装置 | |
CN114491566B (zh) | 一种基于代码相似性的模糊测试方法、装置及存储介质 | |
CN112527674B (zh) | Ai框架的安全评测方法、装置、设备及存储介质 | |
EP3264274B1 (en) | Input discovery for unknown program binaries | |
US10496818B2 (en) | Systems and methods for software security scanning employing a scan quality index | |
CN108984416B (zh) | 一种评估Maven环境中依赖冲突危险级别的方法 | |
CN109979530B (zh) | 一种基因变异识别方法、装置和存储介质 | |
CN114510722B (zh) | 增量代码的静态检测方法及检测系统 | |
CN112149136A (zh) | loT设备固件漏洞的检测方法、系统及电子设备 | |
CN113468525A (zh) | 针对二进制程序的相似漏洞检测方法及装置 | |
CN111177731A (zh) | 一种基于人工神经网络的软件源代码漏洞检测方法 | |
CN113918959A (zh) | 一种漏洞挖掘方法、装置、电子设备及介质 | |
CN112799953A (zh) | 一种接口测试方法及装置、计算机设备及存储介质 | |
CN106844219B (zh) | 应用检测方法及应用检测装置 | |
JP4913353B2 (ja) | ソフトウェア動作モデル化装置及びソフトウェア動作監視装置 | |
CN117633808A (zh) | 用于漏洞检测的方法、处理器及机器可读存储介质 | |
CN112712181A (zh) | 模型构建优化方法、装置、设备和可读存储介质 | |
George et al. | A preliminary study on common programming mistakes that lead to buffer overflow vulnerability | |
CN116069650A (zh) | 一种测试用例的生成方法及装置 | |
CN115510449A (zh) | 源代码漏洞检测方法及装置 | |
CN114996136A (zh) | 测试数据确定方法及装置、电子设备、可读存储介质 | |
CN115102779A (zh) | 预测模型的训练、访问请求的决策方法、装置、介质 | |
CN117034261B (zh) | 一种基于标识符的异常检测方法、装置、介质及电子设备 | |
CN112860544B (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 |