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

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1191145 漏洞类型 边界条件错误
发布时间 2007-03-31 更新时间 2007-04-10
CVE编号 CVE-2007-1885 CNNVD-ID CNNVD-200704-096
漏洞平台 N/A CVSS评分 7.5
|漏洞来源
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200704-096
|漏洞详情
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()不会分配足够的内存,在执行替换时会导致溢出所分配的缓冲区。如果要成功利用这个漏洞必须在攻击对象之前分配目标缓冲区,以便溢出攻击对象,这样拷贝在崩溃之前停止。
|参考资料

来源:BID
名称:23233
链接:http://www.securityfocus.com/bid/23233
来源:www.php.net
链接:http://www.php.net/releases/5_2_1.php
来源: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