[发明专利]一种针对堆可控分配漏洞的检测方法及系统有效
| 申请号: | 201310277696.8 | 申请日: | 2013-07-03 |
| 公开(公告)号: | CN103389939A | 公开(公告)日: | 2013-11-13 |
| 发明(设计)人: | 陈渝;肖奇学;郭世泽;史元春;徐永健;茅俊杰;赵静;陈韬 | 申请(专利权)人: | 清华大学;中国人民解放军总参谋部第五十四研究所 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/57 |
| 代理公司: | 北京理工大学专利中心 11120 | 代理人: | 高燕燕 |
| 地址: | 10008*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 针对 可控 分配 漏洞 检测 方法 系统 | ||
1.针对堆可控分配漏洞的检测方法,其特征在于,包括以下步骤:
第一步:对目标分析文件进行逆向分析,通过反汇编、反编译、调试分析手段,对目标分析文件进行信息的获取和还原,获取的信息包括文件的执行流程信息、函数名称、参数信息、资源信息;
第二步:对需要分析的文件的函数参数进行符号化;
第三步:利用符号执行引擎对目标分析文件进行具体执行和符号执行相结合的分析,从而遍历所有路径;
第四步:利用二进制翻译方法对堆分配函数进行监控分析;
第五步:在目标分析文件执行到被监控的堆分配函数处时,对堆分配函数进行分析,通过堆栈获取堆分配函数需要分配的大小,并判断是否为符号值,如果是具体值,则继续运行,跳转至第八步;如果是符号值,则报告该路径所达的堆分配函数是存在可控堆分配漏洞,返回第三步;
第六步:对符号值进行分析求解,如果size可以等于0,则表示通过设置相关参数,可以使得堆分配函数分配大小为0的内存,则报告中等危险漏洞;
第七步:对符号值size进行整数溢出分析,并结合该路径上对size的约束,检测是否存在通过设定相应的变量,使得该符号值size存在整数溢出的可能,如果存在,则报告高等危险漏洞,并结束该路径。
2.针对堆可控分配漏洞的检测系统,其特征在于:包括动态二进制翻译子系统、执行引擎子系统和硬件虚拟子系统;
动态二进制翻译子系统完成对目标程序进行动态二进制翻译,在代码执行时,将一个平台的可执行代码转换为另一个平台的可执行代码;
执行引擎子系统包括具体执行模块、符号执行模块和*malloc分析模块,实现具体执行和符号执行;执行引擎子系统调用DBT来翻译guest代码,然后在native模式运行或者在符号执行引擎中解释执行;
具体执行模块提供在host CPU上执行具体代码,符号执行模块提供符号执行;执行引擎子系统首先通知DBT生成native code进行具体执行,但如果代码在读取的内存中包含符号数据时,它让DBT重新将代码翻译成LLVM,进行符号执行;*malloc分析模块完成对*malloc函数动态运行时的分析,包括判断*malloc要分配内存的大小是否为符号值;分析该符号值是否可能等于0;分析该符号表达式是否存在整数溢出情况;
硬件虚拟子系统实现对CPU、内存、设备的模拟实现。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学;中国人民解放军总参谋部第五十四研究所,未经清华大学;中国人民解放军总参谋部第五十四研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310277696.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种纳米机器人控制设备
- 下一篇:一种加强结构的三维测量划线机水平臂





