今天我们要讲的是安全漏洞,关于安全漏洞大家一定非常熟悉,但是很多文章对于安全漏洞的描述都是深而不全,今天我们从软件的各个方面尽量全面的把各个软件漏洞做了一些总结和归纳,和其他文章比较可谓“全而不深”,总之这篇文章内容比较多,希望大家耐着性子看完,绝对值得你花上半小时时间得。网络信息系统不外乎由硬件和软件组成,关于硬件(也就是物理安全),我们在前面已经有过一些论述,这里就不再多废口舌了,而由于软件程序的复杂性和编程的多样性,在网络信息系统的软件中很容易有意或无意地留下一些不易被发现的安全漏洞,显然对于安全而言显得更加重要一些。因此我们在此介绍一些有代表性的软件方面的安全漏洞。 软件方面的安全漏洞,从应用层次上而言分为应用软件的安全漏洞,操作系统的安全漏洞,数据库的安全漏洞,通信协议的安全漏洞,网络服务和应用方面的安全漏洞,个人应用方面的安全漏洞等等,下面我们分别对各种层次的安全漏洞进行一些概括性的叙述。
1:陷门与防范
陷门可以理解成“后门”,就是在程序员进行开发时插入的一小段程序,目的是测试这个模块,或是为了连接将来的更改和升级程序,或者是为了将来发生故障后,为程序员提供方便等合法用途等等。总而言之,陷门就是一个程序模块的秘密入口,这个入口是未记入相关文档的(如用户手册)。通常在程序开发后程序员会将去掉这些陷门。但是由于各种原因,陷门也可能被保留下来。
陷门一旦被原来的程序员利用,或者被不怀好意的人发现,都将带来严重的安全后果。比如,可能利用这个“后门”在程序中建立隐蔽通道,植入一些隐蔽的病毒程序等,总之,如果你们家有了一个你不知道的后门,会发生什么事情你是应该可以想象的。更可怕的是如果你是位于局域网上的话,黑客更可以利用“后门”将你的主机作为攻击整个局域网的大本营。
下面介绍几个常见的陷门实例:
逻辑炸弹:在网络软件(比如程控交换机的软件中)可以预留隐蔽的对日期敏感的定时炸弹。在一般情况下,网络处于正常工作状态,一旦到了某个预定的日期,程序便自动跳到死循环程序,造成死机甚至网络瘫痪。
遥控旁路:某国向我国出口的一种传真机,其软件可以通过遥控将加密接口旁路,从而失去加密功能,造成信息泄露。
远程维护:某些通信设备(比如数字程控交换机)具有一种远程维护功能,即可以通过远程终端,由公开预留的接口进入系统完成维护检修功能;甚至可以实现国外厂家的维护人员在其本部的终端上对国内进口的设备进行远程维护。这种功能在带来明显的维护管理便利的同时,当然也带来了一种潜在的威胁。在特定情况下,也可以形成潜在的攻击。
非法通信:某些程控交换机具有单向监听功能,即由特许用户,利用自身的话机拨号,可以监听任意通话双方的话音而不会被发现。这本是一种合法的监听。但是,从技术上来说,这也可以实现隐蔽的非法通信。比如,攻击者可以利用主动呼叫,收方不用摘机,由随机数激活收方的专用设备并从约90秒的回铃音的时隙内将情报信息传至发方。整个通信过程隐蔽,没有计费话单,不易被发现。
贪婪程序:一般程序都有一定的执行时限,如果程序被有意或错误地更改为贪婪程序和循环程序,或被植入某些病毒(比如,蠕虫病毒),那么此程序将会长期占用机时,造成意外阻塞,使合法用户被排挤在外不能得到服务。
对付陷门的方法可以归纳为:
(1)加强程序开发阶段的安全控制,防止有意破坏并改善软件的可靠性。比如,采用先进的软件工程进行对等检查、模块结构、封装和信息隐藏、独立测试和程序正确性证明以及配置管理等。
(2)在程序的使用过程中实行科学的安全控制。比如,利用信息分割限制恶意程序和病毒的扩散;利用审计日志跟踪入侵者和事故状态,促进程序间信息的安全共享。
(3)制定规范的软件开发标准,加强管理,对相关人员的职责进行有效监督,改善软件的可用性和可维护性。 2: 操作系统的安全漏洞与防范
操作系统是硬件和软件应用程序之间接口的程序模块,它是整个网络信息系统的核心控制软件,系统的安全体现在整个操作系统之中。对一个设计上不够安全的操作系统,事后采用增加安全特性或打补丁的办法是一项很艰巨的任务,特别是对引进的国外设备,在没有详细技术资料的情况下,其工作更加复杂。
操作系统的主要功能包括:进程控制和调度、信息处理、存储器管理、文件管理、输入/输出管理、资源管理、时间管理等。操作系统的安全是深层次的安全,主要的安全功能包括:存储器保护(限定存储区和地址重定位,保护存储的信息)、文件保护(保护用户和系统文件,防止非授权用户访问)、访问控制、用户认证(识别请求访问的用户权限和身份)。
操作系统的安全漏洞主要有:
输入/输出(I/O)非法访问:在某些操作系统中,一旦I/O操作被检查通过之后,该操作系统就继续执行下去而不再检查,从而造成后续操作的非法访问。某些操作系统使用公共的系统缓冲区,任何用户都可以搜索这个缓冲区,如果此缓冲区没有严格的安全措施,那么其中的机密信息(用户的认证数据、身份识别号、口令等)就有可能被泄露。 访问控制的混乱:安全访问强调隔离和保护措施,但是资源共享则要求公开和开放。这是一对矛盾,如果在设计操作系统时没能够处理好这两者之间的关系,那么就可能会出现因为界限不清造成操作系统的安全问题。
不完全的中介:完全的中介必须检查每次访问请求以进行适当的审批。而某些操作系统省略了必要的安全保护。比如,仅检查一次访问或没有全面实施保护机制。
操作系统陷门: 某些操作系统为了安装其它公司的软件包而保留了一种特殊的管理程序功能。尽管此管理功能的调用需要以特权方式进行,但是并未受到严密的监控,缺乏必要的认证和访问权的限制,有可能被用于安全访问控制,从而形成操作系统陷门。
由于国内网络主机一般以UNIX为操作系统,所以下面对此作一专门介绍。
UNIX历经几次更新换代,其功能和安全性日趋完善。但即便如此,网络黑客仍可以利用一些鲜为人知的漏洞,攻入系统,进行形形色色的活动。
在安装UNIX时,有一些系统在缺省状态下,会自动建立一些帐户,例如guest等。由于这些帐户都有一个约定俗成的口令,因此若网络系统管理员忽视了它的存在,则任何人都可以大摇大摆的进入该主机。与此类似,还有一种系统缺省建立的帐户,如shutdown、sync。这种帐户一般是为了执行一个相关命令,所以并不设口令。其UID(用户身份证)多与系统管理员的相同,故与系统管理员具有同样的权限。一个网络黑客可以冒充利用这种帐户,来取得系统管理员的权限。而且从技术角度来讲,这并不困难。
在UNIX系统内,有些文件与目录对整个系统的安全运转具有举足轻重的作用,如:目录/etc、/usr、/bin、/mail、/usr/spool、/usr/etc等,文件/.*、/etc/*、/bin/*等。此外,还有两个与日志有关的文件:/etc/adm/sulog和/usr/adm/syslog。这些文件的受损,将给网络系统的安全与信息的保密带来严重威胁。 在UNIX环境下还存在着两种特殊的命令程序,即Suid和Guid。其主要特点是:执行Suid的帐户会在本程序终止前拥有与该程序的所有者相同的UID;与此类似,执行Guid的帐户会在本程序结束前拥有与该程序的所有者相同的GID。因为在UNIX系统中,检查用户权限的唯一根据就是帐户的UID与GID,所以这两种程序成为网络黑客的有利工具。黑客们曾经利用Suid与Guid制造了许多入侵事件,特别是针对超级用户的程序。 为了建立安全的操作系统,首先必须构造操作系统的安全模型(单级安全模型、多级安全模型、系统流模型等)和不同的实施方法。其次应该采用诸如隔离、核化(最小特权等)和环结构(开放设计和完全中介)等安全科学的操作系统设计方法。再者,还需要建立和完善操作系统的评估标准、评价方法和测试质量。
3: 数据库的安全漏洞与防范
数据库是从操作系统的文件系统基础上派生出来的用于大量数据的管理系统。数据库的全部数据都记录在存储媒体上,并由数据库管理系统(DBMS)统一管理。DBMS为用户及应用程序提供一种访问数据的方法,并且对数据库进行组织和管理,并对数据库进行维护和恢复。数据库系统的安全策略,部分由操作系统来完成,部分由强化DBMS自身安全措施来完成。数据库系统存放的数据往往比计算机系统本身的价值大得多,必须加以特别保护。
从操作系统的角度看,DBMS是一种应用程序而数据库是一种数据文件。为了防止数据库中的数据受到物理破坏而不能恢复原来的系统,应当对数据库系统采取定期备份所有文件的方法来保护系统的完整性。 DBMS是在操作系统的基础之上运行的应用程序,是为多个用户共享的应用软件。因此,不能允许它具有任何通向操作系统的可信途径。DBMS必须具有独立的用户身份鉴别机制,以便构成一种双重保护。有时还可以对使用数据库的时间甚至地点加以限制,甚至要求用户只能在指定时间指定终端上对数据库系统进行指定的操作。 有些数据库将原始数据以明文形式存储于数据库中,这是不够安全的。实际上,高明的入侵者可以从计算机系统的内存中导出所需的信息,或者采用某种方式打入系统,从系统的后备存储器上窃取数据或篡改数据。因此,必要时应该对存储数据进行加密保护。数据库的加密应该采用独特的加密方法和密钥管理方法,因为数据的生命周期一般较长,密钥的保存时间也相应较长。
4:TCP/IP协议的安全漏洞与防范 协议是两个或多个参与者为完成某种任务或功能而采取的一系列有序步骤。在网络信息系统中,协议使得不了解的双方能够相互配合并保证公平性。协议可以为通信者建立、维护和解除通讯联系,实现不同机型互连的共同约定。协议的基本特点是:预先建立(在使用前事先设计好)、相互约定(协议的所有参加者要约定按顺序执行的步骤)、无歧义(不应使参加者由于误解而不能执行其步骤)、完备的