安全研究

安全漏洞
PHP Mysqlnd扩展php_mysqlnd_ok_read()函数信息泄露漏洞

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

受影响系统:
PHP PHP <= 5.3.2
描述:
BUGTRAQ  ID: 40461
CVE(CAN) ID: CVE-2010-3062

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

PHP所使用的Mysqlnd扩展用于处理与mysql服务器的通讯和实现mysql协议。该扩展的php_mysqlnd_ok_read()函数中存在信息泄露漏洞:

/* There is a message */
if (packet->header.size > (size_t) (p - buf) && (i = php_mysqlnd_net_field_length(&p))) {
    packet->message = mnd_pestrndup((char *)p, MIN(i, buf_len - (p - begin)), FALSE);
    packet->message_len = i;
} else {
    packet->message = NULL;
}

上述代码从网络缓冲区读取消息长度并将消息拷贝到新分配的缓冲区中。这个拷贝操作的实现是安全的,因为确保了仅拷贝了缓冲区中可用的字节数。但message_len字段错误的设置为了网络所提供的值,导致所有处理消息和报文结构中message_len信息的函数中都存在信息泄露。

<*来源: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://svn.php.net/viewvc?view=revision&revision=298703

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