Xinet拒绝连接内存泄露远程拒绝服务攻击漏洞
发布日期:2003-04-18
更新日期:2003-04-23
受影响系统:Xinetd Xinetd 2.3.9
Xinetd Xinetd 2.3.8
Xinetd Xinetd 2.3.7
Xinetd Xinetd 2.3.5
Xinetd Xinetd 2.3.4
Xinetd Xinetd 2.3.3
Xinetd Xinetd 2.3.2
Xinetd Xinetd 2.3.10
Xinetd Xinetd 2.3.1
Xinetd Xinetd 2.3
Xinetd Xinetd 2.3.6
- Conectiva Linux 8.0
- Mandrake Linux 8.2
不受影响系统:Xinetd Xinetd 2.3.11
描述:
BUGTRAQ ID:
7382
CVE(CAN) ID:
CVE-2003-0211
Xinetd是一个来源于BSD inetd的安全替代产品,最初是由
panos@cs.colorado.edu开发的。
Xinetd当连接被拒绝时会发生内存泄露,远程攻击者可以利用这个漏洞对xinetd服务进行拒绝服务攻击。
问题存在于service.c代码中:
void svc_request( struct service *sp )
{
connection_s *cp ;
status_e ret_code;
cp = conn_new( sp ) ;
if ( cp == CONN_NULL )
return ;
if (sp->svc_not_generic)
ret_code = spec_service_handler(sp, cp);
else
ret_code = svc_generic_handler(sp, cp);
if ( ret_code != OK )
{
if ( SVC_LOGS_USERID_ON_FAILURE( sp ) )
if( spec_service_handler( LOG_SERVICE( ps ), cp ) == FAILED ) {
conn_free( cp, 1 );
return;
}
CONN_CLOSE(cp);
}
}
上面代码存在一些问题,xinetd中的sigchld处理程序(child_exit->server_end->
svc_postmortem)一般用于释放连接数据,如果ret_code返回非真,连接就仅仅关闭而已,而不是调用close(cp->co_descriptor); 由于sigchld不调用而不释放cp。cp指向的内存区域为144字节,大量的拒绝连接可导致消耗大量系统内存而发生拒绝服务。
不过此漏洞仅仅存在Xinetd配置为能拒绝错误连接的情况下产生。
<*来源:Steve Grubb (
linux_4ever@yahoo.com)
链接:
http://marc.theaimsgroup.com/?l=bugtraq&m=105068673220605&w=2
*>
建议:
厂商补丁:
Xinetd
------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
Xinetd Upgrade xinetd-2.3.11.tar.gz
http://www.xinetd.org/xinetd-2.3.11.tar.gz浏览次数:3278
严重程度:0(网友投票)