首页 -> 安全研究

安全研究

安全漏洞
Sun Solaris cachefsd远程堆缓冲区溢出漏洞

发布日期:2002-05-05
更新日期:2002-05-08

受影响系统:
Sun Solaris rpc.cachefsd
    - Sun Solaris 8.0 x86
    - Sun Solaris 7.0
    - Sun Solaris 7.0 x86
    - Sun Solaris 2.6
    - Sun Solaris 2.6 x86
    - Sun Solaris 2.5.1
    - Sun Solaris 2.5.1 x86
描述:
BUGTRAQ  ID: 4674
CVE(CAN) ID: CVE-2002-0033

Sun Solaris 2.5.1、2.6、7和8 缺省自带和安装了cachefsd程序,它用来对通过NFS mount的远程文件系统的操作请求进行缓存。在Solaris系统下,cachefsd服务以RPC服务形式被安装,号码为100235。

Solaris cachefsd程序中存在一个可远程利用的堆缓冲区溢出漏洞。远程或本地攻击者可以向cachefsd程序发送一个畸形RPC请求来获取root权限。

cachefsd的第五个RCP服务函数:cachefsd_fs_mounted_1_svc()需要客户端提供两个字符串参数,一个是cache dir(这个表示要mount的目录名),一个是cache name(cache名)。cachefsd_fs_mounted_1_svc()会调用subr_add_mount()来增加远程mount点,subr_add_mount()又调用cfsd_fscache_create()函数来将这两个参数保存在一个fscache结构中(这个结构由函数cfsd_calloc()动态分配),然而,在保存参数时程序没有进行边界检查,而是直接调用strcpy()函数进行拷贝操作。如果攻击者提供超长的参数,就可能发生堆溢出,动态内存边界处的内存分配管理结构就会被覆盖,攻击者可能改变程序流程执行任意代码。

<*来源:LSD (contact@lsd-pl.net
  
  链接:http://archives.neohapsis.com/archives/bugtraq/2002-05/0026.html
        http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F44309&zone_32=category%3Asecurity
        http://www.cert.org/advisories/CA-2002-11.html
        http://www.auscert.org.au/Information/Advisories/advisory/AA-2002.01.txt
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 根据Sun提供的信息,禁止cachefsd服务只会对使用AutoClient的系统产生一些影响,而且只会对中断连接模式产生影响。它不会影响正常的mount和umount操作,只是在执行"mount -F cachefs..."命令时会报告"mount -F cachefs: cachefsd is not running"。

  因此我们我们建议您在还没有安装补丁之前暂时关闭cachefsd服务。

  具体方法是:

  1. 转变成root用户
   $ su -
   #

  2. 关闭cachefsd服务

     使用您熟悉的编辑器打开/etc/inetd.conf文件,找到如下行:
     100235/1 tli rpc/tcp wait root /usr/lib/fs/cachefs/cachefsd  cachefsd

     在该行的开始处增加"#"号来将其注释:
     #100235/1 tli rpc/tcp wait root /usr/lib/fs/cachefs/cachefsd  cachefsd
     保存修改,退出编辑器。

  3. 禁止cachefsd的执行权限(可选)
     # chmod 000 /usr/lib/fs/cachefs/cachefsd

  4. 重新启动inetd

     # ps -ef|grep inetd
       root   167     1  0   Oct 07 ?        0:07 /usr/sbin/inetd -s -t
     # kill -HUP 167 (上面的例子中,167是inetd的pid)

     如果已经有cachefsd进程在运行,最好将其杀掉。
     # ps -ef|grep cachefsd
     # kill <cachefsd进程>

     在Solaris 7或者8下,可以使用pkill命令来完成上面的操作:
     $ pkill -HUP inetd
     $ pkill cachefsd

厂商补丁:

Sun
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://sunsolve.sun.com/security

浏览次数:3103
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障