栏目导航: 首页 > 漏洞预警 > 数据库类 > 内容

SDL_image LWZ Minimum Code Size缓冲区溢出漏洞

www.hx99.net    时间: 2009-12-31    阅读: 次     整理: 华西安全网

受影响:
SDL SDL_Image 1.2.6

不受影响:
SDL SDL_Image 1.2.7

描述:
SDL_Image是用于处理图形文件的开源函数库。 []

SDL_Image在处理畸形格式的图形文件时存在,远程者可能利用此通过诱使用户处理恶意文件控制用户。 内容来自"华西黑客联盟"

SDL_Image库没有正确地处理Table Based Image Data头中带有无效LWZ Minimum Code Size的图形文件。标准允许代码的最大大小为12位,但SDL_image没有执行检查,因此可能触发缓冲区溢出。以下是IMG_gif.c文件的ReadImage函数中的代码:

...
    unsigned char c;
...
    if (LWZReadByte(src, TRUE, c) < 0) {
    RWSetMsg("error reading image");
    return NULL;
    }
    /*
    **    If this is an "uninteresting picture" ignore it.
     */
    if (ignore) {
    while (LWZReadByte(src, FALSE, c) >= 0)
        ;
    return NULL;
    }
...

请注意c值未经任何检查便传送给了LZWReadByte。

然后在LWZReadByte函数中可能会触发栈溢出:

LWZReadByte(SDL_RWops *src, int flag, int input_code_size)
...
    static int table[2][(1 << MAX_LWZ_BITS)];
...
    set_code_size = input_code_size;
...
    clear_code = 1 << set_code_size;
...
    for (i = 0; i < clear_code; ++i) {
        table[0][i] = 0;
        table[1][i] = i;
    }
...

厂商补丁:
目前厂商已经发布了升级补丁以修复这个问题,请到厂商的主页下载:
http://www.libsdl.org/cgi/viewvc.cgi/trunk/SDL_image/IMG_gif.c?r1=2970&r2=3462
 

  WWW.


本文来源:华西安全网[http://www.hx99.net]
发表评论】【告诉QQ好友】【错误报告】【加入收藏】【关闭