网络技术是从1990年代中期发展起来的新技术,它把互联网上分散的资源融为有机整体,实现资源的全面共享和有机协作,使人们能够透明地使用资源的整体能力并按需获取信息。资源包括高性能计算机、存储资源、数据资源、信息资源、知识资源、专家资源、大型数据库、网络、传感器等。 当前的互联网只限于信息共享,网络则被认为是互联网发展的第三阶段。
写本文的目地是为了总结一些东西,解决在试图构造一个漏洞数据库的过程中碰到的主要问题,也就是如何对计算机
网络漏洞进行分类的问题。文中的一些想法并不成熟,有些甚至连自己也不满意,权作抛砖引玉,以期与在这方面有深入研究的同仁交流,共同提高完善。
一个计算机
网络安全漏洞有它多方面的属性,我认为主要可以用以下几个方面来概括:漏洞可能造成的直接威胁,漏洞的成因,漏洞的严重性,漏洞被利用的方式。以下的讨论将回绕这几个方面对漏洞细分其类。
A.按漏洞可能对系统造成的直接威胁
可以大致分成以下几类,事实上一个系统漏洞对安全造成的威胁远不限于它的直接可能性,如果攻击者获得了对系统的一般用户访问权限,他就极有可能再通过利用本地漏洞把自己升级为管理员权限:
一.远程管理员权限
攻击者无须一个账号登录到本地直接获得远程系统的管理员权限,通常通过攻击以root身份执行的有缺陷的系统守护进程来完成。漏洞的绝大部分来源于缓冲区溢出,少部分来自守护进程本身的逻辑缺陷。
典型漏洞:
IMAP4rev1 v10.190版的守护进程imapd的AUTHENTICATE命令存在读入参数时未做长度检查,构造一个精心设计的AUTH命令串,可以溢出imapd的缓冲区,执行指定的命令,由于imapd以root身份运行,从而直接获得机器的root权限。
WindowsNT IIS 4.0的ISAPI DLL对输入的URL未做适当的边界检查,如果构造一个超长的URL,可以溢出IIS (inetinfo.exe)的缓冲区,执行我们指定的代码。由于inetinfo.exe是以local system身份启动,溢出后可以直接得到管理员权限。
早期AIX 3.2 rlogind代码存在认证逻辑缺陷,用rlogin victim.com -l -froot,可以直接以root身份登录到系统而无须提供口令。
二.本地管理员权限
攻击者在已有一个本地账号能够登录到系统的情况下,通过攻击本地某些有缺陷的suid程序,竞争条件等手段,得到系统的管理员权限。
典型漏洞:
RedHat Linux的restore是个suid程序,它的执行依靠一个中RSH的环境变量,通过设置环境变量PATH,可以使RSH变量中的可执行程序以root身份运行,从而获得系统的root权限。
Solaris 7的Xsun程序有suid位,它对输入参数未做有效的边界检查,可以很容易地溢出它的缓冲区,以root身份运行我们指定的代码,从而获得管理员权限。
在
windows2000下,攻击者就有机会让
网络DDE(一种在不同的
Windows机器上的应用程序之间动态共享数据的技术)代理在本地系统用户的安全上下文中执行其指定的代码,从而提升权限并完全控制本地机器。
三.普通用户访问权限
攻击者利用服务器的漏洞,取得系统的普通用户存取权限,对UNIX类系统通常是shell访问权限,对
Windows系统通常是cmd.exe的访问权限,能够以一般用户的身份执行程序,存取文件。攻击者通常攻击以非root身份运行的守护进程,有缺陷的cgi程序等手段获得这种访问权限。
典型漏洞:
UBB是个广泛运行于各种UNIX和
Windows系统的论坛程序,用PERL实现,它的5.19以下版本存在输入验证问题,通过提交精心构造的表单内容,可以使UBB去执行shell命令,因为一般的
web服务器以nobody身份运行,因此可以得到一个nobody shell。比如提交这样的数据:topic='012345.ubb
关键词:计算机网络系统安全漏洞分类研究