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>
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>