[请教]GD图形库远程拒绝服务漏洞如何解决
“GD库在加载GIF时LZW解码中存在漏洞。在解码特制的图形时,如用特制的GIF数据调用了gdImageCreateFromGifPtr(),就会导致死循环,消耗100%的CPU资源,造成拒绝服务。”
如DZ&phpwind论坛现在都不敢开水印了,或者服务器把GD库关了。
6月份这个bug就出了到现在好像也没有出正式补丁,网上有一种非官方解决方法:
diff -r -c gd-2.0.33.orig/gd_gif_in.c gd-2.0.33/gd_gif_in.c
*** gd-2.0.33.orig/gd_gif_in.c Mon Nov 1 19:28:56 2004
--- gd-2.0.33/gd_gif_in.c Fri Apr 7 09:04:10 2006
***************
*** 417,422 ****
--- 417,423 ----
GetCode(fd, code_size, FALSE,
ZeroDataBlockP);
return firstcode;
} else if (code == end_code) {
+ int maxcount = 1024;
int count;
unsigned char buf[260];
***************
*** 423,432 ****
if (*ZeroDataBlockP)
return -2;
! while ((count = GetDataBlock(fd, buf,
ZeroDataBlockP)) > 0)
;
! if (count != 0)
return -2;
}
--- 424,433 ----
if (*ZeroDataBlockP)
return -2;
! while ((count = GetDataBlock(fd, buf,
ZeroDataBlockP)) > 0 && --maxcount >= 0)
;
! if (count != 0 maxcount < 0)
return -2;
}
偶是菜鸟 上面这段代码放到哪?有人知道吗?