【TechTarget中国原创】令人大伤脑筋且代价高昂的数据安全缺口,以及黑客通过攻击Web应用从而控制公司主机等行为造成的缓冲区溢出漏洞会为企业带来严重的损失。
那么什么是缓冲区溢出,它又是如何工作的?如何防范缓冲区溢出攻击应用程序?本文通过深入研究缓冲区溢出的工作机制揭露其如何展开攻击,并介绍了阻止缓冲区溢出攻击企业的Web应用程序的方式……
【TechTarget中国原创】令人大伤脑筋且代价高昂的数据安全缺口,以及黑客通过攻击Web应用从而控制公司主机等行为造成的缓冲区溢出漏洞会为企业带来严重的损失。
本文通过深入研究缓冲区溢出的工作机制揭露其如何展开攻击,并介绍了阻止缓冲区溢出攻击企业的Web应用程序的方式。
什么是缓冲区溢出,它又是如何工作的?
缓冲区是数据存储的临时区域。当程序或者系统进程存放的数据大于缓冲区最初分配的空间时,多余的数据就会溢出。顾名思义,缓冲区溢出使数据泄露到其它缓存区域,导致这些缓存区域中的数据被破坏或者被覆盖。
在缓冲区溢出攻击中,额外数据有时会包含黑客或者恶意用户设置的、有特定意图的指令,比如,这些数据可以损坏文件、更改数据或泄露隐私。
黑客通常会通过缓冲区溢出来利用程序攻击那些“等待用户输入”的程序。缓冲区溢出一般有两种类型:基于栈和基于堆。基于堆的溢出通过需要大量消耗为程序预留的内存空间,从而达到攻击应用程序的目的,然而这种方式一般很难执行,所以在二者中较少使用。黑客较常使用基于栈的溢出攻击,即抢占应用程序用来存储用户输入数据的栈空间。
栈空间只能保存有限的数据,如果输入字符串的长度超过空间的预留容量,就会导致溢出,产生安全漏洞。老道的恶意黑客会利用自己编写的特定指令来寻找这些系统的缺陷,进而发起溢出攻击。一旦恶意指令引起溢出,黑客会将程序的返回地址指向自己编写的指令。缓冲区溢出会引起程序的部分瘫痪,当程序试图通过返回地址进行恢复时,就被重定向到了攻击者所设置的恶意代码区。
当缓冲区溢出攻击运行新的返回地址值所指向的指令时,程序认为其仍然在运行。这意味着所打开的命令提示符窗口运行在与目标应用程序相同的可执行权限下,从而允许黑客能够xx控制操作系统。
如何防止缓冲区溢出攻击应用程序
既然你已经知道了缓冲区溢出攻击的原理,那么你可以更好的防止其透透到你的系统中,并控制你的应用程序。这里有一些增强系统防御、预防缓冲区溢出的方法:
1.避免使用库文件:编程语言中常用的库文件有内在的安全缺陷,这是黑客在应用程序攻击中的目标之一。 黑客在库文件中发现的任何缺陷也存在于使用该库的所有应用程序中,这就为黑客的潜在攻击提供了更明显的目标。
2.过滤用户输入:过滤掉危险性的HTML代码和可能引起数据库故障的字符。例如,在ASP代码中,单引号、引号和‘&’都是保留符号,它们不能包含在用户输入中,否则会导致应用程序崩溃。所以,你应该过滤并且替换掉这些符号,以避免混乱和出现其他问题。
3.测试应用程序:确保投入使用之前,所有的应用程序都得到了测试;试着攻击每一个应用程序以确保编码的可靠性。如果应用程序被攻破,很明显其中有黑客可以利用的问题,需要你对其进行修正。