因而这些都可以认为是系统中存在的安全漏洞。漏洞会影响到很大范围的软、硬件设备,包括操作系统本身及其支撑软件,网绍客户和服务器软件,网络路由器和安全防火墙等。换言之,在这些不同的软、硬件设备中都可能存在不同的安全漏洞问题。在不同种类的软、硬件设备,同种设备的不同版本之间,由不同设备构成舶不同系统之间,以及同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。漏洞问题是与时间紧密相关的。一个系统从发布的那一天起,随着用户的深入使用,系统中存在的漏洞会不断地暴露出来,这些早先被发现的漏洞也会不断地被系统供应商发布的补丁软件修补.或在以后发布的新版系统中得以纠正。而在新版系统纠正了旧版系统中具有的漏洞的同时,也会引入一些新的漏洞和错误,因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现,漏洞问题也会长期存在。脱离具体的时间和具体的系统环境来讨论漏洞问题是毫无意义的。只能针对目标系统的操作系统版本、其上运行的软件版本以及服务运行设置等实际环境来具体谈论其中可能存在的漏洞及其可行的解决办法。同时应该看到,对滴洞问题的研究必须要跟踪当前最新的计算机系统及其安全问题的最新发展动态。这一点与对计算机病毒发展问题的研究相似。往往入侵者只要找到复杂的计算机网络中的一个“裂缝”,就能轻而易举地闯入系统。所以,了解这些“裂缝”可能在哪里,对于修补它们至关重要。通常,“裂缝”主要表现在软件编写存在bug、系统配置不当、密码失窃、明文通信信息被监听以及初始设计存在缺陷等方面。无论是服务器程序、客户端软件,还是操作系统,只要是用代码编写的程序,都会存在不同程度的bug。bug主要分为以下几类:(1)缓冲区溢出缓冲区溢出指入侵者在程序的有关输入项目中输入了超过规定长度的字符串·超过的部分通常就是入侵者想要执行攻击代码,而程序编写者又没有进行输入长度的检查,最终导致多出的攻击代码占据了输入缓冲区后的内存而被执行,不要认为为登录用户名留出200个字符就足够了·而不再做长度检查,入侵者会想尽一切办法尝试攻击的途径。(2)意料外的联合使用问题一个程序经常由功能不同的多层代码组成·甚至会涉及最底层的操作系统级别者通常会利用这个特点为不同的层输入不同的内容,以达到窃取信息的目的。例如由Perl编写的程序,入侵者可以在程序的输入项目中输入类似“mailetc/passwd”串,从而使Perl让操作系统调用邮件程序,并发送出重要的密码文件给入侵者。(3)不对输入内容进行预期检查。入侵,对于的字符有些编程人员怕麻烦,对输入内容不进行预期的匹配检查,使入侵者输送炸弹的工作轻松、简单。(4)Race-condition(多任务竞争环境)问题多任务多线程的程序越来越多.往提高运行效率的同时,也要注意Race-conditions问题。例如.程序A和程序B部按照读、改、写的顺序操作一个文件,当A进行完读和改的工作时,B启动并立即执行完读、写的全部工作,这时A继续执行写工作.结果A的操作没有了表现!入侵者就可能利用这个处理顺序上的漏洞改写某些重要文件,从而达到闯入系统的目的。所以,编程人员要注意文件操作的顺序以及锁定等问题.(I)默认配置不足许多系统安装后都有默认的安全配置信息·通常披称为易用。但遗憾的是’易用还意味着易被进入。所以,一定要对默认配置进行扬弃的工作。