[发明专利]缓冲区溢出保护方法在审

专利信息
申请号: 201510828343.1 申请日: 2015-11-24
公开(公告)号: CN105426752A 公开(公告)日: 2016-03-23
发明(设计)人: 马晓东;谢汶兵;漆锋滨;尉红梅;翟彦河;陈茜 申请(专利权)人: 无锡江南计算技术研究所
主分类号: G06F21/52 分类号: G06F21/52;G06F21/56
代理公司: 北京众合诚成知识产权代理有限公司 11246 代理人: 龚燮英
地址: 214083 江苏*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 缓冲区 溢出 保护 方法
【说明书】:

技术领域

发明涉及计算机技术领域,具体涉及一种缓冲区溢出保护方法。

背景技术

堆栈作为程序中必不可少的内容,程序在运行时,内存中会开辟出一块连续的栈空间,用于维护函数调用时所必须的上下文信息,包括旧的帧指针、返回地址、调用参数和局部变量等。程序可以将上下文信息压栈,也可以从栈顶弹出。然而缓冲区一旦分配完成,大小和地址便固定下来。当使用缓冲区时,如果操作超出缓冲区边界的区域,便可能会发生栈缓冲区域溢出。缓冲区溢出攻击包括栈溢出、堆溢出、格式化字符串攻击等攻击类型。其防护手段包括静态的数组边界检查、堆栈的不可执行、动态的缓冲区溢出监测以及库函数的安全增强等。而相比堆缓冲区溢出和格式化字符串攻击的漏洞,栈缓冲区溢出漏洞仍占多数,且攻击者利用栈缓冲区溢出漏洞的手段多样化,攻击更隐蔽。

栈溢出一般会导致函数返回地址、栈帧指针等改变,进而导致程序控制流篡改、系统宕机等。针对此问题,目前提出的普遍做法是通过在栈中添加栈保护(StackGuard)标签来保证栈的完整性、建立双栈结构将控制流信息和数据流信息完全分离、栈帧指针加密等。

但是,目前堆栈信息的保护大多都是基于缓冲区溢出攻击中的某一种进行保护,不能全面的解决缓冲区溢出问题。再者目前的双栈结构等其在兼容性和性能方面仍然是一个很大的不足,有时会导致性能等方面的大幅下降。

发明内容

本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种兼容安全、高效、全面的缓冲区溢出保护方法。

根据本发明,提供了一种缓冲区溢出保护方法,包括:根据原始栈形成一个备份栈,其中备份栈备份了函数返回地址和堆栈帧指针,而且备份栈在调用函数入口处备份控制流信息;在函数调用返回时通过比较原始栈与备份栈信息来判断是否有溢出发生。

优选地,所有进程都有共享库中代码;在基础库链接过程中,不把所述共享库拷贝到输出文件,而是使得所有进程共享一份它们用到的共享库中的例程的拷贝。

优选地,通过设计一个库来实现在调用函数入口处备份控制流信息。

优选地,所述库中定义了一个静态数组用于保存控制流信息。

优选地,所述库中的函数实现栈的压入和弹出操作,以及监测到控制流信息被修改时的处理机制。

优选地,所述库包括第一函数和第二函数;其中第一函数在被编译程序的每个函数的入口处被调用,第一函数的输入为当前函数的帧指针指向的内存位置的内容和返回地址;第二函数在被编译程序的每个函数的出口处被调用,其中第二函数的输入为当前函数的帧指针指向的内存位置的内容和返回地址。

优选地,第一函数和第二函数被插入在目标函数的头部和尾部的第一条指令前和最后一条指令后。

本发明提出的采用备份控制流信息方案的缓冲区溢出保护方法,既对堆栈中关键的控制流信息做了保护,又保证了不同平台的兼容性问题,并且也保证了程序的性能问题。

附图说明

结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:

图1示意性地示出了根据本发明优选实施例的缓冲区溢出保护方法的流程图。

图2a和图2b示意性地示出了根据本发明优选实施例的缓冲区溢出保护方法采用的备份控制流信息的示意图。

需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。

具体实施方式

为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。

本发明提出方案是对关键的控制流信息进行备份,在程序运行时比较备份值和原始值来判断是否有攻击行为产生。

具体地,图1示意性地示出了根据本发明优选实施例的缓冲区溢出保护方法的流程图。

如图1所示,根据本发明优选实施例的缓冲区溢出保护方法包括:

第一步骤S1:根据原始栈(例如图2a所示的原始栈),形成一个备份栈(例如图2b所示的备份栈),其中备份栈备份了函数返回地址和堆栈帧指针,而且备份栈在调用函数入口处备份控制流信息;

第二步骤S2:在函数调用返回时通过比较原始栈与备份栈信息来判断是否有溢出发生。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于无锡江南计算技术研究所,未经无锡江南计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201510828343.1/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top