[发明专利]软件相似性度量方法及装置有效
申请号: | 201911189881.5 | 申请日: | 2019-11-28 |
公开(公告)号: | CN110990058B | 公开(公告)日: | 2020-08-21 |
发明(设计)人: | 庞建民;周鑫;郑建云;单征;李明亮;岳峰;刘福东;李男;刘晓楠 | 申请(专利权)人: | 中国人民解放军战略支援部队信息工程大学 |
主分类号: | G06F8/77 | 分类号: | G06F8/77;G06F8/53 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 周艳巧 |
地址: | 450000 河*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 相似性 度量 方法 装置 | ||
本发明涉及一种软件相似性度量方法及装置,该方法包含:针对二进制程序,通过反汇编得到中间代码,并对中间代码进行规范化和标准化处理;统计函数语义特征,通过粗粒度相似度计算筛选出前M名相似函数,并添加至候选函数集;对候选函数集中的函数,利用数据流依赖和程序控制流进行后向切片,获取用于表示函数关键语义的约束推导式集;通过比较约束推导式集,获取目标函数与比较函数的最终相似度得分;依据相似度得分,选取前N名的函数作为专家验证分析内容。本发明通过对代码预处理减少程序在不同的系统架构、操作系统、编译器和优化选项下差异性,通过函数约束推导式的提取和比较筛选出与漏洞函数语义相近的补丁升级函数,提高准确率。
技术领域
本发明属于计算机安全技术领域,特别涉及一种软件相似性度量方法及装置。
背景技术
软件相似性分析一般来说是给定一个未知软件判定其中的函数或代码片段与已知软件或函数库是否有同源性,可用于软件漏洞挖掘、软件侵权、恶意代码家族性分析等。在软件漏洞挖掘领域,通常给定一个已知漏洞,利用相似性度量方法在大规模软件中找到与其相似或关联的危险函数,通过对其分析可有效减少软件被攻击的风险。软件相似性分析分为静态分析和动态分析两类。静态分析通常指在不运行目标程序的前提下通过分析目标程序的语法和语义,并结合数据流或控制流分析建立相似度匹配模型。该方法通常执行效率高,但也存在较高误报率。动态分析主要是在软件运行时记录其运行状态,对其运行状态建立相似度匹配模型。该方法的准确性可较好保证,但配置各种软件运行环境耗时费力,且软件运行所产生的不良后果难以预测和消除。
21世纪以来,伴随着互联网、物联网的快速发展,软件规模呈现爆炸性增长态势。目前,动态分析方法由于搭建运行环境的复杂性和执行效率低的缺点,无法有效应对大规模软件漏洞的实时挖掘。相比之下,利用静态分析方法能较好适应大规模软件的漏洞挖掘需求。目前在使用静态分析方法对软件进行相似性度量时,普遍先使用基本块内特征统计的方法做基本块的相似性度量,再利用基本块间的控制流关系对函数相似性进行粗粒度匹配。然而,即使是同源软件,在不同系统架构、编译器和优化选项下都会产生不同的二进制代码,直接对软件反编译代码做特征统计必然存在相应误差;其次在利用相似性方法做漏洞挖掘时,存在无法有效区分漏洞函数和补丁函数的情况,因为部分漏洞函数在打补丁时仅进行了危险函数替换或修改约束以规避漏洞触发条件,这导致使用普通的相似性度量方法很难对它们进行有效区分。上述原因的存在导致目前的相似性度量方法普遍存在较高的误报率。
发明内容
为此,本发明提供一种软件相似性度量方法及装置,在传统的静态分析方法基础上利用增强型的软件相似性度量,有效提高静态相似性度量的准确性。
按照本发明所提供的设计方案,一种软件相似性度量方法,包含:
针对二进制程序代码,通过反汇编得到中间代码,并对中间代码进行规范化和标准化处理;
统计函数语义特征,通过粗粒度相似度计算筛选出前M名相似函数,并添加至候选函数集;
对候选函数集中函数,利用数据流依赖和程序控制流进行后向切片,获取用于表示函数关键语义的约束推导式集;
通过比较约束推导式集,获取目标函数与比较函数最终相似度得分;依据相似度得分,选取前N名的函数作为专家验证分析内容,其中,N≤M。
作为本发明软件相似性度量方法,进一步地,反汇编二进制程序代码,获取中间语言LLVM IR;对中间语言LLVM IR分别进行规范化和标准化处理。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学,未经中国人民解放军战略支援部队信息工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911189881.5/2.html,转载请声明来源钻瓜专利网。