[发明专利]一种针对堆可控分配漏洞的检测方法及系统有效
| 申请号: | 201310277696.8 | 申请日: | 2013-07-03 | 
| 公开(公告)号: | CN103389939A | 公开(公告)日: | 2013-11-13 | 
| 发明(设计)人: | 陈渝;肖奇学;郭世泽;史元春;徐永健;茅俊杰;赵静;陈韬 | 申请(专利权)人: | 清华大学;中国人民解放军总参谋部第五十四研究所 | 
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57 | 
| 代理公司: | 北京理工大学专利中心 11120 | 代理人: | 高燕燕 | 
| 地址: | 10008*** | 国省代码: | 北京;11 | 
| 权利要求书: | 查看更多 | 说明书: | 查看更多 | 
| 摘要: | |||
| 搜索关键词: | 一种 针对 可控 分配 漏洞 检测 方法 系统 | ||
技术领域
本发明涉及一种针对堆可控分配漏洞的检测方法及系统,属于操作系统漏洞检测领域。
背景技术
内存管理方面的安全问题是操作系统安全领域非常重要的一部分,内存分配以及内存访问安全问题的研究非常重要。一般来说漏洞挖掘的方法分为静态检测和动态运行测试。它们分别指:
静态检测:主要是通过对软件系统的源代码进行安全扫描,根据程序中数据流,控制流,语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。静态的源代码安全测试是非常有用的方法,它可以在编码阶段找出所有可能存在安全风险的代码,这样开发人员可以在早期解决潜在的安全问题。
动态测试:动态检测技术是一种不同于静态检测技术的动态的检测技术,它通过调试器运行被检测的软件的某项功能,检查运行结果与预期结果的差距,来确定被测软件此功能是否存在安全缺陷。这是一种针对软件功能的检测技术,它主要由构造测试用例,调试软件程序,分析软件程序三个部分构成。
现有的漏洞检测技术主要是基于源代码的静态分析、基于二进制代码的静态分析、Fuzzing测试技术。单纯的静态检测准确度低、误报率高,而动态测试的覆盖率又比较低,漏报较多。
可控堆分配漏洞定义:当一个函数调用,在某个分支或路径上进行堆分配操作(即malloc),在linux内核中一般调用kmalloc来实现。而此时要分配的大小可由函数传入的参数来控制的,那么该函数存在可控堆分配漏洞。攻击者可以通过构造相应的输入使得kmalloc的大小为0或者很大的数,从而使得程序的运行得到意想不到的结果。如果此时的可控分配大小还可以存在整数溢出,使得通过一个较大的输入因子溢出后分配的结果为较小的值,而这种情况容易被程序员疏忽,在后面进行内存操作时发生错误。如cve-2004-1334、cve-2004-2013、cve-2011-1746,皆为这类型漏洞。
可控堆分配漏洞并不被认为是一种新的漏洞类型(像缓冲区溢出漏洞一样)。但是我们认为这是一种新的类型的代码缺陷,类似整数溢出,许多时候会发生,但是是合法的,且不会导致漏洞。但这种缺陷发生的同时,还有整数溢出发生,那么之后发生堆缓冲区溢出的可能性将大大增加,从而导致严重的安全隐患。
发明内容
本发明提供一种针对堆可控分配漏洞的检测方法及系统,基于融合了使用虚拟机技术动态执行测试和使用符号执行静态分析技术的通用测试平台,覆盖率比Fuzzing等动态测试技术高,并且同时具备动态检测的准确性,误报率低。
该针对堆可控分配漏洞的检测方法包括以下步骤:
第一步:对目标分析文件进行逆向分析,通过反汇编、反编译、调试分析手段,对目标分析文件进行信息的获取和还原,获取的信息包括文件的执行流程信息、函数名称、参数信息、资源信息;
第二步:对需要分析的文件的函数参数进行符号化;
第三步:利用符号执行引擎对目标分析文件进行具体执行和符号执行相结合的分析,从而遍历所有路径;
第四步:利用二进制翻译方法对堆分配函数进行监控分析;
第五步:在目标分析文件执行到被监控的堆分配函数处时,对堆分配函数进行分析,通过堆栈获取堆分配函数需要分配的大小,并判断是否为符号值,如果是具体值,则继续运行,跳转至第八步;如果是符号值,则报告该路径所达的堆分配函数是存在可控堆分配漏洞,返回第三步;
第六步:对符号值进行分析求解,如果size可以等于0,则表示通过设置相关参数,可以使得堆分配函数分配大小为0的内存,则报告中等危险漏洞;
第七步:对符号值size进行整数溢出分析,并结合该路径上对size的约束,检测是否存在通过设定相应的变量,使得该符号值size存在整数溢出的可能,如果存在,则报告高等危险漏洞,并结束该路径。
本发明的优点在于将选择性符号执行和整数溢出错误检测结合,在脱离了源码依赖的基础上又提高了检测结果的正确性和全面性,而且在时间消耗上也比完全符号执行更有优势,这是目前单纯的动态和静态整数溢出错误检测所无法同时达到的。
附图说明
图1是本发明所提出方法工作流程图;
图2为本发明针对堆可控分配漏洞的检测系统结构图。
具体实施方式
下面结合具体实施例和附图详细说明本发明,但本发明并不仅限于此。
如图1所示,本发明将提出的针对可控堆分配漏洞进行检测的方法,包括以下步骤:
1、对目标分析文件进行逆向工程,获取需要分析的函数和参数信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学;中国人民解放军总参谋部第五十四研究所,未经清华大学;中国人民解放军总参谋部第五十四研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310277696.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种纳米机器人控制设备
- 下一篇:一种加强结构的三维测量划线机水平臂





