CVE:CVE-2007-6682
CNNVD:CNNVD-200801-244
VideoLAN VLC media player是法国VideoLAN组织开发的一款免费、开源的跨平台多媒体播放器（也是一个多媒体框架）。该产品支持播放多种介质（文件、光盘等）、多种音视频格式（WMV, MP3等）等。
VLC Media Player处理用户请求数据时存在缓冲区溢出漏洞，远程攻击者可能利用此漏洞通过诱使用户处理恶意数据控制用户系统。
---------------------------------------------------
A] 字幕处理缓冲区溢出
---------------------------------------------------
VLC在处理字幕时仅检查是否存在与加载视频同名的ssa文件及可能的字幕文件夹。用于处理MicroDvd、SSA和Vplayer字幕格式的函数中存在多个栈溢出漏洞，可能允许攻击者执行任意代码。modules\demux\subtitle.c文件中有漏洞的代码如下：
static int ParseMicroDvd( demux_t *p_demux, subtitle_t *p_subtitle )
    ...
    char buffer_text[MAX_LINE + 1];
    ...
        if( sscanf( s, "{%d}{}%[^\r\n]", &i_start, buffer_text ) == 2 ||
            sscanf( s, "{%d}{%d}%[^\r\n]", &i_start, &i_stop, buffer_text ) == 3)
static int  ParseSSA( demux_t *p_demux, subtitle_t *p_subtitle )
    ...
    char buffer_text[ 10 * MAX_LINE];
    char buffer_text2[ 10 * MAX_LINE];
    ...
        if( sscanf( s,
                    "Dialogue: %[^,],%d:%d:%d.%d,%d:%d:%d.%d,%[^\r\n]",
                    buffer_text2,
                    &h1, &m1, &s1, &c1,
                    &h2, &m2, &s2, &c2,
                    buffer_text ) == 10 )
static int  ParseVplayer( demux_t *p_demux, subtitle_t *p_subtitle )
    ...
    char buffer_text[MAX_LINE + 1];
    ...
        if( sscanf( p, "%d:%d:%d%[ :]%[^\r\n]", &h, &m, &s, &c, buffer_text ) == 5 )
-------------------------------------
B] Web接口格式串漏洞
-------------------------------------
可通过默认运行于8080端口的Web接口远程控制VLC。用于处理客户端所发送的Connection参数的指令缺少必要的格式参数便将内容传送给了httpd_MsgAdd函数，此外服务器在回复中发送回新形成的Connection字段，这有助于攻击者调整攻击，增加了成功攻击的概率。network\httpd.c文件中的有漏洞代码如下：
static int httpd_FileCallBack( httpd_callback_sys_t *p_sys, httpd_client_t *cl, \
                httpd_message_t *answer, httpd_message_t *query )
    ...
    psz_connection = httpd_MsgGet( &cl->query, "Connection" );
    if( psz_connection != NULL )
    {
        httpd_MsgAdd( answer, "Connection", psz_connection );
    }
solution:Upgrade videolan vlc to a higher version than 0.8.6d,and avoid the version (,0.8.6d]