Lucene search

K
seebugRootSSV:15112
HistoryDec 20, 2009 - 12:00 a.m.

PHP posix_mkfifo()函数绕过open_basedir安全限制漏洞

2009-12-2000:00:00
Root
www.seebug.org
28

0.019 Low

EPSS

Percentile

87.3%

BUGTRAQ ID: 36554
CVE(CAN) ID: CVE-2009-3558

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

PHP的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值。

PHP PHP 5.3.x
PHP PHP 5.2.x
厂商补丁:

PHP

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

http://svn.php.net/viewvc/php/php-src/branches/PHP_5_3/ext/posix/posix.c?view=log
http://svn.php.net/viewvc/php/php-src/branches/PHP_5_2/ext/posix/posix.c?view=log