计算机系统漏洞也被称为系统安全缺陷,这些安全缺陷会被技术高低不等的入侵者所利用,从而达到其控制目标主机或造成一些更具破坏性的影响的目的。
漏洞是指应用软件或操作系统软件在逻辑设计上的缺陷或在编写时产生的错误,某个程序(包括操作系统)在设计时未考虑周全,则这个缺陷或错误将可能被不法分子或黑客利用,通过植入木马、病毒等方式来攻击或控制整个电脑,从而窃取电脑中的重要资料和信息,甚至破坏系统。
系统漏洞又称安全缺陷,可对用户造成不良后果。若漏洞被恶意用户利用,会造成信息泄漏;黑客攻击网站即利用网络服务器操作系统的漏洞,对用户操作造成不便,如不明原因的死机和丢失文件等。
系统漏洞的产生不是安装不当的结果,也不是使用后的结果,归结起来,其产生的原因主要有以下几点。
(1)人为因素:编程人员在编写程序过程中故意在程序代码的隐蔽位置保留了后门。
(2)硬件因素:因为硬件的原因,编程人员无法弥补硬件的漏洞,从而使硬件问题通过软件表现出来。
(3)客观因素:受编程人员的能力、经验和当时的安全技术及加密方法发展水平所限,在程序中难免存在不足之处,而这些不足恰恰会导致系统漏洞的产生。
这里以Windows XP系统为例,其常见的系统漏洞如下。
该漏洞允许攻击者执行任意指令。Windows XP默认启动的UPNP服务存在严重安全漏洞。UPNP(Universal Plug and Play)体系面向无线设备、PC机和智能应用,提供普遍的对等网络连接,在家用信息设备、办公用网络设备间提供TCP/IP连接和Web访问功能,该服务可用于检测和集成UPNP硬件。
UPNP协议存在安全漏洞,使攻击者可非法获取任何Windows XP的系统级访问,进行攻击,还可通过控制多台XP机器发起分布式的攻击。
Windows XP的升级程序不仅会删除IE的补丁文件,还会导致微软的升级服务器无法正确识别IE是否存在缺陷,即Windows XP Pro系统存在两种潜在威胁:一是某些网页或邮件的HTML脚本可自动调用Windows的程序;另一种是可通过IE漏洞窥探用户的计算机文件。
Windows XP的帮助和支持中心存在漏洞,该漏洞使攻击者可跳过特殊的网页(在打开该网页时调用错误的函数,并将存在的文件或文件夹的名字作为参数传送)来使上传文件或文件夹的操作失败,随后该网页可在网站上公布,以攻击访问该网站的用户或被作为邮件传播来攻击。该漏洞除使攻击者可删除文件外,不会赋予其其他权利,攻击者既无法获取系统管理员的权限,也无法读取或修改文件。
在安装有Plus包的Windows XP系统中,“压缩文件夹”功能允许将Zip文件作为普通文件夹处理。“压缩文件夹”功能存在以下两个漏洞。
(1)在解压缩Zip文件时会有未经检查的缓冲存在于程序中以存放被解压文件,因此很可能导致浏览器崩溃或攻击者的代码被运行。
(2)解压缩功能在非用户指定目录中放置文件,可使攻击者在用户系统的已知位置中放置文件。
Windows XP支持点对点的协议(PPTP)作为远程访问服务实现的虚拟专用网技术。由于在其控制用于建立、维护和拆开PPTP连接的代码段中存在未经检查的缓存,导致Windows XP的实现中存在漏洞。通过向一台存在该漏洞的服务器发送不正确的PPTP控制数据,攻击者可损坏核心内存并导致系统失效,中断所有系统中正在运行的进程。
该漏洞可攻击任何一台提供PPTP服务的服务器,对于PPTP客户端的工作站,攻击者只需激活PPTP会话即可进行攻击。对任何遭到攻击的系统,可通过重启来恢复正常操作。
Windows Media Player漏洞主要产生两个问题:一是信息泄漏漏洞,它给攻击者提供了一种可在用户系统上运行代码的方法,微软对其严重级别的定义为“严重”;二是脚本执行漏洞,当用户选择播放一个特殊的媒体文件,接着又浏览一个特殊设计的网页后,攻击者就可利用该漏洞运行脚本。
设置热键后,由于Windows XP的自注销功能,可使系统“假注销”,其他用户即可通过热键调用程序。热键功能是系统提供的服务,当用户离开计算机后,该计算机即处于未保护情况,此时Windows XP会自动实施“自注销”,虽然无法进入桌面,但由于热键服务还未停止,仍可使用热键启动应用程序。
Windows XP快速账号切换功能存在问题,可造成账号锁定,使所有非管理员账号均无法登录。
要想充分了解什么是缓冲区溢出,首先需要了解什么是缓冲区。缓冲区是程序运行时自动向计算机内存申请的一个连续的块,用于保存程序给定类型的数据。但是,一般为了节省内存的使用,操作系统会利用一个可动态分配变量的程序在程序运行时才决定给其分配多少内存。
由于缓冲区的分配是由系统的一个动态分配变量程序决定的,那么,如果程序在动态分配缓冲区放入太多的数据会出现什么现象呢?很显然,会溢出,这就像往杯子里注水一样,一旦水超过了杯子的容积,就会溢出而流到外面,对于计算机来说,这就造成了缓冲区的溢出,这些溢出的数据就会“流到”其他的程序或系统缓冲区中,覆盖其他程序或系统的合法数据,进而被其他程序或系统所执行。
这个溢出现象若被入侵者发现了,他们就会向程序的缓冲区写入超过其长度的数据,从而破坏程序的堆栈结构,使程序转向执行他们所设计的入侵程序,以达到其攻击的目的,这就是缓冲区溢出攻击。