[发明专利]一种基于二进制函数相似性的漏洞检测方法与系统在审
申请号: | 202211301900.0 | 申请日: | 2022-10-24 |
公开(公告)号: | CN115906089A | 公开(公告)日: | 2023-04-04 |
发明(设计)人: | 潘祖烈;王泰彦;于璐;严尹彤;麦生今;李宗超 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F8/53;G06F8/41;G06F18/22;G06N3/042 |
代理公司: | 中国和平利用军工技术协会专利中心 11215 | 代理人: | 刘光德 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 二进制 函数 相似性 漏洞 检测 方法 系统 | ||
1.一种基于二进制函数相似性的漏洞检测方法,其特征在于,所述方法包括:
步骤S1、获取待测业务文件和目标漏洞文件,利用反汇编工具分别对所述待测业务文件和所述目标漏洞文件进行反汇编处理,以获取所述待测业务文件的汇编指令和所述目标漏洞文件的汇编指令;
步骤S2、基于预训练的汇编指令表征模型,将所述待测业务文件的汇编指令和所述目标漏洞文件的汇编指令分别转化为对应的指令级别的表征向量;
步骤S3、将对应的指令级别的表征向量转化为对应的基本块级别的表征向量,以基于各个基本块之间的控制依赖关系和数据依赖关系将所述对应的基本块级别的表征向量转化为对应的函数级别的图结构表征,所述函数级别的图结构表征指增强属性控制流图ACFG+;
步骤S4、将所述对应的函数级别的图结构表征根据图结构嵌入的方式转化为对应的函数级别的表征向量,并基于所述待测业务文件的函数级别的表征向量和所述目标漏洞文件的函数级别的表征向量之间的相似度来检测所述待测业务文件中的漏洞。
2.根据权利要求1所述的一种基于二进制函数相似性的漏洞检测方法,其特征在于:所述待测业务文件为待测的二进制可执行程序,所述目标漏洞文件为包含目标漏洞函数的二进制程序;所述反汇编工具包括IDA pro、Binary Ninja和Radare2。
3.根据权利要求1所述的一种基于二进制函数相似性的漏洞检测方法,其特征在于,在所述步骤S2中,预训练所述汇编指令表征模型包括:
下一指令预测训练:在控制流层面,判断两个指令是否为一前一后的相邻关系;若是,则下一指令预测标签置1,若否,则所述下一指令预测标签置0;
数据流向顺序预测训练:在数据流层面,给出关于同一变量数据的两条读写访问指令,判断所述两条读写访问指令的顺序是否正确;若是,则数据流向顺序预测标签置1;若否,则所述数据流向顺序预测标签置0;
掩码语言模型训练:根据下一指令预测训练任务构造前后相邻的指令,以及根据数据流向顺序预测训练任务构造针对特定变量的读写指令对,并对构造出的指令/指令对中的部分单词进行替换,以对经替换的部分进行修正。
4.根据权利要求3所述的一种基于二进制函数相似性的漏洞检测方法,其特征在于,在所述步骤S2中:
以单条汇编指令作为所述预训练的汇编指令表征模型的输入,所述预训练的汇编指令表征模型通过预测指令前后的出现概率、指令中单词的出现频率以及指令语义,直接输出所述指令级别的表征向量;
所述指令级别的表征向量的第一位为输入的单条汇编指令在其所属的待测业务文件/目标漏洞文件中出现的概率,所述指令级别的表征向量的其他位则基于其在所述输入的单条汇编指令中对应位置上的出现概率以及前一位的表征向量共同计算得出。
5.根据权利要求1所述的一种基于二进制函数相似性的漏洞检测方法,其特征在于,在所述步骤S3中:
对于每一个基本块,以该基本块中所包含的全部指令级别的表征向量的加和平均值作为基本块级别的表征向量;
基于所述控制依赖关系确定所述各个基本块之间的控制流图,并基于所述数据依赖关系确定所述各个基本块之间的数据流图;
以基本块级别的表征向量作为节点,基于所述控制流图和所述数据流图构建各个节点之间的边,形成所述增强属性控制流图ACFG+。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211301900.0/1.html,转载请声明来源钻瓜专利网。