安全研究

安全漏洞
RealNetworks RealPlayer .smil文件处理缓冲区溢出漏洞

发布日期:2005-03-01
更新日期:2005-03-02

受影响系统:
Real Networks RealPlayer Enterprise for Windows
Real Networks RealPlayer 8 for Windows
Real Networks RealPlayer 10.5 for Windows
Real Networks RealPlayer 10 for Windows
Real Networks RealPlayer 10 for Mac
Real Networks RealPlayer 10 for Linux
Real Networks RealOne Player V2 for Windows
Real Networks RealOne Player V1 for Windows
Real Networks RealOne Player for Mac
Real Networks Helix Player for Linux
描述:
BUGTRAQ  ID: 12698
CVE(CAN) ID: CVE-2005-0455

RealPlayer是RealNetworks Inc开发的应用程序,可以播放各种媒体格式。

RealPlayer在处理 .smil 文件的某些属性字段时存在缓冲区溢出漏洞,攻击者通过精心构造 .smil 文件使RealPlayer执行任意指令。

漏洞的起因是拷贝操作中未受限制的字符串。漏洞代码如下:

datatype/smil/renderer/smil1/smlparse.cpp
CSmil1Parser::testAttributeFailed(SMIL1Node* pNode)
line 2878

***
     if(HXR_OK == rc)
        {
            UINT32 ulScreenHeight = 0;
            UINT32 ulScreenWidth = 0;

            const char* pScreenSize = (const char*)pBuf->GetBuffer();
            // format is screen-height "X" screen-width
            char tmp[256]; /* Flawfinder: ignore */
            strcpy(tmp, pScreenSize); /* Flawfinder: ignore */
***


pBuf对象的数据指针(也就是GetBuffer内部所使用的指针)指向了用户提供的smil文件的screen-size属性。这就允许以用户提供的数据覆盖固定的栈缓冲区。攻击者可以利用这个栈覆盖控制保存的返回地址或结构化异常处理器,允许执行任意代码。

如果要触发这个漏洞,攻击者必需一个有效的.smil文件,并在合适的部分添加以下内容:
<text src="1024_768.en.txt" region="size" system-screen-size="LONGSTRINGX768">

请注意"LONGSTRING"必须大于256字节才能导致栈破坏。

<*来源:iDEFENSE Security Advisory (labs@idefense.com
        Mark Litchfield (mark@ngssoftware.com
  
  链接:http://www.idefense.com/application/poi/display?id=209&type=vulnerabilities&flashstatus=false
        http://service.real.com/help/faq/security/050224_player/EN/
*>

建议:
厂商补丁:

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

Windows 播放器:

RealOne Player v2 (6.0.11.853-872), RealPlayer 10和RealPlayer 10.5可点击如下地址:

http://service.real.com/help/faq/security/050224_player/EN/win32patch.rnx

或采用如下步骤下载更新以解决此问题:

在工具菜单中选择检查更新。
选择选择"Security Update - March 2005"组件
单击安装以下载并安装更新。

RealOne Player(仅英文版)和RealOne Player V2 (6.0.11.818 - 840)需要完全下载来修复此问题,点击如下地址 :

http://service.real.com/help/faq/security/050224_player/EN/player.rnx

或采用如下步骤更新:

在工具菜单中选择检查更新。
选择“内置Harmony技术的RealPlayer 10.5”组件旁的复选框。
单击安装以下载并安装更新。
然后,点击安全进行下载和安装。

RealPlayer 8 (version 6.0.9.584)点击如下地址:

http://service.real.com/help/faq/security/050224_player/EN/player.rnx

或者使用如下方法进行升级:

点击帮助菜单。
选择更新。
选择“内置Harmony技术的RealPlayer 10.5”组件旁的复选框。
点击安装进行下载和更新。

RealPlayer Enterprise解决方法:

请从http://service.real.com/help/faq/security/security022405.html 下载补丁程序。

RealOne Player的Mac OS X版本:

RealPlayer 10 for Mac OS X可采用如下方法进行更新:

进行RealPlayer菜单。
选择更新。
选择"Security Update - March 2005" 组件。
选择安装和升级。

Linux播放器:

请从http://www.real.com/linux 获得新版RealPlayer 10的Linux版本。

请从http://player.helixcommunity.org/downloads/ 获得新版Helix Player的Linux版本

浏览次数:7941
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障