VLC媒体播放器demux\tta.c TTA文件处理堆溢出漏洞

受影响系统:
VideoLAN Media 0.8.6i
描述:  ID: 30718
Media 是一款免费的媒体播放器。
媒体播放器的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://milw0rm.com/sploits/2008-vlc.dos.tta
建议:
——————————————————————————–
厂商补丁:
VideoLAN
——–
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.videolan.org/

Share/Save/Bookmark

Related Posts Preference

Leave a Reply