一种面向二进制程序的堆溢出检测方法技术

技术编号:17346591 阅读:39 留言:0更新日期:2018-02-25 11:58
本发明专利技术提出一种面向二进制程序的堆溢出检测方法,其步骤如下:根据程序运行过程中的堆管理操作函数的调用情况,对相关堆管理操作信息进行记录;根据堆管理操作信息生成污点信息并对二者进行关联,通过对污点信息动态传播,动态监控程序运行过程中所有和污点信息相关的操作;如发现某指令中使用该污点数据,则将该条指令作为堆溢出判断指令;根据污点数据确定该指令实际访问内存地址,判断该内存地址是否存在堆溢出。通过动态监控程序运行过程中的堆分配以及堆指针,识别所有堆访问操作过程中的越界行为,从而完成堆溢出的检测。

【技术实现步骤摘要】
一种面向二进制程序的堆溢出检测方法
本专利技术属于网络安全
,具体涉及一种面向二进制程序的堆溢出检测方法。
技术介绍
现有软件漏洞类型繁多,而程序缓冲区溢出漏洞是目前最为常见也是可利用性最高的一类漏洞,其根据缓冲区内存的不同可以分为栈溢出漏洞和堆溢出漏洞。其中,栈溢出漏洞是历史最为悠久的一类溢出漏洞,对于该类型漏洞的挖掘、防御以及可利用性分析已经有相当丰富的研究成果;而对于堆溢出漏洞来说,由于堆自身结构的复杂性以及堆分配的动态特性,目前针对其相关的漏洞挖掘检测、成因分析以及可利用性分析是目前软件漏洞研究领域中的热点及难点问题。现有的堆溢出检测工作主要分为以下两种:1)基于堆防护页的检测方法:通过在每个堆块的头部或尾部放置不可访问的防护页,如果堆溢出发生并尝试访问防护页,则系统会因为内存不可访问而告警或者崩溃,从而检测出堆溢出的发生;2)基于源码重编译的检测方法:该方法主要是替代原有堆分配、释放等函数库,通过新的具有安全检测的函数库(例如,每次堆分配或者释放时,这些函数库中的安全函数会检测堆管理数据是否被破坏)来检测堆溢出的发生。上述两类方法主要存在的问题在于效率不理想以及存在对本文档来自技高网...
一种面向二进制程序的堆溢出检测方法

【技术保护点】
一种面向二进制程序的堆溢出检测方法,其步骤如下:根据程序运行过程中的堆管理操作函数的调用情况,对相关堆管理操作信息进行记录;根据堆管理操作信息生成污点信息并对二者进行关联,通过对污点信息动态传播,动态监控程序运行过程中所有和污点信息相关的操作;如发现某指令中使用该污点数据,则将该条指令作为堆溢出判断指令;根据污点数据确定该指令实际访问内存地址,判断该内存地址是否存在堆溢出。

【技术特征摘要】
1.一种面向二进制程序的堆溢出检测方法,其步骤如下:根据程序运行过程中的堆管理操作函数的调用情况,对相关堆管理操作信息进行记录;根据堆管理操作信息生成污点信息并对二者进行关联,通过对污点信息动态传播,动态监控程序运行过程中所有和污点信息相关的操作;如发现某指令中使用该污点数据,则将该条指令作为堆溢出判断指令;根据污点数据确定该指令实际访问内存地址,判断该内存地址是否存在堆溢出。2.如权利要求1所述的面向二进制程序的堆溢出检测方法,其特征在于,所述堆管理操作包括堆分配,堆释放。3.如权利要求2所述的面向二进制程序的堆溢出检测方法,其特征在于,所述堆管理操作信息包括:堆分配对应的线程标识,堆分配/堆释放的堆起始地址,堆分配/堆释放的大小,是否进行堆分配/堆释放。4.如权利要求3所述的面向二进制程序的堆溢出检测方法,其特征在于,所述污点信息包括:堆起始地址对应的内存地址及其长度。5.如权利要求3所述的面向二进制程序的堆溢出检测方法,其特征在于,动态监控程序运行过程中与污点信息相关的操作包括:通过程序动态监控的方式,获取程序执行过程中的每一条指令,并通过语义解析来进行指令信息的记录,记...

【专利技术属性】
技术研发人员:和亮苏璞睿杨轶闫佳黄桦烽贾相堃
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京,11

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

1