php tempname 报错,PHP tempname()函数绕过safe_mode安全限制漏洞

BUGTRAQ ID: 36555

CVE ID: CVE-2009-3557

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

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

PHP PHP 5.3.x

PHP PHP 5.2.x

厂商补丁:

PHP

---

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

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

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

loading-bars.svg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值