[发明专利]一种面向漏洞检测的二进制代码相似性分析方法有效
申请号: | 202011555496.0 | 申请日: | 2020-12-24 |
公开(公告)号: | CN112733137B | 公开(公告)日: | 2021-11-16 |
发明(设计)人: | 王莘;姜训智;程蕾蓉 | 申请(专利权)人: | 哈尔滨工业大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F21/57;G06F8/41;G06F8/53 |
代理公司: | 哈尔滨市阳光惠远知识产权代理有限公司 23211 | 代理人: | 张宏威 |
地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 漏洞 检测 二进制 代码 相似性 分析 方法 | ||
本发明是一种面向漏洞检测的二进制代码相似性分析方法。本发明涉及漏洞检测技术领域,本发明选定源代码漏洞库;将源代码漏洞库中代码进行编译,形成二进制文件;根据得到的二进制文件,通过词嵌入模型对二进制文件进行训练,生成指令的嵌入向量;对指令嵌入向量进行分析,生成基本块嵌入向量;对生成的基本块嵌入向量进行相似性检测,确定二进制文件是否包含漏洞。本发明通过采用不同的优化级别和编译选项将漏洞库中源代码编译为二进制文件,以提高检测的准确度和覆盖率。
技术领域
本发明涉及漏洞检测技术领域,是一种面向漏洞检测的二进制代码相似性分析方法。
背景技术
在静态分析领域中,BinDiff是商用二进制区分工具,它对调用图和控制流图(CFG)执行多对多图同构检测,并利用启发式(例如,函数名、图边MD索引)来匹配函数和基本块。其他基于静态分析的技术对生成的控制和数据流图执行匹配或将图形分解成片段。这些方法大多只考虑指令的语法,而不考虑语义,这在分析过程中非常关键,尤其是在处理不同的编译器优化技术时。而且像匈牙利算法这样的图匹配算法价格昂贵,不能保证最优匹配。
另一个研究领域是动态分析。这些技术通过直接执行给定的代码,对给定的二进制文件执行动态切片或污染,并基于执行期间收集的信息检查语义级别的等价性来执行分析。一般来说,这些技术擅长提取代码的语义,并对编译器优化和代码混淆具有良好的弹性,但由于动态分析的性质,其通常具有较差的可扩展性和不完整的代码覆盖。
利用机器学习的进步来解决二进制相似性问题。已经提出了各种利用图表示学习技术,并将代码信息结合到嵌入中(即高维数值向量)。然后使用这些嵌入进行相似性检测。还有方法进一步依赖NLP技术来自动提取语义信息并为区分生成嵌入。与传统的静态和动态方法相比,这些方法有两个主要优势:1)更高的准确性,因为它们通过使用手动工程特征或基于深度学习的自动方法将代码的独特特征结合到分析中;2)更好的可扩展性,因为它们避免了繁重的图形匹配算法或动态执行。更重要的是,GPU可以显著加快学习过程。现有的基于学习的二进制相似性检测技术虽然取得了一些效果,但是仍然存在没有一些局限性:1)没有能够在细粒度的基本块级别上执行有效的程序范围的二进制区分。2)没有在分析过程中同时考虑程序范围的依赖信息和基本块语义信息。而本方法针对于上述不足进行改进,在细粒度的基本块上执行二进制相似性检测并结合上下文信息。
发明内容
本发明为通过检测给定的二进制文件中是否含有指定源代码漏洞库中所包含的漏洞,本发明适用于二进制代码相似性分析允许在不访问相应源代码的情况下分析二进制代码。它广泛用于漏洞发现、代码克隆检测、用户端崩溃分析等,本发明提供了一种面向漏洞检测的二进制代码相似性分析方法,本发明提供了以下技术方案:
一种面向漏洞检测的二进制代码相似性分析方法,包括以下步骤:
步骤1:选定源代码漏洞库;
步骤2:将源代码漏洞库中代码进行编译,形成二进制文件;
步骤3:根据得到的二进制文件,通过词嵌入模型对二进制文件进行训练,生成指令的嵌入向量;
步骤4:对指令嵌入向量进行分析,生成基本块嵌入向量;
步骤5:对生成的基本块嵌入向量进行相似性检测,确定二进制文件是否包含漏洞。
优选地,所述步骤1中选用OpenSSL作为源代码漏洞库。
优选地,所述步骤2具体为:将源代码漏洞库中代码通过不同的优化级别和编译选项编译成对应的二进制文件。
优选地,所述步骤3具体为:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011555496.0/2.html,转载请声明来源钻瓜专利网。