VLC媒体播放器demux\tta.c TTA文件处理堆溢出漏洞
发布日期:2008-08-16
更新日期:2008-08-19
受影响系统:VideoLAN VLC Media Player 0.8.6i
描述:
BUGTRAQ ID:
30718
CVE(CAN) ID:
CVE-2008-3732
VLC Media Player是一款免费的媒体播放器。
VLC媒体播放器的modules/demux/tta.c文件的Open()函数中存在整数溢出漏洞:
#define TTA_FRAMETIME 1.04489795918367346939
.
.
.
int i_seektable_size = 0, i;
.
.
.
/* Read the metadata */
es_format_Init( &fmt, AUDIO_ES, VLC_FOURCC( 'T', 'T', 'A', '1' ) );
fmt.audio.i_channels = GetWLE( &p_header[6] );
fmt.audio.i_bitspersample = GetWLE( &p_header[8] );
fmt.audio.i_rate = GetDWLE( &p_header[10] );
p_sys->i_datalength = GetDWLE( &p_header[14] );
p_sys->i_framelength = TTA_FRAMETIME * fmt.audio.i_rate;
p_sys->i_totalframes = p_sys->i_datalength / p_sys->i_framelength +
((p_sys->i_datalength % p_sys->i_framelength) ? 1 : 0);
p_sys->i_currentframe = 0;
i_seektable_size = sizeof(uint32_t)*p_sys->i_totalframes;
p_seektable = (uint8_t *)malloc( i_seektable_size );
stream_Read( p_demux->s, p_seektable, i_seektable_size );
p_sys->pi_seektable = (uint32_t *)malloc(i_seektable_size);
for( i = 0; i < p_sys->i_totalframes; i++ )
p_sys->pi_seektable[i] = GetDWLE( &p_seektable[i*4] );
如果用户受骗打开了特制的TTA文件的话,就可以触发堆溢出,导致执行任意指令。
<*来源:g_ (
g_@orange-bat.com)
链接:
http://secunia.com/advisories/31512/
http://www.orange-bat.com/adv/2008/adv.08.16.txt
http://security.gentoo.org/glsa/glsa-200809-06.xml
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://milw0rm.com/sploits/2008-vlc.dos.tta建议:
厂商补丁:
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200809-06)以及相应补丁:
GLSA-200809-06:VLC: Multiple vulnerabilities
链接:
http://security.gentoo.org/glsa/glsa-200809-06.xml
所有VLC用户都应升级到最新版本:
# emerge --sync
# emerge --ask --oneshot --verbose ">=3Dmedia-video/vlc-0.8.6i-r2"
浏览次数:3149
严重程度:0(网友投票)