首页 -> 安全研究
安全研究
安全漏洞
Solaris rpc.rwalld远程格式串溢出漏洞
发布日期:2002-04-30
更新日期:2002-05-08
受影响系统:
Sun rpc.rwalld描述:
- Sun Solaris 8.0 x86
- Sun Solaris 8.0 SPARC
- Sun Solaris 7.0 x86
- Sun Solaris 7.0
- Sun Solaris 7.0 SPARC
- Sun Solaris 2.6 x86
- Sun Solaris 2.6 SPARC
- Sun Solaris 2.6
- Sun Solaris 2.5.1 SPARC
- Sun Solaris 2.5.1 x86
- Sun Solaris 2.5.1
BUGTRAQ ID: 4639
CVE(CAN) ID: CVE-2002-0573
rwalld守护程序(rpc.rwalld)是一个处理网络wall请求的服务器。在接到rwall请求时,它调用本地的wall向一个时间共享系统中的所有终端发送信息。
它在处理rwall客户端发来的信息时存在一个格式串漏洞,可允许本地或者远程攻击者以rwall守护程序的权限(缺省是root权限)执行任意代码。
问题出在rwall_subr.c中的一段信息处理代码:
/*
* Make sure the wall programs exists, is executeable, and runs
*/
if (rval == -1 || (wall.st_mode & S_IXUSR) == 0 ||
(fp = popen(WALL_PROG, "w")) == NULL) {
syslog(LOG_NOTICE,
"rwall message received but could not execute %s",
WALL_PROG);
syslog(LOG_NOTICE, msg);
如果popen(WALL_PROG, "w")调用出错,程序会调用syslog()报告出错信息,由于错误的将客户端发来的信息(msg)作为格式串进行处理,客户端就可能利用这个漏洞重写内存内容,改变程序执行流程,并可能执行任意代码。
攻击者利用这个漏洞需要能够使得popen调用失败,结合一些其他的攻击手法,比如设法删除rwalld或改变rwalld的属性和内容、耗尽系统进程或者文件描述符表等等。远程利用这个漏洞比较困难,但还是可能的。
<*来源:GOBBLES (gobbles@hushmail.com)
链接:http://archives.neohapsis.com/archives/bugtraq/2002-04/0418.html
http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=fsalert%2F44502&zone_32=category%3Asecurity
http://www.cert.org/advisories/CA-2002-10.html
*>
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* rwalld服务不是必需的RPC服务,关闭它对于本地系统不会有任何不良影响,因此我们建议您关闭rwalld服务。
具体方法是:
1. 转变成root用户
$ su -
#
2. 关闭rpc.rwalld服务
使用您熟悉的编辑器打开/etc/inetd.conf文件,找到如下行:
walld/1 tli rpc/datagram_v wait root /usr/lib/netsvc/rwall/rpc.rwalld rpc.rwalld
在该行的开始处增加"#"号来将其注释:
#walld/1 tli rpc/datagram_v wait root /usr/lib/netsvc/rwall/rpc.rwalld rpc.rwalld
保存修改,退出编辑器。
3. 禁止rpc.rwalld的执行权限(可选)
# chmod 000 /usr/lib/netsvc/rwall/rpc.rwalld
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)
厂商补丁:
Sun
---
目前厂商已经发布了升级补丁以修复这个安全问题:
SPARC:
Solaris 2.5.1 112891-01
Solaris 2.6 112893-01
Solaris 7 112899-01
Solaris 8 112846-01
Solaris 9 112875-01
Intel:
Solaris 2.5.1 112892-01
Solaris 2.6 112894-01
Solaris 7 112900-01
Solaris 8 112847-01
您可以使用下列链接来下载相应补丁:
http://sunsolve.sun.com/pub-cgi/patchDownload.pl?target=<补丁ID>&method=h
例如,对于代号为111596-02的补丁,您可以使用下列链接:
http://sunsolve.sun.com/pub-cgi/patchDownload.pl?target=111596&method=h
补丁安装方法:
1. 首先用unzip或者uncompress命令将补丁包解压缩
2. 然后使用patchadd 命令安装补丁,例如:
# patchadd /var/spool/patch/104945-02
假设要安装的补丁号是104945-02, 解压之后的目录在:"/var/spool/patch/104945-02"
浏览次数:3616
严重程度:0(网友投票)
绿盟科技给您安全的保障