PHP5.2下chunk_split()函数整数溢出漏洞 分析


Posted in PHP onJune 06, 2007

受影响系统:
PHP PHP < 5.2.3
不受影响系统:
PHP PHP 5.2.3
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 24261
CVE(CAN) ID: CVE-2007-2872

PHP是一种流行的WEB服务器端编程语言。

PHP中的chunk_split函数在处理畸形参数时存在整数溢出漏洞,本地攻击者可能利用此漏洞提升自己的权限。

PHP中chunk_split函数的1963行试图为函数结果分配充分的内存大小,但没有执行任何检查便使用了srclen和chunklen参数块。如果值的块和endlen大于65534字节的话,就会触发整数溢出,分配错误的内存大小,导致堆溢出。

ext/standard/string.c:

1953 static char *php_chunk_split(char *src, int srclen, char *end,
int endlen, int chunklen, int *destlen)
1954 {
1955 char *dest;
1956 char *p, *q;
1957 int chunks; /* complete chunks! */
1958 int restlen;
1959
1960 chunks = srclen / chunklen;
1961 restlen = srclen - chunks * chunklen; /* srclen % chunklen */
1962
1963 dest = safe_emalloc((srclen + (chunks + 1) * endlen + 1),
sizeof(char), 0);
1964
1965 for (p = src, q = dest; p < (src + srclen - chunklen + 1); ) {
1966 memcpy(q, p, chunklen);
1967 q += chunklen;
1968 memcpy(q, end, endlen);
1969 q += endlen;
1970 p += chunklen;
1971 }

<*来源:Gerhard Wagner

链接:http://marc.info/?l=bugtraq&m=118071054000708&w=2
http://www.php.net/releases/5_2_3.php
http://secunia.com/advisories/25456/
*>

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

警 告

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

<?
$a=str_repeat("A", 65535);
$b=1;
$c=str_repeat("A", 65535);
chunk_split($a,$b,$c);
?>

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

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

http://www.php.net/downloads.php#v5

文章来自: 绿盟科技

PHP 相关文章推荐
一段php加密解密的代码
Jul 16 PHP
PHP中创建空文件的代码[file_put_contents vs touch]
Jan 20 PHP
php提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
May 06 PHP
解析如何在PHP下载文件名中解决乱码的问题
Jun 20 PHP
php中的字符编码转换函数用法示例
Oct 20 PHP
Yii中使用PHPExcel导出Excel的方法
Dec 26 PHP
Yii列表定义与使用分页方法小结(3种方法)
Jul 15 PHP
php多文件打包下载的实例代码
Jul 12 PHP
swoole和websocket简单聊天室开发
Nov 18 PHP
PHP高并发和大流量解决方案整理
Dec 24 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 PHP
如何用RabbitMQ和Swoole实现一个异步任务系统
May 29 PHP
phpMyAdmin下载、安装和使用入门教程
May 31 #PHP
测试您的 PHP 水平的题目
May 30 #PHP
Discuz板块横排显示图片的实现方法
May 28 #PHP
中国站长站 For Dede4.0 采集规则
May 27 #PHP
MySQL GBK→UTF-8编码转换
May 24 #PHP
Win2003服务器安全加固设置--进一步提高服务器安全性
May 23 #PHP
站长助手-网站web在线管理程序 v1.0 下载
May 12 #PHP
You might like
Syphon 秘笈
2021/03/03 冲泡冲煮
PHP 函数学习简单小结
2010/07/08 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
Laravel框架基于ajax实现二级联动功能示例
2019/01/17 PHP
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
javascript结合canvas实现图片旋转效果
2015/05/03 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
2018/09/18 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
JS中call()和apply()的功能及用法实例分析
2019/06/28 Javascript
深入浅析Vue中mixin和extend的区别和使用场景
2019/08/01 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
tensorflow模型文件(ckpt)转pb文件的方法(不知道输出节点名)
2020/04/22 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
python zip()函数的使用示例
2020/09/23 Python
工商管理本科毕业生求职信范文
2013/10/05 职场文书
寄语十八大感言
2014/02/07 职场文书
大学英语演讲稿范文
2014/04/24 职场文书
食品安全宣传标语
2014/06/07 职场文书
小学清明节活动总结
2014/07/04 职场文书
党风廉正建设责任书
2015/01/29 职场文书
2015年班干部工作总结
2015/04/29 职场文书
村党总支部公开承诺书2016
2016/03/25 职场文书