Lucene search

K
seebugRootSSV:3155
HistoryApr 13, 2008 - 12:00 a.m.

FishSound库远程Speex解码代码执行漏洞

2008-04-1300:00:00
Root
www.seebug.org
15

0.066 Low

EPSS

Percentile

93.0%

BUGTRAQ ID: 28665
CVE(CAN) ID: CVE-2008-1686

fishsound库提供一个编程接口,允许使用Xiph.Org codec(FLAC、Speex和Vorbis)编码和解码音频数据。

fishsound库所使用的Speex库在处理Speex头时存在数组索引错误,如果特制的Speex流在头中包含有负数的modeID字段的话就可能导致执行任意指令。

Speex头中包含有32位的modeID字段,libspeex将其解释为有符的int型(spx_int32_t)。正常的使用方法是索引到全局模式列表以检索SpeexMode *:

mode = (SpeexMode *)speex_mode_list[modeID];

然后创建解码器:

st = speex_decoder_init(mode);

这会在libspeex中调用speex_decoder_init(),类似于:

void *speex_decoder_init(const SpeexMode *mode)
{
return mode->dec_init(mode);
}

因此如果没有保证流头中所给出的modeID处于speex_mode_list[]范围中,就会导致执行任意指令。fishsound检查了上边界(modeID < SPEEX_NB_MODES),但没有检查负数值。

CSIRO FishSound <= 0.9.0
CSIRO

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

<a href=“http://www.annodex.net/software/libfishsound/download/libfishsound-0.9.1.tar.gz” target=“_blank”>http://www.annodex.net/software/libfishsound/download/libfishsound-0.9.1.tar.gz</a>