[发明专利]一种漏洞挖掘方法、装置、电子设备及介质在审
申请号: | 202111233897.9 | 申请日: | 2021-10-22 |
公开(公告)号: | CN113918959A | 公开(公告)日: | 2022-01-11 |
发明(设计)人: | 崔宝江;徐涵;陈晨;李明;邢川;齐维孔 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06N3/00 |
代理公司: | 北京超凡宏宇专利代理事务所(特殊普通合伙) 11463 | 代理人: | 彭星 |
地址: | 100000 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 漏洞 挖掘 方法 装置 电子设备 介质 | ||
1.一种基于粒子群算法的漏洞挖掘方法,其特征在于,包括:
对被测程序进行静态分析,得到所述被测程序的疑似脆弱点位置;
针对测试样本集中的每个测试样本,将所述测试样本输入所述被测程序中;
在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息;
基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
2.根据权利要求1所述的方法,其特征在于,所述在执行所述被测程序的过程中记录所述被测程序的基本块和函数的覆盖信息之前,还包括:
对所述被测程序的源代码进行插桩;
在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中。
3.根据权利要求2所述的方法,其特征在于,所述对所述被测程序的源代码进行插桩,包括:
分析所述被测程序的抽象语法树;
在所述被测程序的源代码中每个基本块和函数的头部位置进行插桩。
4.根据权利要求2所述的方法,其特征在于,在执行所述被测程序的过程中将每个基本块和函数的覆盖信息记录到指定文件中之后,还包括:
获取用于记录每个基本块和函数是否被覆盖的数组;
基于所述指定文件中记录的覆盖信息,修改所述数组中被覆盖的基本块和函数对应位置的数值。
5.根据权利要求4所述的方法,其特征在于,基于粒子群算法对所述测试样本集中每个测试样本进行迭代,若基于所述覆盖信息判断所述疑似脆弱点位置所在基本块和函数被覆盖,则停止迭代,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本,包括:
定义样本模板,选择初始样本对其进行归一化处理,并按照字节编码为粒子的位置向量,得到初始粒子;
基于所述覆盖信息计算每个粒子的初始适应度;
初始化粒子个体历史最优位置向量和种群全局历史最优位置向量;
在每次迭代时,更新粒子速度向量、位置向量、粒子的适应度、粒子个体历史最优位置向量和种群全局历史最优位置向量;
当种群全局历史最优位置向量的适应度满足最小适应度或迭代次数达到最大时,停止迭代;
记录种群全局历史最优位置向量,并将所述种群全局历史最优位置向量进行解码后,得到能够覆盖所述疑似脆弱点位置所在基本块和函数的目标测试样本。
6.根据权利要求5所述的方法,其特征在于,基于所述覆盖信息计算每个粒子的初始适应度,包括:
针对每个粒子,将所述粒子的位置向量解码为样本参数;
在所述被测程序运行结束后,读取所述指定文件中记录的基本块和函数的覆盖信息;
按照各个基本块和函数的顺序,基于所述数组寻找第一个被成功覆盖的基本块或函数:
记录第一个被成功覆盖的函数与所述疑似脆弱点位置之间的第一距离,以及第一个被成功覆盖的基本块与所述疑似脆弱点位置之间的第二距离;
基于所述第一距离与第二距离计算所述粒子的适应度。
7.根据权利要求6所述的方法,其特征在于,还包括通过以下步骤确定各个基本块和函数的顺序:
对所述被测程序进行静态分析,得到所述被测程序对应的控制流图和函数调用图;
根据所述控制流图和函数调用图,计算所述被测程序中每个基本块和函数分别与所述疑似脆弱点位置之间的最短距离;
按照所述被测程序中各个基本块和函数对应的所述最短距离从小到大的顺序,分别对各个基本块和函数进行排序。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111233897.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种烟草提取物的风格特征迁移方法
- 下一篇:水果酶源发酵制备茶黄素的方法