PHP ibase_gen_id()函数单字节溢出漏洞

受影响系统:

PHP PHP 5.3.3

描述:


BUGTRAQ  ID: 42516

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

PHP的ibase_gen_id()函数将用户所提供的generator变量拷贝到了128字节的query变量大小的缓冲区,这可能触发单字节溢出。[1]处是对query变量的snprintf拷贝语句。  

/* {{{ proto int ibase_gen_id(string generator [, int increment [,  

resource link_identifier ]])  

   Increments the named generator and returns its new value */  

PHP_FUNCTION(ibase_gen_id)  

{  

    zval *link = NULL;  

    char query[128], *generator;  

    int gen_len;  

    long inc = 1;  

    ibase_db_link *ib_link;  

    ibase_trans *trans = NULL;  

    XSQLDA out_sqlda;  

    ISC_INT64 result;  

  

    RESET_ERRMSG;  

  

    if (FAILURE == zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,  

"s|lr", &generator, &gen_len,  

            &inc, &link)) {  

        RETURN_FALSE;  

    }  

  

    PHP_IBASE_LINK_TRANS(link, ib_link, trans);  

      

    [1] snprintf(query, sizeof(query), "SELECT GEN_ID(%s,%ld) FROM  

rdb$database", generator, inc);  

…  

}

<*来源:Canberk BOLAT
  
  链接:http://www.exploit-db.com/exploits/14678/
*>

测试方法:


警 告

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

http://www.exploit-db.com/sploits/ibase_gen_id_poc.zip

建议:


临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 使用[2]替换[1]    

    — [1] snprintf(query, sizeof(query), "SELECT GEN_ID(%s,%ld) FROM  

rdb$database", generator, inc);  

    +++ [2] snprintf(query, sizeof(query) – 1  "SELECT GEN_ID(%s,%ld)  

FROM rdb$database", generator, inc);

厂商补丁:

PHP

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

http://www.php.net

发表评论?

0 条评论。

发表评论