安全研究

安全漏洞
VLC Media Player sdpplin_parse() RTSP堆溢出漏洞

发布日期:2008-01-10
更新日期:2008-01-11

受影响系统:
VideoLAN VLC Media Player <= 0.8.6b
描述:
BUGTRAQ  ID: 27221
CVE(CAN) ID: CVE-2008-0295,CVE-2008-0296

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

VLC在处理畸形格式的数据时存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制用户系统。

VLC所使用的旧版Xine库在modules/access/rtsp/real_sdpplin.c文件中存在堆溢出漏洞:

sdpplin_t *sdpplin_parse(char *data) {

  sdpplin_t        *desc = malloc(sizeof(sdpplin_t));
  sdpplin_stream_t *stream;
  char             *buf=malloc(3200);
  char             *decoded=malloc(3200);
  ...
  while (data && *data) {
    handled=0;

    if (filter(data, "m=", &buf)) {
    ...

static int filter(const char *in, const char *filter, char **out) {

  int flen=strlen(filter);
  int len;

  if (!in) return 0;

  len = (strchr(in,'\n')) ? strchr(in,'\n')-in : strlen(in);
  if (!strncmp(in,filter,flen)) {
    if(in[flen]=='"') flen++;
    if(in[len-1]==13) len--;
    if(in[len-1]=='"') len--;
    memcpy(*out, in+flen, len-flen+1);
    (*out)[len-flen]=0;
    return len-flen;
  }
  return 0;
}


在读取RTSP会话的SDP参数时buf和decoded缓冲区会被溢出。

此外Windows版本的播放器的libaccess_realrtsp插件在处理RTSP数据时也存在堆溢出漏洞。如果在连接时发送了大量字节的话,就额可以触发这个溢出。

<*来源:Luigi Auriemma (aluigi@pivx.com
  
  链接:http://secunia.com/advisories/28383/
        http://aluigi.altervista.org/adv/vlcxhof-adv.txt
        http://security.gentoo.org/glsa/glsa-200803-13.xml
*>

测试方法:

警 告

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

m=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA...more_than_3200_chars...AAAAA
或者
a=Title:buffer;AAAAAAAAAAAAAAAAAAAAAAAAA...more_than_6400_chars...AAAAA

建议:
厂商补丁:

Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200803-13)以及相应补丁:
GLSA-200803-13:VLC: Multiple vulnerabilities
链接:http://security.gentoo.org/glsa/glsa-200803-13.xml

所有VLC用户都应升级到最新版本:

    # emerge --sync
    # emerge --ask --oneshot --verbose ">=media-video/vlc-0.8.6e"

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