Extended Module Player oxm.c及dtt_load.c文件多个本地溢出漏洞
发布日期:2007-12-28
更新日期:2007-12-28
受影响系统:Extended Module Player xmp 2.5.1
描述:
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);
...
<*来源:Luigi Auriemma (
aluigi@pivx.com)
链接:
http://marc.info/?l=bugtraq&m=119878252006304&w=2
http://secunia.com/advisories/28223/
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
http://aluigi.org/poc/xmpbof.zip建议:
厂商补丁:
Extended Module Player
----------------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://xmp.sourceforge.net/浏览次数:3359
严重程度:0(网友投票)