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 相关文章推荐
JAVA/JSP学习系列之二
Oct 09 PHP
PHP的类 功能齐全的发送邮件类
Oct 09 PHP
PHP中的CMS的涵义
Mar 11 PHP
php zend 相对路径问题
Jan 12 PHP
fleaphp常用方法分页之Pager使用方法
Apr 23 PHP
PHP图片等比缩放类SimpleImage使用方法和使用实例分享
Apr 10 PHP
php中删除数组的第一个元素和最后一个元素的函数
Mar 07 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
PHP 验证身份证是否合法的函数
Feb 09 PHP
phpMyAdmin通过密码漏洞留后门文件
Nov 20 PHP
PHP反射学习入门示例
Jun 14 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
Apr 26 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中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/01/13 Javascript
javascript 写类方式之二
2009/07/05 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
javascript转换日期字符串为Date日期对象的方法
2015/02/13 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
javascript数组排序汇总
2015/07/07 Javascript
js实现不重复导入的方法
2016/03/02 Javascript
JavaScript实现页面跳转的方式汇总
2016/05/16 Javascript
ES6通过babel转码使用webpack使用import关键字
2016/12/13 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
2019/05/18 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
Element Backtop回到顶部的具体使用
2020/07/27 Javascript
[54:43]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第一场 2月22日
2021/03/11 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
Python 的内置字符串方法小结
2016/03/15 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
django反向解析和正向解析的方式
2018/06/05 Python
Python二进制串转换为通用字符串的方法
2018/07/23 Python
Python创建字典的八种方式
2019/02/27 Python
set在python里的含义和用法
2019/06/24 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
大学生旷课检讨书
2014/01/22 职场文书
人事专员的职责
2014/02/26 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
经理任命书模板
2014/06/06 职场文书
世界水日宣传活动总结
2015/02/09 职场文书
就业导师推荐信范文
2015/03/27 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
人生哲理妙语30条:淡写流年,笑过人生
2019/09/04 职场文书
MySQL触发器的使用
2021/05/24 MySQL
Java多条件判断场景中规则执行器的设计
2021/06/26 Java/Android