欢迎来到天天文库
浏览记录
ID:34016543
大小:234.53 KB
页数:3页
时间:2019-03-03
《基于缓冲区溢出攻击的安全防范研究new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、万方数据科技信息。计算机与信息技术oSCⅢNCE&珏CHNoLOGYⅡ师ORMAⅡDN2007年第28期基于缓冲区溢出攻击的安全防范研究高华1李学平2(1.西安邮电学院信息与管理工程系陕西西安710061;2.西安理工大学陕西西安710082)【摘要】文章首先解释了缓冲区溢出的概念,从程序语言本身存在缺陷,不够健壮的角度出发,对缓冲区溢出的原理进行了详细的阐述;通过一个会导致缓冲区溢出的程序代码对缓冲区溢出攻击的产生进行了实例分析,最后结合缓冲区溢出攻击的类型。从几个方面提出了缓冲区溢出攻击的防范策略。【关键宇】缓冲区溢出;安全防范;网络
2、攻击Res昀rchof鼢fetypr即aInio曲rybased伽bll置l『eroVerflowat切瞄呜G肿H姐1Li如卜pin矿(1.Infomati蚰姗dma眦gementengin∞ringDeparhIle峨xi’anUnive体ityofPostandTel∞ommuIIi∞廿。璐,】!【i’锄71∞6l,dlina;2.xi’anUIlive巧ityofoftechn9lo贸Ⅺ’柚7l0082,出na)【Abstmct】Thi8p印erfi玛tgivestheprinciple卸dpossjbil匆ofbu仃erovemo
3、wattacking,锄dpointsoutbu如rovemow’spotentiald粕ge瑙.Bythe锄alysisoft11epro班Lnlcodef抽buffhovemowattackin昏tIleex锄pleisgiv明0nekindofbu珏矗ovemowattacking.∞me叩inionsofpfecauti彻afyme黯ures册bufferove胡owanackinga您舀venall船1.【Keywords】bIlfferovemow;safetyprecautionary;networkattacking0.引
4、言缓冲区溢出(Bu雎r0verflow)攻击是十多年来应用十分广泛的一种攻击手段,近年来,许多著名的安全漏洞都与缓冲区溢出有关,因此它已经成为计算机安全的头号公敌。缓冲区溢出攻击利用了当前软件中的缓冲区漏洞.其主要原因是在软件开发过程中C,C++语言对数组访问越界不做检查。理论上采用其它相对安全语言(如iava、c#)取代C/C++可以从根本上解决缓冲区溢出问题,但目前大部分软件均采用C/C++编写,完全用其他语言改写是不实际的。因此,缓冲区溢出漏洞在今后相当长的时间内会广泛存在。缓冲区溢出攻击可以导致程序运行失败、系统崩溃、重新启动甚至
5、整个网络瘫痪,更为严首的是,可以利用它执行非授权指令,取得系统特权。因此,深人研究缓冲区溢出的原理及植入代码的结构特征。对于探索如何防御溢出攻击具有重要意义。1.缓冲区溢出原理及分类1.1缓冲区溢出基本原理应用程序被加载运行后,其内存影像在线性空间中被分成了三个部分:文本区、数据区和堆栈区(图1)。文本区中保存着程序的执行代码以及只读数据.该区域通常被标记为只读.任何对其进行的写操作队会导致段出错(se舯entationViolation)。数据区包括初始化数据区(BBs)和已初始化数据区。前者存储静态分配的变量.后者存储程序初始化数据;
6、堆栈区也可以分为两个部分,一个堆(He印),用于存储程序运行过程中动态分配的数据块(调用malloc或calloe函数),另一个就是栈(Stack),用于存储函数调用所传递的参数、函数的返回地址、函数的局部变量等。内办缸地址内打矗地螂韧蟾化量鬻匠嚣韧鲐化赣括隧tBss’l—蠢(1I—帕穗(s扭d0l一图1程序在内存中的影像缓冲区溢出,就是由于填充数据越界而导致程序原有流程的改变,攻击者借此精心构造填充数据,让程序转而执行特殊的代码,最终获得系统的控制权。C,C++语言中,不对缓冲区、数组及指针进行边界检查(8trpcy()、strcat(
7、)、s—n£()、get8()等语句),在程序员忽略对边界进行检查而向一个有限的空间的缓冲区中置人过长的字符串从而带来了两种可能的后果:一是过长的字符串覆盖了相邻的存储单元。引起程序运行的失败,严重的导致系统的崩溃;二是利用这种漏洞可以执行任意指令,甚至可以取得系统的特权,由此而引发攻击。,1.2缓冲区溢出攻击的分类缓冲区溢出攻击的方法是多种多样的,如果按照填充数据(代码)溢出的缓冲区位置来看,可以有栈溢出(StackOverflow)、堆溢出(Heap0vemow)、以及BSS(静态数据区)溢出。“)栈溢出当函数被调用时.系统建立栈并把
8、调用函数的参数以逆序方式入栈。这时栈中包含如下信息:函数的返酬地址、调用函数的栈帧信息(栈顶和栈底)、为函数参数分配的空间及为被调用函数的局部变量分配的空问。栈的缓冲区溢出攻击发生的主要原因是
此文档下载收益归作者所有