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 相关文章推荐
真正面向对象编程:PHP5.01发布
Oct 09 PHP
2.PHP入门
Oct 09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
PHP读取目录下所有文件的代码
Jan 07 PHP
纯真IP数据库的应用 IP地址转化成十进制
Jun 14 PHP
PHP常用数组函数介绍
Jul 28 PHP
thinkphp连贯操作实例分析
Nov 22 PHP
PHP 使用memcached简单示例分享
Mar 05 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
PHP开发中解决并发问题的几种实现方法分析
Nov 13 PHP
php pdo连接数据库操作示例
Nov 18 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新手用的Insert和Update语句构造类
2012/03/31 PHP
PHP+APACHE实现网址伪静态
2015/02/22 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
js+CSS实现弹出居中背景半透明div层的方法
2015/02/26 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
学习JavaScript编程语言的8张思维导图分享
2015/03/27 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
react.js 获取真实的DOM节点实例(必看)
2017/04/17 Javascript
一个简易时钟效果js实现代码
2020/03/25 Javascript
浅谈React中组件间抽象
2018/01/27 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
Python写的贪吃蛇游戏例子
2014/06/16 Python
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
Python编程实现正则删除命令功能
2017/08/30 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
Linux 修改Python命令的方法示例
2018/12/03 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
《手指教学》反思
2014/02/14 职场文书
总结表彰大会主持词
2014/03/26 职场文书
主持人演讲稿
2014/05/13 职场文书
毕业生面试求职信
2014/06/23 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
小学生毕业评语
2014/12/26 职场文书
《正比例》教学反思
2016/02/23 职场文书
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS