PHP php_stream_filter_create()函数缓冲区溢出漏洞

QQ空间 新浪微博 微信 QQ facebook twitter
漏洞ID 1191152 漏洞类型 缓冲区溢出
发布时间 2007-03-31 更新时间 2007-05-25
CVE编号 CVE-2007-1824 CNNVD-ID CNNVD-200704-003
漏洞平台 N/A CVSS评分 5.1
|漏洞来源
https://www.securityfocus.com/bid/23237
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200704-003
|漏洞详情
PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。PHP的php_stream_filter_create()函数实现上存在缓冲区溢出漏洞,本地攻击者可能利用此漏洞提升自己的权限。当php_stream_filter_create()函数创建过滤器时,首先在哈希表中通过名称搜索过滤器,如果不成功的话就检查是否存在支持所请求过滤器的通配符过滤器。这个操作由以下代码处理:if(SUCCESS==zend_hash_find(filter_hash,(char*)filtername,n,(void**)&factory)){filter=factory->create_filter(filtername,filterparams,persistentTSRMLS_CC);}elseif((period=strrchr(filtername,'.'))){/*tryawildcard*/char*wildname;wildname=estrdup(filtername);period=wildname+(period-filtername);while(period&&!filter){*period='\0';strcat(wildname,".*");if(SUCCESS==zend_hash_find(filter_hash,wildname,strlen(wildname),(void**)&factory)){filter=factory->create_filter(filtername,filterparams,persistentTSRMLS_CC);}*period='\0';period=strrchr(wildname,'.');}efree(wildname);}可见这个函数假设字符串的末尾不会出现句号("."),因为根本就没有保存这种情况下所需的额外内存字节,因此如果所创建的过滤器名称末尾包含有句号的话就会导致单字节溢出,用"\0"字符覆盖内存中之后的字节。
|受影响的产品
Ubuntu Ubuntu Linux 7.04 sparc Ubuntu Ubuntu Linux 7.04 powerpc Ubuntu Ubuntu Linux 7.04 i386 Ubuntu Ubuntu Linux 7.04 amd64 Ubuntu Ubuntu Linux 6.10 sparc Ubuntu Ubuntu
|参考资料

来源:BID
名称:23237
链接:http://www.securityfocus.com/bid/23237
来源:MISC
链接:http://www.php-security.org/MOPB/MOPB-42-2007.html
来源:UBUNTU
名称:USN-455-1
链接:http://www.ubuntu.com/usn/usn-455-1
来源:SUSE
名称:SUSE-SA:2007:032
链接:http://www.novell.com/linux/security/advisories/2007_32_php.html
来源:DEBIAN
名称:DSA-1283
链接:http://www.debian.org/security/2007/dsa-1283
来源:SECUNIA
名称:25062
链接:http://secunia.com/advisories/25062
来源:SECUNIA
名称:25057
链接:http://secunia.com/advisories/25057
来源:SECUNIA
名称:25056
链接:http://secunia.com/advisories/25056