首页 -> 安全研究
安全研究
绿盟月刊
绿盟安全月刊->第31期->最新漏洞
日期:2002-04-18
更新日期: 2002-5-8
受影响的系统:
Sun rpc.rwalld
- Sun Solaris 8.0 SPARC
- Sun Solaris 8.0 x86
- Sun Solaris 7.0 x86
- Sun Solaris 7.0 SPARC
- Sun Solaris 2.6 x86
- Sun Solaris 2.6 SPARC
- Sun Solaris 2.5.1 x86
- Sun Solaris 2.5.1 SPARC
描述:
--------------------------------------------------------------------------
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
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://sunsolve.sun.com/security
版权所有,未经许可,不得转载