一种基于数据流分析的软件补丁检测方法及装置制造方法及图纸

技术编号:24207252 阅读:101 留言:0更新日期:2020-05-20 15:12
一种基于数据流分析的软件补丁检测方法,利用Extractor对补丁代码进行解析,按序选择检测所述补丁代码中赋值语句和条件语句、函数调用语句、类型相关语句、其它类型语句的修改语义做为待检测补丁的特征;建立二进制代码与源码之间的映射关系;选择VEX‑IR作为物联网环境中的设备固件的二进制代码提升的中间代码,使用开源的Angr对二进制代码进行分析,提取出控制流,所述控制流以函数为单位,每个所述函数包含节点为基本块,程序跳转语义为边的控制流;对所述基本块内的数据流进行分析,对所述基本块的代码进行反向逐条分析,提取每个语句中变量的使用链;对跨基本块的数据流进行分析;对提取出的数据流进行优化;从基本块中得到补丁特征,对其进行多阶段匹配。

A software patch detection method and device based on data flow analysis

【技术实现步骤摘要】
一种基于数据流分析的软件补丁检测方法及装置
本专利技术涉及计算机
,尤其涉及一种基于数据流分析的软件补丁检测方法及装置。
技术介绍
随着IoT的快速发展以及开源软件在IoT设备中的广泛应用,大量存在漏洞的设备暴露在互联网环境中。据Gartner发布的报告,预计至2020年全球范围内将有200亿物联网设备。虽然开源软件会定期发布漏洞补丁,然而由于缺乏有效的软件更新机制及补丁管理机制,大量漏洞仍然未被修补,比如2014年爆出的Heartbleed漏洞导致2亿多个安卓设备存在被攻击的风险,虽然OpenSSL及时发布了针对该漏洞的补丁,截至2017年仍然有超过20万个设备中的漏洞未被修补。因此无论对于安全研究人员还是企业软件产品的维护人员,高效准确的补丁检测工具成为亟需。然而由于软件产品的快速迭代以及产品发布平台的差异化导致补丁检测非常难以实现。当前的补丁检测方法包括:提取二进制代码的控制流并进行嵌入学习,继而将学得的特征向量利用分类器进行判别分析,该类方法虽然检测效率比较高,检测精度却存在极大限制。另一类方法采用基于符号执行结合数据流分析的方法对二进制代码中的补丁进行检测,然而该类方法效率极其低下,无法应用到大规模的软件产品检测任务中。这些使得现有补丁检测工具的效率和准确率受到了限制。高效准确的自动化补丁检测工具在物联网设备安全防护中具有极其重要的作用,然而目前已有的工作和装置在检测效率和准确度上还远远满足不了实际应用的需求。所以基于现有技术中软件补丁检测装置存在的问题和挑战,需要一种新的解决方案解决上述问题。
技术实现思路
为解决上述技术问题,本专利技术提供了一种基于数据流分析的软件补丁检测方法及装置。一种基于数据流分析的软件补丁检测方法,包括:步骤一:利用Extractor对补丁代码进行解析,按序选择检测所述补丁代码中赋值语句和条件语句、函数调用语句、类型相关语句、其它类型语句的修改语义做为待检测补丁的特征;建立二进制代码与源码之间的映射关系;步骤二:选择VEX-IR作为物联网环境中的设备固件的二进制代码提升的中间代码,使用开源的Angr对二进制代码进行分析,提取出控制流,其中,所述控制流以函数为单位,每个所述函数为包含节点为基本块,程序跳转为边的所述控制流;对所述基本块内的数据流进行分析,对所述基本块的代码进行反向逐条分析,提取每个语句中变量的使用链;对跨基本块的数据流进行分析,将分布于不同所述基本块内的数据流连接构成完整的数据信息;对提取出的数据流进行优化;从所述基本块中按序选择ITL语句、赋值语句以及所述基本块内的最后一条指令,对三者中包含的多个变量分别进行细粒度数据提取,得到补丁特征;步骤三:对所述补丁特征进行多阶段匹配。进一步,步骤一中建立二进制与源码之间映射关系的过程为:提取源码中修改点为粒度的补丁信息;将所述源码应用待检测补丁,使用-g3选项对源码进行编译得到二进制代码;通过二进制分析工具建立二进制代码与所述补丁信息之间的对应关系。进一步,步骤二中所述开源的Angr包括控制流构建接口CFGFast。进一步,步骤二中所述基本块包括所述基本块所使用的的所有变量信息,包含的指令,基本块跳出方式,其中,所述指令包括原始指令及翻译后的中间代码。进一步,步骤二中所述跨基本块的数据流分析依赖所述基本块内数据流分析提供的到达-定值信息,其中,所述到达-定值信息包括,流入流出该基本块的变量信息。进一步,步骤二中所述数据流进行优化通过对提取出的数据流进行进一步的复制传播分析、死代码删除以及变量重命名。进一步,步骤三中所述补丁特征多阶段匹配的方法为:首先对待检测的目标二进制代码进行中间代码提升,然后检测其中是否包含补丁特征所在的函数;然后对匹配到的函数构建控制流结构,并进行控制流结构进行初步的快速匹配,该步骤主要对控制流的入度,初度,跳转类型等进行匹配;对于上一步匹配到的候选基本块结构进行进一步的细粒度数据流分析,根据前述步骤提取出的跟根令特征在候选基本块进行进一步的筛选;分别对每一个匹配的根指令提取数据流片段,分别与提取出的补丁特征进行匹配,该匹配主要包括:输入变量,输出变量,及中间代码操作符及操作数类型等。本专利技术还提供了一种技术方案,这种技术方案为:一种基于数据流分析的软件补丁检测装置,包括:选择单元,用于利用Extractor对补丁代码进行解析,按序选择检测所述补丁代码中赋值语句和条件语句、函数调用语句、类型相关语句、其它类型语句的修改语义作为待检测补丁的特征,建立二进制代码与源码之间的映射关系;分析单元,选择VEX-IR作为物联网环境中的设备固件的二进制代码提升的中间代码,使用开源的Angr对二进制代码进行分析,提取出控制流,对基本块内的数据流以及跨基本块的数据流进行分析;处理单元,对提取出的数据流进行优化;从所述基本块中按序选择ITL语句、赋值语句以及所述基本块内的最后一条指令,对三者中包含的多个变量分别进行细粒度数据流提取,得到补丁特征;对所述补丁特征进行多阶段匹配。进一步,所述分析单元提取出的控制流以函数为单位,每个所述函数为包含节点为基本块,程序跳转为边的所述控制流。本专利技术一种基于数据流分析的软件补丁检测方法及装置,本专利技术针对当前软件补丁检测装置存在的问题与挑战,提高补丁检测工具的检测效率和准确度。本专利技术提出一种基于细粒度数据流分析的软件补丁检测方法及装置。该方法具有以下特点:本专利技术针对物联网设备平台架构差异化的特点首先将二进制代码提升至一种平台无关的中间代码形式,从而消除平台差异造成的补丁难以识别的难题;本专利技术在中间代码上进行多趟优化算法,消除了不同编译器及优化级别带来的代码语法差异;本专利技术在优化后的中间代码上施行两阶段的检测策略,首先进行快速的代码语义结构筛选,继而对细粒度的补丁语义进行检测,实现效率与精度的综合提升;本专利技术提出的方法相比传统的二进制代码相似度比较以及最近的基于符号执行的补丁检测,可以在保持精度的前提下,效率提升近10倍。附图说明图1为本专利技术中总体流程示意图;图2为本专利技术实施例中基本块内数据流分析流程示意图;图3为本专利技术实施例中数据流优化算法示意图;图4为本专利技术实施例中数据流特征提取算法;图5为本专利技术软件补丁检测装置的示意图。具体实施方式为了能够更加详尽地了解本专利技术实施例的特点与
技术实现思路
,下面结合附图对本专利技术实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本专利技术实施例。为清楚地说明本专利技术的设计思想,下面结合实施例对本专利技术进行说明。实施例一图1为本专利技术实施例的基于数据流分析的软件补丁检测方法的流程图,如图1所示,一种基于数据流分析的软件补丁检测方法,包括:步骤一:利用Extractor对补丁代码进行解析,按序选择检测所述补丁代码中赋值语句和条件语句、函数调用语句本文档来自技高网
...

