BUGTRAQ ID: 26945 id3lib是用于处理音频文件中ID3标签的函数库。 id3lib库在处理畸形格式的数据时存在漏洞,远程攻击者可能利用此漏洞诱使用户处理恶意文件控制用户系统。 id3lib的extflags数组只有1个单元的大小,但extflagbytes可支持0到255个单元。因此,extflagbytes为0会导致崩溃,因为之后的指令会认为extflags[0]已初始化,使用较大的值就会溢出这个数组。 header_tag.cpp中代码如下: void ID3_TagHeader::ParseExtended(ID3_Reader& reader) ... const int extflagbytes = reader.readChar(); //Number of flag bytes ID3_Flags* extflags[1]; // ID3V2_4_0 has 1 flag byte, extflagbytes should be equal to 1 for (i = 0; i < extflagbytes; ++i) { extflags[i] = new ID3_Flags; extflags[i]->set(reader.readChar()); //flags } id3lib CVS id3lib ------ 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href=http://www.id3lib.org/ target=_blank>http://www.id3lib.org/</a>
BUGTRAQ ID: 26945 id3lib是用于处理音频文件中ID3标签的函数库。 id3lib库在处理畸形格式的数据时存在漏洞,远程攻击者可能利用此漏洞诱使用户处理恶意文件控制用户系统。 id3lib的extflags数组只有1个单元的大小,但extflagbytes可支持0到255个单元。因此,extflagbytes为0会导致崩溃,因为之后的指令会认为extflags[0]已初始化,使用较大的值就会溢出这个数组。 header_tag.cpp中代码如下: void ID3_TagHeader::ParseExtended(ID3_Reader& reader) ... const int extflagbytes = reader.readChar(); //Number of flag bytes ID3_Flags* extflags[1]; // ID3V2_4_0 has 1 flag byte, extflagbytes should be equal to 1 for (i = 0; i < extflagbytes; ++i) { extflags[i] = new ID3_Flags; extflags[i]->set(reader.readChar()); //flags } id3lib CVS id3lib ------ 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href=http://www.id3lib.org/ target=_blank>http://www.id3lib.org/</a>