首页 -> 安全研究
安全研究
安全漏洞
Solaris Xlock Heap缓冲区溢出漏洞
发布日期:2001-08-16
更新日期:2001-08-16
受影响系统:
Sun Solaris 2.6 (SPARC/x86)描述:
Sun Solaris 7 (SPARC/x86)
Sun Solaris 8 (SPARC/x86)
BUGTRAQ ID: 3160
CVE(CAN) ID: CVE-2001-0652
NSFOCUS安全小组发现Solaris系统所带的xlock程序在处理某些环境变量时存在Heap缓冲
区溢出漏洞,攻击者可能获取本地root权限。
xlock是Solaris OpenView所带的一个工具,用来锁定屏幕。它缺省设置了suid root
属性,由于在处理某些环境变量时没有进行有效的边界检查,攻击者可以覆盖heap区的
动态内存边界,小心地构造溢出数据攻击者可以以root权限执行任意代码。
问题出在两个环境变量上:"XFILESEARCHPATH"和"XUSERFILESEARCHPATH".
xlock调用malloc()为其分配1024字节的内存,并将环境变量的内容保存在这些动态内存
中。然而,在进行拷贝的时候,xlock没有检查环境变量的长度,如果将这两个环境变量
的内容设置为超过1024字节长的字符串,就可能发生heap溢出。相邻的动态内存块边界数
据结构会被覆盖,在下一次调用malloc()时,将会导致段访问错误。如果小心地构造溢出
数据,就可能利用malloc()/free()实现的一些特性来重写任意内存地址,例如保存的返
回地址、函数指针等等。
成功地利用这个漏洞,攻击者可以获取本地root权限。
<*来源:NSFOCUS Security Team (security@nsfocus.com)
中联绿盟安全公告(SA2001-05):http://www.nsfocus.com/sa01-05.htm
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
SunOS sun88 5.8 Generic sun4u sparc SUNW,Ultra-5_10
bash-2.03$ cp /usr/openwin/bin/xlock /tmp/xlock
bash-2.03$ export XFILESEARCHPATH=`perl -e 'print "A"x1028'`
bash-2.03$ /tmp/xlock
Segmentation Fault
bash-2.03$ truss -u libc:malloc,free /tmp/xlock
<...snip...>
<- libc:malloc() = 0x1135d0
-> libc:malloc(0x400, 0xffbefa8d, 0xffffffff, 0x1b648)
<- libc:malloc() = 0x1139d0
open("AAAAAAA...AAAAAAAAAAAAAAA", O_RDONLY) Err#78 ENAMETOOLONG
-> libc:free(0x1139d0, 0x0, 0xff31c000, 0x1b648)
<- libc:free() = 0
-> libc:malloc(0x400, 0x12, 0x0, 0x10ed49)
<- libc:malloc() = 0x1139d0
open("/export/home/test/XLock", O_RDONLY) Err#2 ENOENT
-> libc:free(0x1139d0, 0x0, 0xff31c000, 0x7efefeff)
<- libc:free() = 0
-> libc:malloc(0x3, 0x3073b, 0xffffffff, 0x3a300000)
<- libc:malloc() = 0x1135e0
Incurred fault #6, FLTBOUNDS %pc = 0xFF0C0F4C
siginfo: SIGSEGV SEGV_MAPERR addr=0x41527F18
Received signal #11, SIGSEGV [default]
siginfo: SIGSEGV SEGV_MAPERR addr=0x41527F18
*** process killed ***
NSFOCUS Security Team也提供了两个演示程序:
http://www.nsfocus.com/proof/sol_sparc_xlockex.c
http://www.nsfocus.com/proof/sol_x86_xlockex.c
建议:
临时解决方法:
暂时去掉xlock的suid root属性:
# chmod a-s /usr/openwin/bin/xlock
厂商状态:
Sun准备为此漏洞发布的补丁:
SPARC x86
--------- ---------
Solaris 8 108652-38 108653-33
Solaris 7 108376-30 108377-26
Solaris 2.6 105633-60 106248-45
您可以在下述网址获得Sun的所有安全补丁
http://sunsolve.sun.com/securitypatch
浏览次数:4019
严重程度:0(网友投票)
绿盟科技给您安全的保障