安全研究

安全漏洞
XFree86 Xserver  远程拒绝服务漏洞

发布日期:2000-05-25
更新日期:2000-05-26

受影响系统:
XFree86 X11R6 4.0
XFree86 X11R6 3.3.6
   - RedHat Linux 6.2 i386
XFree86 X11R6 3.3.5
   - RedHat Linux 6.1 i386
描述:

XFree86 3.3.5, 3.3.6 和 4.0存在一个拒绝服务漏洞。如果远程用户发送一个错误格式的包到
X server正在监听的6000端口,将使X server停止响应一段时间,这个时间视CPU的速度不等,
可能是几分钟或者更长。在这期间,键盘,鼠标均会停止响应(4.0下鼠标仍然可以响应),X server
将会占用%100的CPU 时间。只有在编译时定义了XCSECURITY宏的XFree86 server受这个漏洞的影响,
用户可以通过下列命令检查是否自己的X server是有问题的:

strings /path/to/XF86_SVGA | grep "XC-QUERY-SECURITY-1"

有问题的代码在:xc/programs/Xserver/os/secauth.c, AuthCheckSitePolicy()函数中:

// dataP 是用户提供的数据
char        *policy = *dataP;
int         nPolicies;
...
// 如果我们让 nPolicies 初始值为-1...
nPolicies = *policy++;
while (nPolicies) {
...
  nPolicies--;
}

我们看到,如果计数器"nPolicies"初始值设置成 -1 ,再减下去将进行20亿次的循环,计数器才能
减少到零。这将大量占用CPU时间,导致拒绝服务攻击发生。

<* 来源:Chris Evans <chris@ferret.lmh.ox.ac.uk> *>



建议:
临时解决办法:

使用"-nolisten tcp"参数运行X server,这样X server将不会通过网络接受客户连接。

浏览次数:7023
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障