php输出函数.append,PHP 5 php_sprintf_appendstring()函数整数溢出漏洞

发布日期:2008-03-21更新日期:2008-03-24

受影响系统:PHP PHP 5.2.5描述:--------------------------------------------------------------------------------BUGTRAQ  ID: 28392CVE(CAN) ID: CVE-2008-1384

PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。

PHP formatted_print.c文件的*printf()函数存在整数溢出漏洞,能够执行PHP脚本的攻击者可能利用此漏洞提升权限。

在formatted_print.c文件的php_sprintf_appendstring()函数中:

- ---formatted_print.c-start---inline static voidphp_sprintf_appendstring(char **buffer, int *pos, int *size, char *add,                           int min_width, int max_width, char padding,                           int alignment, int len, int neg, int expprec, int always_sign)- ---formatted_print.c-end---

主变量为npad。

- ---formatted_print.c-start---    copy_len = (expprec ? MIN(max_width, len) : len);    npad = min_width - copy_len;- ---formatted_print.c-end---

这里npad为2147483646。

- ---formatted_print.c-start---    req_size = *pos + MAX(min_width, copy_len) + 1;- ---formatted_print.c-end---

req_size overflow

- ---formatted_print.c-start---    if (req_size > *size) {        while (req_size > *size) {            *size <<= 1;        }        PRINTF_DEBUG(("sprintf ereallocing buffer to %d bytes\n", *size));        *buffer = erealloc(*buffer, *size);    }- ---formatted_print.c-end---

(req_size > *size)为False,(alignment == ALIGN_RIGHT)为True,因此

- ---formatted_print.c-start---        while (npad-- > 0) {            (*buffer)[(*pos)++] = padding;        }- ---formatted_print.c-end---

gdb调试结果如下:

- --- Debug ---0x08295ba5 in php_sprintf_appendstring (buffer=0xbfbfd318, pos=0xbfbfd31c,     size=0xbfbfd324, add=0x28f20404 'A' ...,     min_width=2147483646, max_width=0, padding=65 'A', alignment=1, len=1,     neg=0, expprec=0, always_sign=0)

...

0x290fff0c:      'A' ...0x290fffd4:      'A' 0x29100000:      - --- Debug ---

脚本会向内存分配大量数据,导致拒绝服务或执行任意指令。

建议:--------------------------------------------------------------------------------厂商补丁:

PHP---目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://cvs.php.net/viewvc.cgi/php-src/NEWS?revision=1.2027.2.547.2.1120&view=markup

小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值