手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

PHP tempnam()函数绕过safe_mode安全限制漏洞

首页 > PHP >

影响版本:
PHP PHP 5.3.x
PHP PHP 5.2.x漏洞描述:
BUGTRAQ ID: 36555
CVE ID: CVE-2009-3557

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

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

 

C++代码
  1. PHP_FUNCTION(tempnam)  
  2. {  
  3. char *dir, *prefix;  
  4. int dir_len, prefix_len;  
  5. size_t p_len;  
  6. char *opened_path;  
  7. char *p;  
  8. int fd;  
  9.   
  10. if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &dir, &dir_len,  
  11. &prefix, &prefix_len) == FAILURE) {  
  12. return;  
  13. }  
  14.   
  15. if (php_check_open_basedir(dir TSRMLS_CC)) { [1]  
  16. RETURN_FALSE;  
  17. }  
  18.   
  19. php_basename(prefix, prefix_len, NULL, 0, &p, &p_len TSRMLS_CC);  
  20. if (p_len > 64) {  
  21. p[63] = ’\0’;  
  22. }  
  23.   
  24. if ((fd = php_open_temporary_fd(dir, p, &opened_path TSRMLS_CC)) >= 0) {  
  25. close(fd);  
  26. RETVAL_STRING(opened_path, 0);  
  27. }  
  28. efree(p);  
  29. }  


在[1]处tempnam()函数仅检查了open_basedir值。<*参考 http://securityreason.com/securityalert/6601 ,http://secunia.com/advisories/37412/ *>

厂商补丁:

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

消息来源:http://hi.baidu.com/isbx/blog/item/9607b3fbdb3988284e4aea53.html
不过,原作者的标题写错了。应该是tempnam函数,呵呵




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):