手机
当前位置:查字典教程网 >网络安全 >漏洞分析 >PHP 5 php_sprintf_appendstring() 整数溢出漏洞
PHP 5 php_sprintf_appendstring() 整数溢出漏洞
摘要:受影响系统:PHPPHP5.2.5描述:PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。PHPformatte...

受影响系统:

PHP PHP 5.2.5

描述:

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

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

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

- ---formatted_print.c-start---

inline static void

php_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 bytesn", *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’ <repeats 200 times>...,

min_width=2147483646, max_width=0, padding=65 ’A’, alignment=1, len=1,

neg=0, expprec=0, always_sign=0)

...

0x290fff0c: ’A’ <repeats 200 times>...

0x290fffd4: ’A’ <repeats 44 times> <Error reading address 0x29100000: Bad

address>

0x29100000: <Error reading address 0x29100000: Bad address>

- --- Debug ---

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

厂商补丁:

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

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

【PHP 5 php_sprintf_appendstring() 整数溢出漏洞】相关文章:

SwiftView ActiveX控件和浏览器插件含栈溢出漏洞

MirOS BSD Korn Shell本地权限提升漏洞

php5.2.3远程CGI缓冲溢出漏洞

Toshiba Surveillix ActiveX 控件远程栈溢出漏洞

FreeBSD user-ppp协议实现本地栈溢出漏洞

Novell iPrint ienipp.ocx ActiveX 控件溢出漏洞

Borland StarTeam 含多个远程溢出及拒绝服务漏洞

FreeBSD inet_network() 函数中的单字节溢出漏洞

Outlook Express协议回应数据堆溢出漏洞

联众ConnectAndEnterRoom ActiveX控件栈溢出漏洞

精品推荐
分类导航