PHP mbstring扩展缓冲区溢出漏洞

admin 2022-07-23 11:30:19 CNNVD漏洞 来源:ZONE.CI 全球网 0 阅读模式

漏洞信息详情

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  

补丁

    暂无

weinxin
特别声明
本站(ZONE.CI)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
评论:0   参与:  0