对错误,漏洞和exploits的说明

作者:Mark Vogels 
翻译:黯魂[S.S.T] 

在这篇文档中,我将会试着为你提供一个对于错误,和由于那些错误而产生的漏洞以及它们的exploits的基本认识。那决不意味着能让你完全理解exploits和漏洞,但是能帮助你学会认识可能的漏洞以及怎样处理它们。 

一般而言有3种不同类型的错误会可能危及计算机系统和网络的安全。 
#编程错误 
#配置错误 
#设计错误 

错误可以被看成是失误,尽管它们并非都是由事故导致的。软件/设备的最初创建者可能就存在错误,用最好的想法却创建了错误,并且没有意识到它可能就是一个潜在的威胁。这听上去可能有点糊涂,但是稍后在文章中都将会被澄清。为了深入探讨关于错误的细节,我们需要创建一个对不同类型的错误的定义以至于我们能更容易认识它们。 

不同错误类型的定义 

编程错误: 

编程错误通常是由程序编写者造成的。最常见的可利用编程错误是缓冲区溢出。把缓冲区溢出想象成一个空的杯子:程序的使用者将要倒咖啡到杯子里,但是程序编写者事先并不知道使用者将会倒多少咖啡在里面。所以程序编写者必须在使用者把咖啡倒进杯子之前检查和测试,以阻止咖啡从杯子里溢出。有时候检查输入大小并不容易,或者由于时间紧迫,程序员没有时间写足够广泛的错误检测函数。那么结果就是:可能的缓冲区溢出和其他的编程错误被创建。 

另一个编程错误的例子是:当用户做一些预料之外的事,比如加载一个错误类型的文件到程序中时,程序会崩溃。当然不是所有的编程错误都需要用户输入才能做一些预料之外的事,像使程序崩溃。一个程序也会取决于总是在一个明确位置的特殊文件。如果那个文件被移动,并且程序员没有预料到,他就不可能在程序尝试打开它之前检测文件是否还是在那个位置。假如程序在打开那个文件后尝试用它运行,这就会导致不可预见的行为。 

这些类型的错误发生得相当频繁,并且大多时候厂商都会分发补丁包来解决由消费者或者他们自己发现的被报告的错误。 

配置错误: 

这样想象一个配置错误:如果你是一个网络管理员并且你需要运行一个防火墙来保护你的网络。习惯上,你会允许任何进出的流量,除专门拒绝的流量种类之外。 

一个简单的例子是防火墙仅仅阻塞了80端口,然而它将允许来自因特网的任何人连接到防火墙的配置页面重新配置它。其余的端口都是开着的。这明显就是一个配置错误,任何人都能通过使用另一个端口号来绕过防火墙。 

幸运的是大多数厂商都知道这个错误,因此他们都正确的做了相反的处理:任何流量都被阻塞除非专门允许的。所以自从端口被关闭以后,网络管理员都不再需要担心发现的新问题,通过一个不使用的端口能访问他的网络。(这里我只使用端口来举例子,不过这在相同的端口上也能应用不同类型的流量。) 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/1438.html