[发明专利]Linux平台二进制软件堆溢漏洞动态检测方法及系统在审
申请号: | 202010938518.5 | 申请日: | 2020-09-09 |
公开(公告)号: | CN111931191A | 公开(公告)日: | 2020-11-13 |
发明(设计)人: | 黄晖;陆余良;黄曙光;赵顺恺;于璐;甘桂华;梁用语;曹杨 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57 |
代理公司: | 中国和平利用军工技术协会专利中心 11215 | 代理人: | 刘光德 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | linux 平台 二进制 软件 漏洞 动态 检测 方法 系统 | ||
1.一种Linux平台二进制软件堆溢漏洞动态检测系统,其特征在于,所述系统包括:二进制程序仿真加载模块、API函数挂钩模块、基于动态二进制翻译的二进制程序仿真执行模块、堆管理机制运行时托管模块、基于自定制机器码的异常报警模块,其中,二进制程序仿真加载模块根据目标程序对应的可执行文件格式,将其代码段、数据段内容载入到仿真执行环境中;API函数挂钩模块对载入到仿真执行环境中的二进制程序进行API挂钩,形成目标程序的仿真执行映像;基于动态二进制翻译的二进制程序仿真执行模块对所形成的仿真执行映像进行仿真执行;仿真执行期间目标程序发生malloc、realloc堆申请操作时,堆管理机制运行时托管模块将堆申请托管,返回给应用程序“边界精确”的内存区块;目标程序在执行中对申请得到的“边界精确”的内存区块进行读写访问时发生溢出时,基于自定制机器码的异常报警模块捕获溢出事件并通告用户该程序存在堆溢出漏洞。
2.根据权利要求1所述的Linux平台二进制软件堆溢漏洞动态检测系统,其特征在于,所述目标程序对应的可执行文件格式包括Windows平台下的PE文件格式,Linux平台下的ELF文件格式。
3.根据权利要求2所述的Linux平台二进制软件堆溢漏洞动态检测系统,其特征在于,所述二进制程序仿真加载模块基于ELF可执行文件格式对目标程序进行内容解析,确定出其代码部分、数据部分内容的内存映射信息,并映射到基于动态二进制翻译的二进制程序仿真执行模块的内存空间,调用目标环境内适配的动态链接器对该可执行文件里的外部导入项目进行动态重定位。
4.根据权利要求3所述的Linux平台二进制软件堆溢漏洞动态检测系统,其特征在于,所述基于动态二进制翻译的二进制程序仿真执行模块将客户体系结构的指令转换为主机平台下对应的机器指令,通过执行翻译得到的宿主机二进制代码对目标程序进行仿真执行。
5.根据权利要求1所述的Linux平台二进制软件堆溢漏洞动态检测系统,其特征在于,所述堆管理机制运行时托管模块将堆申请托管,旨在进行“边界精确”的内存申请,仅允许目标程序读写分配给它的内存区域,所有对其邻近区域的内存段发生的内存访问为非法报警。
6.一种Linux平台二进制软件堆溢漏洞动态检测方法,其特征在于,所述方法包括:
S1,根据目标程序对应的可执行文件格式,将代码段、数据段内容载入到仿真执行环境中;
S2,对载入到仿真执行环境中的二进制程序进行API挂钩,形成目标程序的仿真执行映像;
S3,对所形成的仿真执行映像进行仿真执行;
S4,仿真执行期间,如果目标程序发生malloc、realloc堆申请操作,将堆申请托管,返回给应用程序“边界精确”的内存区块;
S5,目标程序对所得到的“边界精确”的内存区块进行读写访问中发生溢出时,由于地址越界将访问到无效的内存页面并触发异常,进而通告用户程序存在堆溢出漏洞。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010938518.5/1.html,转载请声明来源钻瓜专利网。
- 上一篇:摄像光学镜头
- 下一篇:一种半导体器件制造方法