欢迎来到天天文库
浏览记录
ID:43963174
大小:94.61 KB
页数:9页
时间:2019-10-17
《基于缓冲区溢出攻击与防范的研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于缓冲区溢出攻击与防范的研究论文题冃完成吋间专业班级姓名学号基于缓冲区溢出攻击与防范的研究基丁•缓冲区溢出攻击与防范的研究2011.3.12计算机科学与技术09级2班王春泉(20092501)青岛农业大学理信学院编制2011年3月摘要:缓冲区溢出的漏洞随着冯•诺依曼构架的出现就已经开始出现C在1988年随着莫里斯互联网蠕虫的广泛传播他们开始声名狼藉。不幸的是,同样的基于缓冲区溢出的攻击一直持续到今天。根据CVE显示的数据,2009年至今新发现的800多种漏洞中,有70多个都是缓冲区溢出漏洞。町见,基于这项“古老”漏洞的攻击依然不容小觑。对于基于缓冲区溢出攻击与防范的研究仍具有重
2、要意义。木论文在总结国缓冲区溢出攻击的简介与原理1.1缓冲区溢出攻击简介缓冲区是内存中存放数据的地方,一般來说,它是“包含和同数据类型实例的一个连续计算机内存块",它保存了给定类型的数据。应用最多的缓冲区类型是字符数组。缓冲区溢出(BufferOverflow)是指向I司定长度的缓冲区屮写入超出其预先分配长度的内容,造成缓冲区小数据的溢出,从而覆盖缓冲区相邻的内存空间。就像一个杯子只能盛一定量的水,如果倒入太多的水到杯子中,多余的水就会溢出到杯外。一般来说,简单的缓冲区溢出,比如覆盖的内存空间只是用来存储普通数据的,并不会产生安全问题。但如果覆盖的是一个函数的返回地址空间且其执行
3、者具有root权限,那么就会将溢出送到能够以root权限或其他超级权限运行命令的区域去执行某些代码或者运行一个Shell,该程序将会以超级用户的权限控制计算机。造成缓冲区越界的根本原因是由于C和C++等高级语言里,程序将数据读入或复制到缓冲区中的任何时候,所用函数缺乏边界检查机制,包括strcpy()>strcat()xsprintf()>vsprintf()xgets()、scanf()>fscanf()、sscanf()、vscanf()、vsscanf()和vfscanf()等。比如一个简单的例子:voidoverflow(char*input){charbuf[20J;s
4、trcpy(buf,input);}strcpy()将直接将input屮的内容复制到buf屮。如果我们赋了input的长度人于20,就会造成buf的溢出,使程序运行出错。最常见的手段是通过制造缓冲区溢出使程序运行一个用户Shell,再通过Shell执行其他命令。如果该程序属于rootfl.冇suid权限的话,攻击者就获得了一个有root权限的Shell,便可以对系统进行任意操作了。缓冲区溢出攻击之所以成为一种常见安全攻击手段,其原因在于缓冲区溢岀漏洞太普遍了,并口利用缓冲区溢出漏洞的攻击易于实现。于此同时,此种攻击所获得的利益也非常大。攻击者可以利用某台主机的网络服务程序中的缓冲
5、区溢岀漏洞得到在主机上运行代码的权限,此后,主机上的其他程序也可能被利用而获得更鬲级的权限。1.2缓冲区溢出攻击原理缓冲区是计算机内存中的一个连续块,保存了给定类型的数据。当进行大量动态内存分配而又管理不当时,就会出现问题。动态变最所需要的缓冲区是在程序运行时才进行分配的,如果程序在动态分配的缓冲区中放入超长的数据,它就会溢出。打个比方,缓冲区溢岀好比是将10磅的糖放进一个只能装5磅的容器里。一旦该容器放满了,余下的部分就溢出在柜台和地板上。程序设计者编写的程序代码,如果没有对目的区域即缓冲区做适当的检查,看它们是否够大,能否完全装入新的内容,结果就可能造成缓冲区溢出。但是,如果
6、缓冲区仅仅只是溢出,还不具有破坏性。当糖溢出时,柜台被盖住。只有把糖擦掉或用吸尘器吸走,才可以恢复柜台本來的血貌。与此不同的是,当缓冲区溢出时,过剩的信息覆盖的是计算机内存中以前的内容,除非这些被覆盖的内容被保存或能够恢复,否则就会永远丢失。在丢失的信息里可能有被程序调用的了程序及其参数。这意味着程序不能得到足够的信息从了程序返回,以完成它的任务。如果入侵者用精心编写的入侵代码(一种恶意程序)使缓冲区溢出,然后让程序依据预设的方法处理缓冲区,并II执行预设的程序代码,此时的程序就完全被入侵者操纵。1988年,美国康奈尔人学的计算机科学系研究生、23岁的莫里斯利川UNIXfinge
7、red程序不限制输入长度的漏洞,输入512个字符后使缓冲器溢岀,同时编写一段特别大的恶意程序能以root(根)身份执行,并感染到其他计算机上。这就是利用计算机缓冲区溢出漏洞进行攻击的最著名的莫里斯(Morris)蠕虫,它曾造成全世界6000多台网络服务器瘫痪。缓冲区溢出是一种相当普遍的缺陷,也是一种非常危险的缺陷,在各种系统软件、应用软件中广泛存在。缓冲区溢出可以导致程序运行失败、系统死机等后果。如果攻击者利用缓冲区溢出使计算机执行预设的非法程序,则可能获得系统特权,执行各种非法
此文档下载收益归作者所有