FishSound库 远程Speex 解码代码执行漏洞 CVE-2008-1686 CNNVD-200804-094

9.3 AV AC AU C I A
发布: 2008-04-08
修订: 2018-10-11

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),但没有检查负数值。

0%
暂无可用Exp或PoC
当前有40条受影响产品信息