CVE:CVE-2003-0211
CNNVD:CNNVD-200305-002
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配置为能拒绝错误连接的情况下产生。
solution:Upgrade xinetd xinetd to a higher version than 2.3.0,2.3.1,2.3.2,2.3.3,2.3.4,2.3.5,2.3.6,2.3.7,2.3.8,2.3.9,2.3.10,and avoid the version 2.3.0,2.3.1,2.3.2,2.3.3,2.3.4,2.3.5,2.3.6,2.3.7,2.3.8,2.3.9,2.3.10