XFree86 fbglyph 存在拒绝服务攻击发布时间:2001-12-11 更新时间:2001-12-11 严重程度:中 威胁程度:远程拒绝服务 错误类型:输入验证错误 利用方式:服务器模式 受影响系统 XFree86 X11R6 4.0详细描述 XFree86 4.x 存在一个内存破坏/缓冲溢出攻击,这个漏洞可以使用KDE Web 浏览器 /文件管理应用程序"Konqueror"来产生导致拒绝服务攻击。也可能存在攻击者在 运行X 服务程序的机器上获得权限提升。 在下面的条件下可产生问题: 1)当Konqueror 浏览器处理在实际浏览窗口超长的字符串时候(如从浏览器粘贴 超长字符串到远程站点)。 2)在Konqueror文件管理程序中双击超长文件名的文件。 测试代码 尚无 解决方案 采用如下补丁程序: 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) 相关信息 参考:http://www.securityfocus.com/archive/1/244322 http://www.securityfocus.com/archive/1/244393 |