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(网友投票)