安全研究

安全漏洞
MPlayer DMO文件解析堆溢出漏洞

发布日期:2007-03-01
更新日期:2007-03-14

受影响系统:
MPlayer MPlayer 1.0 rc1
描述:
BUGTRAQ  ID: 22771
CVE(CAN) ID: CVE-2007-1246

MPlayer是一款基于Linux的媒体播放程序,支持多种媒体格式。

MPlayer在处理畸形DMO文件时存在缓冲区溢出漏洞,远程攻击者可能通过诱使用户打开恶意DMO文件控制用户机器。

MPlayer的loader/dmo/DMO_VideoDecoder.c文件中的DMO_VideoDecoder()函数在解析特制的视频文件时存在堆溢出漏洞。format->biSize变量直接从视频文件获得其值,最大可为LONG_MAX。在136行没有执行任何检查便将所获得的值用作了memcpy()调用的长度参数,这可能导致用视频文件中的数据溢出this->m_sVhdr->bmiHeader缓冲区。此外loader/dshow/DS_VideoDecoder.c文件的DS_VideoDecoder_Open()函数也存在类似的漏洞。

117         unsigned int bihs;
118
119         bihs = (format->biSize < (int) sizeof(BITMAPINFOHEADER)) ?
120             sizeof(BITMAPINFOHEADER) : format->biSize;
121
122         this->iv.m_bh = malloc(bihs);
123         memcpy(this->iv.m_bh, format, bihs);
124
125         this->iv.m_State = STOP;
126         //this->iv.m_pFrame = 0;
127         this->iv.m_Mode = DIRECT;
128         this->iv.m_iDecpos = 0;
129         this->iv.m_iPlaypos = -1;
130         this->iv.m_fQuality = 0.0f;
131         this->iv.m_bCapable16b = true;
132
133         bihs += sizeof(VIDEOINFOHEADER) - sizeof(BITMAPINFOHEADER);
134         this->m_sVhdr = malloc(bihs);
135         memset(this->m_sVhdr, 0, bihs);
136         memcpy(&this->m_sVhdr->bmiHeader, this->iv.m_bh, this->iv.m_bh->biSize);

<*来源:Moritz Jodeit (moritz@jodeit.org
  
  链接:http://secunia.com/advisories/24444/
        http://lists.grok.org.uk/pipermail/full-disclosure/2007-March/052738.html
        http://secunia.com/advisories/24443/
*>

建议:
厂商补丁:

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

http://svn.mplayerhq.hu/mplayer/trunk/loader/dmo/DMO_VideoDecoder.c?r1=22019&r2=22204

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