安全研究

安全漏洞
PHP 5.3.1更新修复多个安全漏洞

发布日期:2009-11-20
更新日期:2009-11-23

受影响系统:
PHP PHP <= 5.3
不受影响系统:
PHP PHP 5.3.1
描述:
BUGTRAQ  ID: 37079
CVE ID: CVE-2009-3292,CVE-2009-3557,CVE-2009-3558,CVE-2009-3559,CVE-2009-4017

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

PHP的5.3.1之前版本的多个函数中存在安全漏洞,可能允许远程攻击者绕过安全限制执行非授权操作,或导致拒绝服务。

1) imagecolortransparent函数没有正确地对颜色索引执行过滤检查。

2) tempnam()中的错误可能允许绕过safe_mode限制。以下是ext/standard/file.c中的有漏洞代码段:

PHP_FUNCTION(tempnam)
{
char *dir, *prefix;
int dir_len, prefix_len;
size_t p_len;
char *opened_path;
char *p;
int fd;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &dir, &dir_len,
&prefix, &prefix_len) == FAILURE) {
return;
}

if (php_check_open_basedir(dir TSRMLS_CC)) { [1]
RETURN_FALSE;
}

php_basename(prefix, prefix_len, NULL, 0, &p, &p_len TSRMLS_CC);
if (p_len > 64) {
p[63] = '\0';
}

if ((fd = php_open_temporary_fd(dir, p, &opened_path TSRMLS_CC)) >= 0) {
close(fd);
RETVAL_STRING(opened_path, 0);
}
efree(p);
}

在[1]处tempnam()函数仅检查了open_basedir值。

3) posix_mkfifo()函数中的错误可能允许绕过open_basedir限制。以下是ext/posix/posix.c文件中的有漏洞代码段:

PHP_FUNCTION(posix_mkfifo)
{
char *path;
int path_len;
long mode;
int result;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sl", &path,
&path_len, &mode) == FAILURE) {
RETURN_FALSE;
}

if (PG(safe_mode) && (!php_checkuid(path, NULL, CHECKUID_ALLOW_ONLY_DIR)))
{ [1]
RETURN_FALSE;
}

result = mkfifo(path, mode);
if (result < 0) {
POSIX_G(last_error) = errno;
RETURN_FALSE;
}

RETURN_TRUE;
}

在[1]处posix_mkfifo函数仅检查了safe_mode值。

4) 在向multipart/form-data内容类型的PHP脚本发送POST请求时,如果在请求中包含了文件列表,PHP就会对该请求的每个文件创建一个临时文件。攻击者可以在请求中包含大量的文件,然后发送大量这类请求。服务器由于无法同时处理这些文件会停止响应。

<*来源:Grzegorz Stachowiak
  
  链接:http://secunia.com/advisories/37412/
        http://marc.info/?l=bugtraq&m=125873365024088&w=2
        http://securityreason.com/securityalert/6600
        http://securityreason.com/securityalert/6601
        http://security.gentoo.org/glsa/201001-03.xml
        https://www.redhat.com/support/errata/RHSA-2010-0040.html
*>

建议:
厂商补丁:

PHP
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.php.net/get/php-5.3.1.tar.gz/from/a/mirror

RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2010:0040-01)以及相应补丁:
RHSA-2010:0040-01:Moderate: php security update
链接:https://www.redhat.com/support/errata/RHSA-2010-0040.html

Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA 201001-03)以及相应补丁:
GLSA 201001-03:PHP: Multiple vulnerabilities
链接:http://security.gentoo.org/glsa/201001-03.xml

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