ChinaUnix.net
 >> ChinaUnix.net > Solaris

绿盟原创,请大家试试?

作者:wangzhiq5     发表时间:2002/11/20 08:40am

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

发布日期:2002-09-19
文章内容:
--------------------------------------------------------------------------------
作者:Nsfocus安全小组(security@nsfocus.com)
主页:http://www.nsfoucs.com
日期:2002-04-12

CVE CAN 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列表之前可能会有较大的变化。

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

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


此文章相关评论:
该文章有5个相关评论如下:(点这儿可以发表评论)
flyingboy 发表于: 2002/11/20 08:55am
wangzhiq5的帖子太好了,其实做好一个系统,安全实在是太重要了!
顶!
 
sunday 发表于: 2002/11/20 10:25am
绿盟(http://www.nsfoucs.com)是个不错的讨论系统安全的网站,大家有空的时候可以上去逛逛.
 
pasoolee 发表于: 2002/11/20 10:52am
呵呵 好像focus 打反了字母了吧  :)
 
sunday 发表于: 2002/11/20 01:36pm
我没注意看,是从wangzhiq5为文章中copy出来的,不好意思
 
wangzhiq5 发表于: 2002/11/20 03:13pm
不知哪位朋友试过了,我在solaris 8(intel)下使用,总是提示我字太长,然后就没反应了。ctrl+c ,ctrl +d ,ctrl+z仍旧回不到命令提示符下,请大家帮忙看看。
  顺祝!
 
 

Copyright © ChinaUnix.net  *  转载请注明出处及作者