PHP Mysqlnd扩展php_mysqlnd_rset_header_read()函数堆溢出漏洞

受影响系统:

PHP PHP <= 5.3.2

描述:

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

PHP所使用的Mysqlnd扩展用于处理与mysql服务器的通讯和实现mysql协议。该扩展的php_mysqlnd_rset_header_read()函数中存在堆溢出漏洞:

if (packet->header.size  > (size_t) (p – buf) && (len = php_mysqlnd_net_field_length(&p))) {
    packet->info_or_local_file = mnd_emalloc(len + 1);
    memcpy(packet->info_or_local_file, p, len);
    packet->info_or_local_file[len] = ‘\0’;
    packet->info_or_local_file_len = len;
}

上述代码从网络缓冲区读取字段长度并将消息拷贝到新分配的缓冲区中。如果php_mysqlnd_net_field_length()返回了-1,这个拷贝操作就会触发堆溢出。在这种情况下仅分配了0字节的内存,但最多拷贝了4G的数据。

<*来源:Stefan Esser (s.esser@ematters.de
  
  链接:
http://php-security.org/2010/05/31/mops-2010-057-php-php_mysqlnd_rset_header_read-buffer-overflow-vulnerability/index.html
*>

建议:

厂商补丁:

PHP

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

http://www.php.net

发表评论?

0 条评论。

发表评论