找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1164|回复: 1

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

[复制链接]

18

主题

236

回帖

323

牛毛

一级牛人

积分
323
发表于 2008-7-29 09:45:18 | 显示全部楼层 来自 吉林省通化市集安市
虽然看不明白,但还是支持~~~~~~~

586

主题

167

回帖

1015

牛毛

二级牛人

本無情,何必去愛

积分
1015
QQ
 楼主| 发表于 2008-1-29 18:38:34 | 显示全部楼层 |阅读模式 来自 浙江省杭州市
SDL_image LWZ Minimum Code Size缓冲区溢出漏洞
受影响系统:
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] = 0;
    table[1] = i;
  }
...

厂商补丁:
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://www.libsdl.org/cgi/viewvc ... r1=2970&r2=3462
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5用户社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-1-13 09:29 , Processed in 0.111948 second(s), 20 queries , Yac On.

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表