安全研究

安全漏洞
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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障