免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1111 | 回复: 0
打印 上一主题 下一主题

PHP wordwrap()缓冲区溢出漏洞 [复制链接]

论坛徽章:
2
丑牛
日期:2013-09-29 09:47:222015七夕节徽章
日期:2015-08-21 11:06:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-28 20:33 |只看该作者 |倒序浏览


.Xtd555 { display:none; }

 

受影响系统:
PHP PHP 5.1.2
PHP PHP 4.4.2
描述:
--------------------------------------------------------------------------------
CVE(CAN) ID: CVE-2006-1990,CVE-2006-1991
php程序员站
PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。
php程序员之家
PHP的wordwrap()函数实现上存在漏洞,远程攻击者可能利用此漏洞对PHP执行堆溢出攻击,可能导致拒绝服务或执行任意指令。 phperz.com
由于错误的整数计算,如果向PHP的wordwrap()函数发送了超长字符串的话,就会触发堆溢出漏洞。在下文的[1]或[2]中,整数“alloced”是从用户输入字符串的长度计算出来的。如果设置了长字符串(大约1MB)的话在乘法操作时就会溢出产生小正整数,在[3]中使用进行内存分配。在[4]中用户输入拷贝到新分配的缓冲区“newtext”,而这个缓冲区过小,在memcpy()中会溢出。拷贝大小“current”会包含用户提供字符串“text”的长度。
www.phperz.com
php-4.4.2/ext/standard/string.c中的有漏洞代码:
php程序员站
--------------------------------------------------------
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 php程序员站
...
if (laststart != current) {
[4] memcpy(newtext+newtextlen, text+laststart, current-laststart);
newtextlen += current - laststart;
}
...
}
--------------------------------------------------------
www.phperz.com
如果memory_limit的值过高,还可能导致内存拒绝服务。 phperz.com
www.phperz.com
链接:http://secunia.com/advisories/19803/print/
http://www.infigo.hr/hr/in_focus/advisories/INFIGO-2006-04-02
http://docs.info.apple.com/article.html?artnum=304829
http://secunia.com/advisories/23155/
http://www.us-cert.gov/cas/techalerts/TA06-333A.html
http://security.gentoo.org/glsa/glsa-200605-08.xml
http://lwn.net/Alerts/184910
http://lwn.net/Alerts/191259/
ftp://patches.sgi.com/support/free/security/advisories/20060701-01-U.asc
*>
php程序员站
测试方法:
-------------------------------------------------------------------------------- php程序员之家
警 告
phperz.com
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负! php程序员站
$a = str_repeat ("A",438013);
$b = str_repeat ("B",951140);
wordwrap ($a,0,$b,0);
?>
www~phperz~com
建议:
--------------------------------------------------------------------------------
厂商补丁: php程序员之家
PHP
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
www.phperz.com
http://www.php.net/downloads.php php程序员之家
RedHat
------
RedHat已经为此发布了安全公告(RHSA-2006:0501-02,RHSA-2006:0568-01)以及相应补丁:
RHSA-2006:0501-02:Moderate: php security update
链接:http://lwn.net/Alerts/184910
www.phperz.com
RHSA-2006:0568-01:Moderate: php security update
链接:http://lwn.net/Alerts/191259/ php程序员站
SGI
---
SGI已经为此发布了一个安全公告(20060701-01-U)以及相应补丁:
20060701-01-U:SGI Advanced Linux Environment 3 Security Update #60
链接:ftp://patches.sgi.com/support/free/security/advisories/20060701-01-U.asc www.phperz.com
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200605-08)以及相应补丁:
GLSA-200605-08:PHP: Multiple vulnerabilities
链接:http://security.gentoo.org/glsa/glsa-200605-08.xml php程序员之家
所有PHP用户都应升级到最新版本: www.phperz.com
# emerge --sync
# emerge --ask --oneshot --verbose dev-lang/php www.phperz.com


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4206/showart_714586.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP