PHP php_stream_filter_create 函数存在整形溢出漏洞 CVE-2007-1824 CNVD-2009-10131 CNNVD-200704-003

5.1 AV AC AU C I A
发布: 2007-04-02
修订: 2017-07-29

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, persistent TSRMLS_CC); } else if ((period = strrchr(filtername, '.'))) { /* try a wildcard */ 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, persistent TSRMLS_CC); } *period = '\0'; period = strrchr(wildname, '.'); } efree(wildname); } 可见这个函数假设字符串的末尾不会出现句号("."),因为根本就没有保存这种情况下所需的额外内存字节,因此如果所创建的过滤器名称末尾包含有句号的话就会导致单字节溢出,用"\0"字符覆盖内存中之后的字节。

0%
暂无可用Exp或PoC
当前有14条受影响产品信息