安全研究

安全漏洞
libaudiofile库msadpcm.c WAV文件处理缓冲区溢出漏洞

发布日期:2008-12-30
更新日期:2008-12-31

受影响系统:
Michael Pruett Audio File Library 0.2.6
描述:
BUGTRAQ  ID: 33066
CVE(CAN) ID: CVE-2008-5824

Audio File Library库(libaudiofile)可为访问各种音频文件格式提供统一的API。

libaudiofile库在试图解码WAV文件时msadpcm.c的194行写过了缓冲区:

  code = *encoded >> 4;
  newSample = ms_adpcm_decode_sample(state[0], code,
          coefficient[0]);
  *decoded++ = newSample;

所分配的缓冲区大小主要取决于以下公式:

  bufsize = outc->nframes * _af_format_frame_size(&outc->f, AF_TRUE);

由于msadpcm模块没有实现max_pull callback,outc->nframes主要来自于_AF_ATOMIC_NVFRAMES(1024),这导致在modules.c的2539行分配了4096字节(帧大小为4)。

在ms_adpcm_decode_block()中,msadpcm->samplesPerBlock设置为2036,outputLength为8144,很明显这超出了所分配的4096字节的缓冲区。

<*来源:Anton Khirnov
  
  链接:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=510205
        http://musicpd.org/mantis/print_bug_page.php?bug_id=1915
*>

测试方法:

警 告

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

http://filebin.ca/meqmyu/max_theme.wav

建议:
厂商补丁:

Michael Pruett
--------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.68k.org/~michael/audiofile/

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