发布日期:2003-07-30
更新日期:2003-08-01
受影响系统:
SGI IRIX 6.5.21
不受影响系统:
SGI IRIX 6.5.22
描述:
--------------------------------------------------------------------------------
CVE(CAN) ID: CVE CAN-2003-0575
IRIX是一款由SGI公司开发和维护的商业性质Unix操作系统。
IRIX包含的nsd程序不正确处理RPC AUTH_UNIX UDP包,远程攻击者可以利用这个漏洞对nsd守护进程进行缓冲区溢出攻击,可能以root用户权限在系统上执行任意指令。
'/usr/etc/nsd'程序默认在所有IRIX操作系统中安装和启动,自6.5.X版本之后,nsd服务只监听本地接口。它主要负责针对不同名字服务(如DNS、NIS、本地配置)提供一致的名字空间和缓存机制。他使用基于NFS的虚拟问系统存储各种信息数据文件。
为了允许用户应用程序与nsd服务通信,它通过NFS协议实现,通过动态分配(在启动阶段)UDP端口(一般1024及之上的版本)访问接口。LSD发现在RPC AUTH_UNIX函数实现存在基于堆的缓冲区溢出错误。
漏洞可以通过发送特殊构建的RPC AUTH_UNIX udp包给nsd服务触发。接收到这个包后,nsd调用nfs_dispath()函数来处理NSF协议请求,并内部调用nsd_cred_new()函数分配堆内存用来存储接收到的授权数据。然后从nsd_cred_new()函数返回后,会执行一个循环拷贝,这个循环简单的拷贝c_gid表中的元素到由nsd_cred_new()函数分配的nsd_cred结构中的正确偏移里。同时循环计数器(c_gids),也从接收到的包中直接获取并拷贝数据,这样,用户就可以完全控制拷贝的数据长度,通过构建恶意数据包就可以导致nsd_cred结构被覆盖。精心构建提交请求可能以root用户权限在系统上执行任意指令。
<*来源:Last Stage of Delirium (contact@lsd-pl.net)
链接
http://marc.theaimsgroup.com/?l=bugtraq&m=105958240709302&w=2
ftp://patches.sgi.com/support/free/security/advisories/20030704-01-P
*>
测试方法:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
下面是bptrace工具的日志信息:
breakpoint trace [version 1.4]
copyright by LAST STAGE OF DELIRIUM 1998 Poland
found 168 symbols
168 breakpoints enabled, 0 disabled, 0 aliases