[发明专利]二进制程序循环写内存安全漏洞的检测方法无效
申请号: | 201210138459.9 | 申请日: | 2012-05-08 |
公开(公告)号: | CN102708054A | 公开(公告)日: | 2012-10-03 |
发明(设计)人: | 吴世忠;郭涛;郝永乐;崔宝江;梁晓兵 | 申请(专利权)人: | 中国信息安全测评中心;北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100089 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 二进制 程序 循环 内存 安全漏洞 检测 方法 | ||
技术领域
本发明涉及计算机软件安全分析领域,尤其涉及一种二进制程序循环写内存安全漏洞的检测方法。
背景技术
二进制程序中的缓冲区溢出漏洞通常发生在复杂的循环结构中。当二进制程序的代码含有嵌套循环时,通常会有复杂的代码之间的交互,而这类代码可能更易于含有潜在的安全漏洞。例如二进制程序循环写内存安全漏洞,该安全漏洞是指在循环写内存时,没有考虑内存区间的边界导致的内存访问越界。
目前,通常采用静态分析技术对二进制程序循环写内存安全漏洞进行检测。其工作原理是,利用静态的符号执行技术生成测试数据,遍历二进制程序循环结构的所有路径,将循环结构进行明确数目的展开或近似的展开来逼近循环。
对于真实的应用程序来说,展开循环在计算上的代价是很昂贵的。二进制程序循环结构的路径数目可能非常巨大,比如,如果一个单循环的迭代次数依赖于一些无界的输入,可能导致该二进制程序循环结构的可行路径也是无限增长的,因此二进制程序中的循环结构是进行静态分析的瓶颈。
另外,有些包含在循环结构内部的安全漏洞在循环执行到一定次数时才被触发。采用符号执行技术在解析汇编指令时,将循环结构按照预定的次数进行展开,如果预定的次数小于安全漏洞的触发次数,则无法检测到隐含在循环结构内部的安全漏洞。
发明内容
本发明的目的在于,提供一种二进制程序循环写内存安全漏洞的检测方法,从而解决静态分析技术存在的缺陷。
本发明的目的通过以下方式实现:
一种二进制程序循环写内存安全漏洞的检测方法,包括:
步骤1、获取与二进制程序中潜在安全漏洞相关的二进制程序的循环结构摘要信息;
步骤2、根据所述循环结构摘要信息,生成测试数据;
步骤3、根据所述测试数据对二进制程序进行循环写内存安全漏洞的检测。
本发明实施例提供的方法,在生成测试数据时,不需要遍历二进制程序循环结构的所有路径,仅需要根据生成的循环结构摘要信息得到测试数据。由于循环结构摘要信息是和二进制程序的潜在安全漏洞相关的,因此,生成的测试数据更有针对性,大大降低了展开循环的计算代价。
附图说明
图1为本发明实施例提供的方法流程图;
图2为本发明实施例提供的方法对应的系统工作流程图。
具体实施方式
本发明提供了一种二进制程序循环写内存安全漏洞的检测方法,其实现方式如图1所示,包括如下操作:
步骤1、获取与二进制程序中潜在安全漏洞相关的二进制程序的循环结构摘要信息;
步骤2、根据所述循环结构摘要信息,生成测试数据;
步骤3、根据所述测试数据对二进制程序进行循环写内存安全漏洞的检测。
本发明实施例提供的方法,在生成测试数据时,不需要遍历二进制程序循环结构的所有路径,仅需要根据生成的循环结构摘要信息得到测试数据。由于循环结构摘要信息是和二进制程序的潜在安全漏洞相关的,因此,生成的测试数据更有针对性,大大降低了安全漏洞检测的计算代价。另外,基于循环结构摘要信息生成测试数据,不需要对循环进行展开,也就避免了无法检测到隐含在循环结构内部的安全漏洞的问题。
本发明实施例提供的检测方法中,获取二进制程序的循环结构摘要信息的具体实现方式为:首先从二进制程序控制流图中最内部的循环结构开始,依次向外展开,分别对有内存写操作的循环结构生成单循环结构的摘要信息;获取单循环结构的摘要信息的集合,所述单循环结构的摘要信息的集合就是二进制程序的循环结构摘要信息。其中,所述单循环结构的摘要信息包括:循环结构的起始地址、循环结构的结束地址、控制循环体的循环次数的变量、循环写内存的缓冲区变量、所述缓冲区的数据的来源变量、输入文件中的关键字节相对于输入文件的文件头的偏移地址。
因此,对于二进制程序中复杂的嵌套循环结构来说,最终会归结为单循环结构的摘要信息的生成。二进制程序的循环结构摘要信息是单循环结构的摘要信息的集合。
本发明实施例中,单循环结构的摘要信息的生成依赖于二进制程序中循环结构的识别和动态的数据结构重构。动态的数据结构重构不需要源码,不依赖于关于二进制程序的任何注释信息。相应的,在生成单循环结构的摘要信息之前,本发明实施例提供的方法还包括如下操作:
步骤11、对所述二进制程序的循环结构进行识别;
步骤12、基于识别出的循环结构,对二进制程序进行动态数据结构重构。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国信息安全测评中心;北京邮电大学,未经中国信息安全测评中心;北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210138459.9/2.html,转载请声明来源钻瓜专利网。