首页 -> 安全研究

安全研究

安全公告
绿盟科技安全公告(SA2002-01)

NSFOCUS安全小组(security@nsfocus.com)
http://www.nsfocus.com

Solaris Xsun "-co"参数缓冲区溢出漏洞

发布日期:2002-04-02

CVE ID:CAN-2002-0158

受影响的软件及系统:
====================
- Sun Solaris 2.6 (SPARC/x86)
- Sun Solaris 7 (SPARC/x86)
- Sun Solaris 8 (SPARC/x86)

综述:
======
NSFOCUS安全小组发现Solaris系统所带的Xsun在处理一个命令行参数"-co"时存在缓冲区溢出漏洞,本地攻击者可能以root用户或者root组权限执行任意代码。

分析:
======
Xsun是Solaris平台上的Xwindow 服务器(for X11)。它被安装在/usr/openwin/bin/下。在SPARC平台下,它被设置了setgid root属性,在x86平台下,它被设置了setuid root属性。

Xsun支持一个命令行参数:“-co”,用来指定颜色数据库文件。由于没有对用户输入的文件名长度进行检查,攻击者可能引发一个堆溢出。小心地构造溢出数据,攻击者可以以root用户或者权限执行任意代码。

如果攻击者为“-co”参数提供一个超长的参数(例如,超过6000字节长),就可能溢出一个动态分配的缓冲区,通过覆盖相邻的动态内存块边界数据结构,就可能利用malloc()/free()实现的一些特性来重写任意内存地址,例如保存的返回地址、函数指针等等。

在SPARC平台下,攻击者可能获取root组权限。在x86平台下,攻击者可能获取root用户权限。

测试方法:
==========
[root@ /tmp]> uname -a
SunOS sun8 5.8 Generic sun4u sparc SUNW,Ultra-5_10
[root@ /tmp]> truss /usr/openwin/bin/Xsun :1 -co `perl -e 'print "A"x6000'`
.....
mmap(0x00000000, 8404992, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_NORESERVE, 4, 0) = 0xFE400000
mprotect(0xFE400000, 8192, PROT_NONE) = 0
mprotect(0xFEC02000, 8192, PROT_NONE) = 0
open64("A...AAAAA", O_RDONLY) Err#78 ENAMETOOLONG
Couldn't open RGB_DB 'write(2, " C o u l d n ' t o p e".., 22) = 22
AAA...AAAAAAAAAAAAAAAAAAAAAAAAAAwrite(2, " A A A A A A A A A A A A".., 6000) = 6000
'
write(2, " '\n", 2) = 2
getpid() = 21677 [21676]
getrlimit(RLIMIT_NOFILE, 0xFFBEE3F8) = 0
setrlimit(RLIMIT_NOFILE, 0xFFBEE3F8) = 0
uname(0xFFBEDB30) = 1
getrlimit(RLIMIT_NOFILE, 0xFFBEE128) = 0
so_socket(2, 2, 0, "", 1) = 0
setsockopt(0, 6, 1, 0xFFBEE124, 4, 1) = 0
setsockopt(0, 65535, 8, 0xFFBEE120, 4, 1) = 0
setsockopt(0, 65535, 4, 0xFFBEE194, 4, 1) = 0
bind(0, 0xFFBEE1B8, 16, 3) = 0
setsockopt(0, 65535, 128, 0x00175D40, 8, 1) = 0
listen(0, 5, 1) = 0
getsockname(0, 0xFFBEE144, 0xFFBEE154, 1) = 0
uname(0xFFBEDB30) = 1
Incurred fault #5, FLTACCESS %pc = 0xFECC14C8
siginfo: SIGBUS BUS_ADRALN addr=0x41414141
Received signal #10, SIGBUS [default]
siginfo: SIGBUS BUS_ADRALN addr=0x41414141
*** process killed ***

解决方法:
==========
暂时去掉Xsun的suid root或sgid root属性:
# chmod a-s /usr/openwin/bin/Xsun

厂商状态:
==========
2001.8.08 我们将这个问题通报给了Sun公司。
2001.8.08 Sun回复说他们已经将此问题转给相应小组,但至今没有任何回音

根据我们的测试,安装了最新的Xsun的安全补丁之后仍然存在此问题。

附加信息:
==========
通用漏洞披露(Common Vulnerabilities and Exposures)组织CVE已经为此问题
分配了一个候选名 CAN-2002-0158。此名字是为了收录进CVE列表做候选之用,
(http://cve.mitre.org)CVE列表致力于使安全问题的命名标准化。候选名在被
正式加入CVE列表之前可能会有较大的变化。

声 明
==========

本安全公告仅用来描述可能存在的安全问题,绿盟科技不为此安全公告提供任何保证或承诺。由于传播、利用此安全公告所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,绿盟科技以及安全公告作者不为此承担任何责任。绿盟科技拥有对此安全公告的修改和解释权。如欲转载或传播此安全公告,必须保证此安全公告的完整性,包括版权声明等全部内容。未经绿盟科技允许,不得任意修改或者增减此安全公告内容,不得以任何方式将其用于商业目的。

关于绿盟科技
============

绿盟科技(NSFOCUS Co., Ltd.)是中国网络安全领域的领导企业,致力于网络和系统安全问题的研究、高端网络安全产品的研发、销售与网络安全服务,在入侵检测/保护、远程评估、 DDoS攻击防护等方面提供具有国际竞争能力的先进产品,是国内最具安全服务经验的专业公司。有关绿盟科技的详情请参见: http://www.nsfocus.com

© 2024 绿盟科技