查找程序漏洞 阻止缓冲区溢出攻击

日期: 2010-02-07 作者:SearchSecurity.com Staff翻译:Sean 来源:TechTarget中国 英文

令人大伤脑筋且代价高昂的数据安全缺口,以及黑客通过攻击Web应用从而控制公司主机等行为造成的缓冲区溢出漏洞会为企业带来严重的损失。   本文通过深入研究缓冲区溢出的工作机制揭露其如何展开攻击,并介绍了阻止缓冲区溢出攻击企业的Web应用程序的方式。   什么是缓冲区溢出,它又是如何工作的?   缓冲区是数据存储的临时区域。当程序或者系统进程存放的数据大于缓冲区最初分配的空间时,多余的数据就会溢出。

顾名思义,缓冲区溢出使数据泄露到其它缓存区域,导致这些缓存区域中的数据被破坏或者被覆盖。   在缓冲区溢出攻击中,额外数据有时会包含黑客或者恶意用户设置的、有特定意图的指令,比如,这些数据可以损坏文件、……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

令人大伤脑筋且代价高昂的数据安全缺口,以及黑客通过攻击Web应用从而控制公司主机等行为造成的缓冲区溢出漏洞会为企业带来严重的损失。

  本文通过深入研究缓冲区溢出的工作机制揭露其如何展开攻击,并介绍了阻止缓冲区溢出攻击企业的Web应用程序的方式。

  什么是缓冲区溢出,它又是如何工作的?

  缓冲区是数据存储的临时区域。当程序或者系统进程存放的数据大于缓冲区最初分配的空间时,多余的数据就会溢出。顾名思义,缓冲区溢出使数据泄露到其它缓存区域,导致这些缓存区域中的数据被破坏或者被覆盖。

  在缓冲区溢出攻击中,额外数据有时会包含黑客或者恶意用户设置的、有特定意图的指令,比如,这些数据可以损坏文件、更改数据或泄露隐私。

  黑客通常会通过缓冲区溢出来利用程序攻击那些“等待用户输入”的程序。缓冲区溢出一般有两种类型:基于栈和基于堆。基于堆的溢出通过需要大量消耗为程序预留的内存空间,从而达到攻击应用程序的目的,然而这种方式一般很难执行,所以在二者中较少使用。黑客较常使用基于栈的溢出攻击,即抢占应用程序用来存储用户输入数据的栈空间。

  栈空间只能保存有限的数据,如果输入字符串的长度超过空间的预留容量,就会导致溢出,产生安全漏洞。老道的恶意黑客会利用自己编写的特定指令来寻找这些系统的缺陷,进而发起溢出攻击。一旦恶意指令引起溢出,黑客会将程序的返回地址指向自己编写的指令。缓冲区溢出会引起程序的部分瘫痪,当程序试图通过返回地址进行恢复时,就被重定向到了攻击者所设置的恶意代码区。

  当缓冲区溢出攻击运行新的返回地址值所指向的指令时,程序认为其仍然在运行。这意味着所打开的命令提示符窗口运行在与目标应用程序相同的可执行权限下,从而允许黑客能够完全控制操作系统。

  如何防止缓冲区溢出攻击应用程序

  既然你已经知道了缓冲区溢出攻击的原理,那么你可以更好的防止其透透到你的系统中,并控制你的应用程序。这里有一些增强系统防御、预防缓冲区溢出的方法:

1.避免使用库文件:编程语言中常用的库文件有内在的安全缺陷,这是黑客在应用程序攻击中的目标之一。 黑客在库文件中发现的任何缺陷也存在于使用该库的所有应用程序中,这就为黑客的潜在攻击提供了更明显的目标。

2.过滤用户输入:过滤掉危险性的HTML代码和可能引起数据库故障的字符。例如,在ASP代码中,单引号、引号和‘&’都是保留符号,它们不能包含在用户输入中,否则会导致应用程序崩溃。所以,你应该过滤并且替换掉这些符号,以避免混乱和出现其他问题。

3.测试应用程序:确保投入使用之前,所有的应用程序都得到了测试;试着攻击每一个应用程序以确保编码的可靠性。如果应用程序被攻破,很明显其中有黑客可以利用的问题,需要你对其进行修正。

翻译

Sean
Sean

相关推荐