安全研究

安全漏洞
Solaris su组件本地空指针引用漏洞

发布日期:2010-10-12
更新日期:2010-10-18

受影响系统:
Sun Solaris 10.0_x86
Sun Solaris 10.0
描述:
BUGTRAQ  ID: 43972
CVE ID: CVE-2010-3503

Solaris是一款由Sun开发和维护的商业UNIX操作系统。

Solaris的su组件中存在空指针引用漏洞:

    521         for (j = 0; initenv[j] != 0; j++) { [1]  

    522             if (initvar = getenv(initenv[j])) { [2]  

    ...  

    535                 } else {  

    536                     var = (char *)  

    537                         malloc(strlen(initenv[j]) [3]  

    538                         + strlen(initvar)  

    539                         + 2);  

    540                     (void) strcpy(var, initenv[j]); [4]  

    

在从继承的环境创建新的环境时su继承了LC_ALL和TZ等定义值,[1]处的调用从数值的数组中获取了所要继承的值,之后在[2]处执行了一些检查,但没有检查返回值便在[3]处将变量传送给可控的malloc()。如果malloc()失败,就会返回0x0并在[4]处传送给strcpy(),导致了空指针引用:

   Program terminated with signal 11, Segmentation fault.  

   #0  0xd1244734 in ?? ()  

   (gdb) x/i $pc  

   0xd1244734:  mov    %eax,(%edi)  

   (gdb) i r $eax  

   eax            0x415f434c    1096762188 <- OUR STRING  

   (gdb) i r $edi  

   edi            0x0   0 <- NULL PTR  

  

    Incurred fault #6, FLTBOUNDS  %pc = 0xD1244734  

      siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000  

    Received signal #11, SIGSEGV [default]  

      siginfo: SIGSEGV SEGV_MAPERR addr=0x00000000

<*来源:prdelka
  
  链接:http://secunia.com/advisories/41829/
        http://www.us-cert.gov/cas/techalerts/TA10-287A.html
        http://www.oracle.com/technetwork/topics/security/cpuoct2010-175626.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.exploit-db.com/exploits/15245/

建议:
厂商补丁:

Oracle
------
Oracle已经为此发布了一个安全公告(cpuoct2010)以及相应补丁:
cpuoct2010:Oracle Critical Patch Update Advisory - October 2010
链接:http://www.oracle.com/technetwork/topics/security/cpuoct2010-175626.html

浏览次数:2679
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障