首页 -> 安全研究

安全研究

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