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 相关文章推荐
php4的session功能评述(二)
Oct 09 PHP
PHP运行环境配置与开发环境的配置(图文教程)
Jun 04 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
php计算程序运行时间的简单例子分享
May 10 PHP
php下Memcached入门实例解析
Jan 05 PHP
PHP生成json和xml类型接口数据格式
May 17 PHP
分享PHP-pcntl 实现多进程代码
Sep 30 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
Dec 12 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 PHP
通过PHP实现用户注册后邮箱验证激活
Nov 10 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+AJAX让WordPress动态加载文章的教程
2015/12/11 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
php实现简单四则运算器
2020/11/29 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
jQuery的Ajax用户认证和注册技术实例教程(附demo源码)
2015/12/08 Javascript
jquery在vue脚手架中的使用方式示例
2017/08/29 jQuery
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
vue组件中的数据传递方法
2018/05/14 Javascript
详解Vue 如何监听Array的变化
2019/06/06 Javascript
Vue3.0数据响应式原理详解
2019/10/09 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
python实现简单的计时器功能函数
2015/03/14 Python
python抓取百度首页的方法
2015/05/19 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
Python中print和return的作用及区别解析
2019/05/05 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
2020/10/15 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
毕业生个人的求职信范文
2013/12/03 职场文书
党员活动日总结
2014/05/05 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
作风建设年度心得体会
2014/10/29 职场文书
世界地球日活动总结
2015/02/09 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
个人售房合同协议书
2016/03/21 职场文书
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers