安全研究

安全漏洞
VLC媒体播放器XSPF文件处理内存破坏漏洞

发布日期:2008-10-14
更新日期:2008-10-17

受影响系统:
VideoLAN VLC Media Player 0.9.2
不受影响系统:
VideoLAN VLC Media Player 0.9.4
描述:
BUGTRAQ  ID: 31758
CVE(CAN) ID: CVE-2008-4558

VLC Media Player是一款免费的媒体播放器。

VLC媒体播放器支持基于XML的XSPF播放列表格式。XSPF播放列表中包含有一些属性,如identifier、location、title和duration等。其中identifier属性是用于说明音轨列表中音轨位置的数字值。

VLC媒体播放器的XSPF播放列表格式解析器(demux/playlist/xspf.c)在使用identifier属性值索引堆上写入数据的数组之前没有正确的执行边界检查。解析器读取了音轨的identifier属性并使用标准C库的atoi函数将这个值转换为int类型,然后保存到demux_sys_t结构的i_identifier字段:

/-----------

575            else if( !strcmp( p_handler->name, "identifier" ) )
576             {
577                 p_demux->p_sys->i_identifier = atoi( psz_value );
578             }

- -----------/

之后在501-502行解析器将i_identifier与i_tracklist_entries做比较,后一个字段是用于记录已成功解析的音轨列表项数目的计数器。如果i_identifier小于i_tracklist_entries的话,就会使用i_identifier的值索引pp_tracklist数组,并在该位置(505行)写入p_new_input。

/-----------

501        if( p_demux->p_sys->i_identifier <
502                      p_demux->p_sys->i_tracklist_entries )
503                 {
504                     p_demux->p_sys->pp_tracklist[
505                         p_demux->p_sys->i_identifier ] = p_new_input;
506                 }

- -----------/

由于XSPF解析器在索引所要写入数组之前没有执行边界检查,且i_identifier为用户可控,攻击者可以通过p_new_input覆盖任意内存位置。以下是有反汇编的有漏洞代码段:

/-----------

70246981   .  39C2          CMP EDX,EAX                              ;
i_identifier < i_tracklist_entries?
70246983   .  7D 29         JGE SHORT libplayl.702469AE
70246985   .  8B2B          MOV EBP,DWORD PTR DS:[EBX]               ;
EBP = pp_tracklist = 0
70246987   .  8B7C24 44     MOV EDI,DWORD PTR SS:[ESP+44]            ;
EDI = p_new_input
7024698B   .  897C95 00     MOV DWORD PTR SS:[EBP+EDX*4],EDI         ;
Saves p_new_input in pp_tracklist[i_identifier]

- -----------/

<*来源:Francisco Falcon
  
  链接:http://secunia.com/advisories/32267/
        http://marc.info/?l=bugtraq&m=122408433102621&w=2
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

http://www.milw0rm.com/exploits/6756

建议:
厂商补丁:

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

http://www.videolan.org/vlc/

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