BUGTRAQ ID: 27047
Extended Module Player(XMP)是用于播放老式MOD文件的命令行播放器。
XMP实现上存在多个缓冲区溢出漏洞,远程攻击者可能利用此漏洞控制用户系统。
---------------------------------------------
A] test_oxm/decrunch_oxm缓冲区溢出
---------------------------------------------
由于可以绕过ilen > 263的检查,导致处理OXM文件格式的函数中存在缓冲区溢出,将ilen设置为负值就可以触发这个溢出,导致执行任意指令。以下是misc/oxm.c文件中的漏洞代码:
int test_oxm(FILE *f)
{
int i, j;
int hlen, npat, len, plen;
int nins, nsmp, ilen;
int slen[256];
uint8 buf[1024];
...
ilen = read32l(f);
if (ilen > 263)
return -1;
fseek(f, -4, SEEK_CUR);
fread(buf, ilen, 1, f); /* instrument header */
...
------------------------------
B] dtt_load缓冲区溢出
------------------------------
dtt_load()函数中的溢出允许用任意数据覆盖pofs和plen数组,以下是loaders/dtt_load.c中的漏洞代码:
static int dtt_load(struct xmp_context *ctx, FILE *f, const int start)
...
uint32 pofs[256];
uint8 plen[256];
int sdata[64];
...
m->xxh->pat = read32l(f);
...
for (i = 0; i < m->xxh->pat; i++)
pofs[i] = read32l(f);
...
Extended Module Player xmp 2.5.1
Extended Module Player
----------------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
<a href=http://xmp.sourceforge.net/ target=_blank>http://xmp.sourceforge.net/</a>
暂无评论