XFree86 fbglyph 拒绝服务漏洞
发布日期:2001-12-08
更新日期:2001-12-14
受影响系统:XFree86 X11R6 4.0
XFree86 X11R6 4.0.1
+ RedHat Linux 7.0
XFree86 X11R6 4.0.3
+ RedHat Linux 7.1
不受影响系统:XFree86 X11R6 4.1.0
描述:
BUGTRAQ ID: 3657
CVE(CAN) ID:
CAN-2001-0955
XFree86是流行的X服务器。
XFree86 4.x存在一个未检查的缓冲区溢出漏洞,目前已被证实可以发起拒绝服务攻
击。
当在Konqueror浏览器的浏览窗口提交超长的数据或在Konqueror文件管理器双击超长文
件名的文件时,将导致X服务器崩溃,一般需要超过9000个字符。
<*来源:scott (
smackenz@sdf.lonestar.org)
链接:
http://archives.neohapsis.com/archives/bugtraq/2001-12/0069.html
*>
建议:
临时解决方法:
如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:
* 应用下面第三方的补丁:
Index: fbglyph.c
===================================================================
RCS file: /xf86/xc/programs/Xserver/fb/fbglyph.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- fbglyph.c 2001/05/29 04:54:09 1.11
+++ fbglyph.c 2001/09/07 15:16:00 1.12
@@ -34,9 +34,19 @@
int height)
{
BoxRec box;
+ BoxPtr pExtents = REGION_EXTENTS (0, pRegion);
- if (x + width < 0) return FALSE;
- if (y + height < 0) return FALSE;
+ /*
+ * Check extents by hand to avoid 16 bit overflows
+ */
+ if (x < (int) pExtents->x1)
+ return FALSE;
+ if ((int) pExtents->x2 < x + width)
+ return FALSE;
+ if (y < (int) pExtents->y1)
+ return FALSE;
+ if ((int) pExtents->y2 < y + height)
+ return FALSE;
box.x1 = x;
box.x2 = x + width;
box.y1 = y;
@@ -261,10 +271,10 @@
FbBits,
int,
int);
- FbBits *dst;
- FbStride dstStride;
- int dstBpp;
- int dstXoff, dstYoff;
+ FbBits *dst = 0;
+ FbStride dstStride = 0;
+ int dstBpp = 0;
+ int dstXoff = 0, dstYoff = 0;
glyph = 0;
if (pGC->fillStyle == FillSolid && pPriv->and == 0)
@@ -352,10 +362,10 @@
FbBits,
int,
int);
- FbBits *dst;
- FbStride dstStride;
- int dstBpp;
- int dstXoff, dstYoff;
+ FbBits *dst = 0;
+ FbStride dstStride = 0;
+ int dstBpp = 0;
+ int dstXoff = 0, dstYoff = 0;
glyph = 0;
if (pPriv->and == 0)
厂商补丁:
厂商已经发布了升级版本4.1.0以修复此安全问题,请立刻到厂商的主页下载最新版本
:
http://www.xfree86.org/
浏览次数:3507
严重程度:0(网友投票)