漏洞信息详情
PHP mbstring扩展缓冲区溢出漏洞
- CNNVD编号:CNNVD-200812-427
- 危害等级: 中危
- CVE编号: CVE-2008-5557
- 漏洞类型: 缓冲区溢出
- 发布时间: 2008-12-23
- 威胁类型: 远程
- 更新时间: 2021-07-14
- 厂 商: php
- 漏洞来源: Moriyoshi Koizumi※...
漏洞简介
Php Mbstring(Multi-Byte String)是Php社区的PHP(PHP:HypertextPreprocessor,PHP:超文本预处理器)中的一个语言编码扩展库。
Qemu和KVM的VNC服务器在处理特制的报文时可能出现死循环,导致拒绝服务的情况。
PHP是广泛使用的通用目的脚本语言,特别适合于Web开发,可嵌入到HTML中。
PHP的mbstring扩展的ext/mbstring/libmbfl/filters/mbfilter_HTMLent.c文件中存在缓冲区溢出漏洞,远程攻击者可以通过包含有HTML实体的特制字符串来触发这个溢出,导致执行任意代码。
以下是mbfilter_HTMLent.c中有问题的HTML实体解码器,这里解码器实现为一个回调函数,输入字符串中的每个字符都会用包含有解码器状态的结构(mbfl_convert_filter)顺序调用该回调函数。
mbfl_convert_filter中的output_function字段指向一个函数,解码后的数据逐字符的传送给该函数,在出现错误的时候函数应返回负值,但如果参数是没有分配给任何字符的Unicode值时就可能失效。具体来说,由于output_function的符号是int(*)(int, void *)而缓冲区是无符字符数组,因此任何大于127的字符代码都会在将其值取反后传送给该函数,导致无条件的失效。
------------------------------------------------------------------------------
#define CK(statement) do { if ((statement) > 0) return (-1); } while (0)
...
int mbfl_filt_conv_HTML_dec(int c, mbfl_convert_filter *filter)
{
if (!filter-<status) {
...
} else {
if (c == \'\';\'\') {
...
} else {
/* add character */
buffer[filter-<status++] = c;
/* add character and check */
if (!strchr(HTML_entity_chars, c) ||
filter-<status+1==HTML_enc_buffer_size || (c==\'\'#\'\' && filter-<status<2))
{
/* illegal character or end of buffer */
if (c==\'\'&\'\')
filter-<status--;
buffer[filter-<status] = 0;
/* php_error_docref(\"ref.mbstring\" TSRMLS_CC, E_WARNING,
\"mbstring cannot decode \'\'\\%s\'\'\", buffer)l */
mbfl_filt_conv_HTML_dec_flush(filter);
if (c==\'\'&\'\')
{
filter-<status = 1;
buffer[0] = \'\'&\'\';
}
}
}
}
}
int mbfl_filt_conv_HTML_dec_flush(mbfl_convert_filter *filter)
{
int status, pos = 0;
char *buffer;
buffer = (char*)filter-<opaque;
status = filter-<status;
/* flush fragments */
while (status--) {
CK((*filter-<output_function)(buffer[pos++], filter-<data));
}
filter-<status = 0;
/*filter-<buffer = 0; of cause NOT*/
return 0;
}
------------------------------------------------------------------------------
如果用户输入中的字符序列包含有一个或多个不属于HTML_entity_chars的字符,在mbfl_filt_conv_HTML_dec_flush()中调用输出函数就会失败。由于CK()宏中的返回语句,这可能导致未经重置filter-<status就回到调用函数,最终允许随意的访问mbfl_filt_conv_HTML_dec()中的缓冲区。
漏洞公告
目前厂商已经发布了升级补丁以修复这个安全问题,补丁下载链接:http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/libmbfl/filters/mbfilter_HTMLent.c?r1=1.7&r2=1.8
参考网址
来源: US-CERT : TA09-133A
名称: TA09-133A
链接:http://www.us-cert.gov/cas/techalerts/TA09-133A.HTML
来源: FEDORA
名称: FEDORA-2009-3848
链接:https://www.redhat.com/archives/fedora-package-announce/2009-May/msg01465.HTML
来源: FEDORA
名称: FEDORA-2009-3768
链接:https://www.redhat.com/archives/fedora-package-announce/2009-May/msg01451.HTML
来源: XF
名称: php-multibyte-bo(47525)
链接:http://xforce.iss.net/xforce/xfdb/47525
来源: VUPEN
名称: ADV-2009-1297
链接:http://www.vupen.com/english/advisories/2009/1297
来源: BID
名称: 32948
链接:http://www.securityfocus.com/bid/32948
来源: BUGTRAQ
名称: 20090302 rPSA-2009-0035-1 php php-cgi php-imap php-mcrypt php-mysql php-mysqli php-pgsql php-soap php-xsl php5 php5-cgi php5-imap php5-mcrypt php5-mysql php5-mysqli php5-pear php5-pgsql php5-soap php5-xsl
链接:http://www.securityfocus.com/archive/1/archive/1/501376/100/0/threaded
来源: REDHAT
名称: RHSA-2009:0350
链接:http://www.redhat.com/support/errata/RHSA-2009-0350.HTML
来源: www.php.net
链接:http://www.php.net/ChangeLog-5.php#5.2.7
来源: MANDRIVA
名称: MDVSA-2009:045
链接:http://www.mandriva.com/security/advisories?name=MDVSA-2009:045
来源: DEBIAN
名称: DSA-1789
链接:http://www.debian.org/security/2009/dsa-1789
来源: wiki.rpath.com
链接:http://wiki.rpath.com/Advisories:rPSA-2009-0035
来源: support.CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple.com
链接:http://support.CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple.com/kb/HT3549
来源: SECTRACK
名称: 1021482
链接:http://securitytracker.com/id?1021482
来源: SECUNIA
名称: 35650
链接:http://secunia.com/advisories/35650
来源: SECUNIA
名称: 35306
链接:http://secunia.com/advisories/35306
来源: SECUNIA
名称: 35074
链接:http://secunia.com/advisories/35074
来源: SECUNIA
名称: 35003
链接:http://secunia.com/advisories/35003
来源: SECUNIA
名称: 34642
链接:http://secunia.com/advisories/34642
来源: HP
名称: SSRT090192
链接:http://marc.info/?l=bugtraq&m=125631037611762&w=2
来源: HP
名称: SSRT090192
链接:http://marc.info/?l=bugtraq&m=125631037611762&w=2
来源: HP
名称: HPSBUX02431
链接:http://marc.info/?l=bugtraq&m=124654546101607&w=2
来源: HP
名称: HPSBUX02431
链接:http://marc.info/?l=bugtraq&m=124654546101607&w=2
来源: SUSE
名称: SUSE-SR:2009:008
链接:http://lists.opensuse.org/opensuse-security-announce/2009-04/msg00003.HTML
来源: SUSE
名称: SUSE-SR:2009:004
链接:http://lists.opensuse.org/opensuse-security-announce/2009-02/msg00002.HTML
来源: CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple
名称: CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple-SA-2009-05-12
链接:http://lists.CMS.zone.ci/e/tags/htag.php?tag=Apple target=_blank class=infotextkey>Apple.com/archives/security-announce/2009/May/msg00002.HTML
来源: cvs.php.net
链接:http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/libmbfl/filters/mbfilter_HTMLent.c?r1=1.7&r2=1.8
bugs.php.net链接:http://bugs.php.net/bug.php?id=45722
来源: FULLDISC
名称: 20081221 CVE-2008-5557 - PHP mbstring buffer overflow
链接:http://archives.neohapsis.com/archives/fulldisclosure/2008-12/0477.HTML
受影响实体
- Php Php:5.0.0:Beta3
- Php Php:4.4.8
- Php Php:4.4.9
- Php Php:4.4.1
- Php Php:4.4.2
补丁
暂无
评论