id()函数单字节溢出漏洞

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

发布日期:2010-08-18
更新日期:2010-08-19

受影响系统:
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
 
  链接:
*>

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

警 告

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

建议:
--------------------------------------------------------------------------------
临时解决方法:

如果您不能立刻安装补丁或者升级,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
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwsxxg.html