【聚杰网本地越权访问】VLC媒体播放器demux/tta.c TTA文件处理堆溢出漏洞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
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
建议:
厂商补丁:
VideoLAN
--------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.videolan.org/




