PHP str_replace()函数整数溢出漏洞

漏洞信息详情

PHP str_replace()函数整数溢出漏洞

漏洞简介

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

PHP的str_replace()函数实现上存在整数溢出漏洞,本地攻击者可能利用此漏洞提升自己的权限。

在调用PHP的str_replace()函数时代码会切换到两个不同的代码路径,具体取决于搜索字符串的长度。单字符搜索字符串是由不同函数来处理的,以提高效率,但这种方法的以下代码中存在整数溢出漏洞:

Z_STRLEN_P(result) = len + (char_count * (to_len – 1));

Z_STRVAL_P(result) = target = emalloc(Z_STRLEN_P(result) + 1);

Z_TYPE_P(result) = IS_STRING;

如果char_count和to_len都大于65537的话就会导致32位长度计数器的整数溢出,因此emalloc()不会分配足够的内存,在执行替换时会导致溢出所分配的缓冲区。如果要成功利用这个漏洞必须在攻击对象之前分配目标缓冲区,以便溢出攻击对象,这样拷贝在崩溃之前停止。

漏洞公告

目前厂商已经发布了升级补丁以修复这个安全问题,补丁下载链接:

http://www.php.net/downloads.php#v4

http://www.php.net/downloads.php#v5

参考网址

来源: MISC

链接:http://www.php-security.org/MOPB/MOPB-39-2007.html

来源: VUPEN

名称: ADV-2007-2374

链接:http://www.frsirt.com/english/advisories/2007/2374

来源: VUPEN

名称: ADV-2007-1991

链接:http://www.frsirt.com/english/advisories/2007/1991

来源: SECUNIA

名称: 25850

链接:http://secunia.com/advisories/25850

来源: SECUNIA

名称: 25423

链接:http://secunia.com/advisories/25423

来源: HP

名称: SSRT071429

链接:http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=c01086137

来源: HP

名称: HPSBMA02215

链接:http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=c01056506

受影响实体

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享