【技术保护点】
1.一种基于数据流分析的软件补丁检测方法,其特征在于,所示方法包括:/n步骤一:利用Extractor对补丁代码进行解析 ,按序选择检测所述补丁代码中赋值语句和条件语句、函数调用语句、类型相关语句、其它类型语句的修改语义作为待检测补丁的特征;建立二进制代码与源码之间的映射关系;/n步骤二:选择VEX-IR作为物联网环境中的设备固件的二进制代码提升的中间代码,使用开源的Angr对二进制代码进行分析,提取出控制流,其中,所述控制流以函数为单位,每个所述函数为包含节点为基本块,程序跳转为边的所述控制流;/n对所述基本块内的数据流进行分析,对所述基本块的代码进行反向逐条分析,提取每个语句中变量的使用链;/n对跨基本块的数据流进行分析,将分布于不同所述基本块内的数据流连接构成完整的数据信息;/n对提取出的数据流进行优化;/n从所述基本块中按序选择ITL语句、赋值语句以及所述基本块内的最后一条指令,对三者中包含的多个变量分别进行细粒度数据流提取,得到补丁特征;/n步骤三:对所述补丁特征进行多阶段匹配。/n

【技术特征摘要】
1.一种基于数据流分析的软件补丁检测方法,其特征在于,所示方法包括:
步骤一:利用Extractor对补丁代码进行解析,按序选择检测所述补丁代码中赋值语句和条件语句、函数调用语句、类型相关语句、其它类型语句的修改语义作为待检测补丁的特征;建立二进制代码与源码之间的映射关系;
步骤二:选择VEX-IR作为物联网环境中的设备固件的二进制代码提升的中间代码,使用开源的Angr对二进制代码进行分析,提取出控制流,其中,所述控制流以函数为单位,每个所述函数为包含节点为基本块,程序跳转为边的所述控制流;
对所述基本块内的数据流进行分析,对所述基本块的代码进行反向逐条分析,提取每个语句中变量的使用链;
对跨基本块的数据流进行分析,将分布于不同所述基本块内的数据流连接构成完整的数据信息;
对提取出的数据流进行优化;
从所述基本块中按序选择ITL语句、赋值语句以及所述基本块内的最后一条指令,对三者中包含的多个变量分别进行细粒度数据流提取,得到补丁特征;
步骤三:对所述补丁特征进行多阶段匹配。


2.根据权利要求1所述的基于数据流分析的软件补丁检测方法,其特征在于,步骤一中建立二进制与源码之间映射关系的过程为:提取源码中修改点为粒度的补丁信息;将所述源码应用待检测补丁,使用-g3选项对源码进行编译得到二进制代码;通过二进制分析工具建立二进制代码与所述补丁信息之间的对应关系。


3.根据权利要求1所述的基于数据流分析的软件补丁检测方法,其特征在于,步骤二中所述开源的Angr包括控制流构建接口CFGFast。


4.根据权利要求1所述的基于数据流分析的软件补丁检测方法,其特征在于,步骤二中所述基本块包括所述基本块所使用的所有变量信息,包含的指令,基本块跳出方式,其中,所述指令包括原始指令及翻译后的中间代码。


5.根据权利要求1所述的基于数据流分析的软件补丁检测方法,其特征在于,步骤二中所述跨基本块的数据流分析依赖所述基本块内数据流分析提供的到达-定值信息,其中,所述到达-定值信息包括,流...

【专利技术属性】
技术研发人员:李建欣孙佩源邵明来周睿邰振赢
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1