[发明专利]一种防御缓冲区溢出攻击方法和装置无效
申请号: | 200810068268.3 | 申请日: | 2008-07-01 |
公开(公告)号: | CN101315655A | 公开(公告)日: | 2008-12-03 |
发明(设计)人: | 白皓文;崔巍 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F21/00 | 分类号: | G06F21/00 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129广东省*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 防御 缓冲区 溢出 攻击 方法 装置 | ||
技术领域
本发明涉及网络安全领域,尤其涉及一种防御缓冲区溢出攻击方法和装置。
背景技术
因特网访问的日益增长给恶意代码的远程攻击带来了可乘之机,网络中的攻击行为也在成倍的增长。基于缓冲区溢出的攻击已经成为网络攻击中最常见也是最具威胁的攻击方式之一。缓冲区溢出是指,计算机程序在缓冲区输入的数据位数超过了缓冲区的边界而造成的溢出。缓冲区溢出攻击包括多种类型,包括:基于堆的溢出攻击,基于栈的溢出攻击等。由于溢出的数据可能覆盖缓冲区相邻内存中的合法数据,破坏数据完整性,溢出的数据也可能覆盖函数指针或堆栈中的函数返回地址,破坏程序的执行流程,使得程序执行一些非安全代码,从而出现了缓冲区溢出漏洞。攻击者利用溢出漏洞,利用程序在缓冲区输入超过其边界长度的代码,造成溢出,使溢出的数据覆盖返回地址后,在返回地址处写上可以改变程序流程的地址,即跳转地址,使该地址指向自己的恶意代码,从而达到攻击、破坏系统的目的。
现有的相关防范缓冲区溢出攻击技术之一通过发现缓冲区溢出,结束该缓冲区溢出线程来防范缓冲区溢出攻击。相关的技术方案包括调用挂钩系统关键API(Application Programming Interfacc,应用程序编程接口)函数,检查函数的返回地址,根据该返回地址是否在堆栈范围内以及返回地址的属性是否可写,进一步来判断是否发生缓冲区溢出,当发现缓冲区溢出时,将引起该缓冲区溢出的线程结束。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
由于检查函数的返回地址前,存在返回地址或者页面属性被恶意修改的情况,该恶意修改可以有效的绕过上述方案仍然能达到恶意攻击的目的,通过上述的相关技术很难有效防御缓冲区溢出攻击。
发明内容
本发明实施例提供一种防御缓冲区溢出攻击的方法和装置,以提高系统的安全性。
根据本发明的一方面,提供一种防御缓冲区溢出攻击方法,包括:
创建新进程或线程时,获取进程或线程环境块的基地址;
随机化进程或线程环境块基地址。
根据本发明的另一方面,提供一种防御缓冲区溢出装置,包括:
获取单元,用于创建新进程或线程时,获取进程或线程环境块的基地址;
随机单元,用于随机化进程或线程环境块基地址。
本发明实施例还提供一种环境块创建装置,包括:
获取基地址单元,用于创建新进程或线程时,获取进程或线程环境块的基地址;
随机化单元,用于随机化所述进程或线程环境块的基地址;
创建单元,用于基于随机化后的基地址创建环境块数据。
缓冲区溢出发生时,改变进程或线程流程的跳转地址在进程或线程环境块中,或者恶意代码也在进程或线程环境块中。本发明实施例通过随机化进程或线程基地址指针使进程或线程环境块数据发生改变,因此其中的跳转地址也变为无效数据,进而线程或进程无法发生跳转,达到防止恶意攻击的目的,进而提高系统的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的防御缓冲区溢出攻击方法实施例一的流程示意图;
图2为本发明提供的防御缓冲区溢出攻击方法实施例二的流程示意图;
图3为本发明提供的防御缓冲区溢出攻击装置实施例一的结构示意图;
图4为本发明提供的环境块创建装置实施例一的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
缓冲区溢出是指当计算机程序向缓冲区内填充的数据位数超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想情况是,程序检查数据长度并且不允许输入超过缓冲区长度的字符串。但是绝大多数程序都会假设数据长度总是与所分配的存储空间相匹配,这就为缓冲区溢出攻击带来可能性。
如图1所示,本发明实施例提供的一种防御缓冲区溢出攻击方法,包括以下步骤:
1、创建新进程或线程时,获取进程或线程环境块的基地址;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810068268.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:金属布线基板的制备方法
- 下一篇:压伸式地锚