欢迎来到天天文库
浏览记录
ID:37620988
大小:422.46 KB
页数:18页
时间:2019-05-26
《缓冲区溢出防范策略》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、缓冲区溢出防范策略缓冲区溢出防范策略软件是一种典型的以有效的方式操纵数据的书面形式的产品。这些数据可以是文本,图像,视频或声音;但是,就程序而言,本质上它只是一串数据——通常以字节(8位数据)的形式代表某些意义(例如,颜色或文本字符)。当一个程序员申明一个缓冲区时,非常容易申请一个可能不适合程序后来的指针使用的缓冲区,或者可能会在没有很充分地验证输入时接受超出缓冲区大小的数据。这就涉及到缓冲区溢出的问题,本手册将围绕这一问题展开讲解。初识缓冲区溢出许多流行的语言,例如C和C++,留给程序员很大的自由度——比如让程序员明确申明缓冲区为一定的大小
2、。那么什么是缓冲区溢出呢?它对我们的软件程序应用会带来什么样的危害呢?是什么导致网络应用中的缓冲区溢出和内存泄露?缓冲区溢出攻击是如何发生的深入理解缓冲区溢出了解了缓冲区溢出之后,你是否想更进一步的深入理解它的发生原理呢?目前的软件市场上这种情况呈现怎样的趋势呢?如何破坏代码之缓冲区溢出淹没于缓冲区溢出漏洞TT安全技术专题之“缓冲区溢出防范策略”Page2of18缓冲区溢出攻击:它们是如何进行的?缓冲区溢出的应对策略现在我们完全理解了缓冲区溢出进行的原理,那么我们该怎样在自己的程序中避免它的发生呢?还有,我们应该怎样防御来自外界的缓
3、冲区溢出的攻击呢?下面将向你介绍相关的应对策略。理解和阻止缓冲区溢出防止缓冲区溢出攻击的策略TT安全技术专题之“缓冲区溢出防范策略”Page3of18是什么导致网络应用中的缓冲区溢出和内存泄露?问:我们所说的在网络应用程序中的内存泄漏和缓冲区溢出是什么意思呢?你可以用一个例子说明如何检测它们吗?答:这两个问题一直困扰着网络应用程序。缓冲区溢出攻击(如CodeRed蠕虫病毒),会导致重要的数据泄露,危及系统的安全。不过,首先让我们来看看内存泄漏,因为这将帮助你理解缓冲区溢出。如果程序员为某种类型的变量动态分配了内存空间,而在程序结束之前又没
4、有释放出这部分空间,此时内存泄露就发生了。这将使系统可用的内存更少,而重复运行这样内存泄露的程序或函数,则最终会导致系统崩溃或拒绝服务(denialofservice)。下面是一个会导致内存泄露的简单的代码示例:intmain(intargc,char**argv){char*memoryA=newchar[10];memoryA[0]='A';printf("%cn",memoryA[0]);}该程序给数组memoryA分配了10个字符的存储空间,但该程序最后并没有显式释放这些空间。为了防止内存泄漏,当变量不再使用时,程序员应该总是释放所有
5、动态分配的空间。对于简单的应用程序,你可以检查你的代码,以确保每一个新的申请内存的操作都有一个对应的释放操作,或者是采用语言近似配对(language-equivalentpairing)的办法。而对于更复杂的项目,你需要运行可以检测内存错误的应用程序诊断工具,如Purify或LeakTracer。此外,还可以对你的应用程序进行压力测试(stress-test),并监视其内存的消耗情况。TT安全技术专题之“缓冲区溢出防范策略”Page4of18缓冲区溢出可以导致应用程序或系统的崩溃,甚至还会使黑客攻击系统,并启动未经认可的进程。当程序或进程试
6、图存储超过缓冲区设定大小的数据到缓冲区时,缓冲区溢出就发生了。例如,黑客故意给出一个比分配给它的内存缓冲区大的数据,以表(form)的形式将数据提交到网络应用程序。这种额外的数据可以覆盖邻近的内存,重写其中的任何有效的数据,往往是重写函数结束时的返回地址。通过编写一个新的返回地址,黑客可以欺骗系统去执行自己的代码。你应该知道,有些语言比其他语言更易产生缓冲区溢出和其他内存泄漏错误。C和C++没有提供内置的检测,因此不能确保写入到缓冲区内的数据是在该缓冲区的范围内。Windows程序员应该使用微软VisualC++.NET2003提供的strs
7、afe.lib和strsafe.h,从而使用那些能够安全处理字符串的函数库。然而,用Java编写的应用程序并没有真正受到缓冲区溢出和内存泄漏的威胁,因为Java是一种强类型(stronglytyped)语言。但是,请注意,当和其它语言编写的服务和库交互时,用Java和其他“安全”语言编写的应用程序仍然可能受缓冲区溢出影响。防止缓冲区溢出问题的最好办法是验证所有应用程序收到的输入数据。你甚至可以编写你自己的字符串复制函数,从而可以同时加入数据过滤检测的功能。(作者:MichaelCobb译者:Sean来源:TechTarget中国)TT安全技术
8、专题之“缓冲区溢出防范策略”Page5of18缓冲区溢出攻击是如何发生的用户提问:我不确信我完全理解缓冲区溢出。我知道在向目标机器插入代码时会导致严重的缓冲区管理缺
此文档下载收益归作者所有