CVE:CVE-2002-1816
CNNVD:CNNVD-200212-489
ATP httpd是一款轻量级的HTTP服务器程序。
ATP httpd中sock_gets()函数对接收到的数据缺少正确的缓冲区边界检查，远程攻击者可以利用这个漏洞进行缓冲区溢出漏洞，以root用户的权限在系统上执行任意指令。
缓冲区溢出发生在当sock_gets()函数接收到字符串时，函数会接收'count'大小个字符并在最后字符串中追加NULL字符，如果'count'变量值等于传递个这个函数第一参数的字符串大小，就会导致单字节溢出。
下面是问题所在(在'total_count'和'count'之间对比没有预见NULL字符会追加到字符串中)：
        sockhelp.c:311:    if ( (total_count < count) && (last_read != 10) && (last_read !=13) )
        sockhelp.c:{
        sockhelp.c:312:      current_position[0] = last_read;
        sockhelp.c:313:      current_position++;
        sockhelp.c:314:      total_count++;
        sockhelp.c:315:    }
        sockhelp.c:316:  }
        sockhelp.c:317:  if (count > 0)
由于不正确的对比，指向字符串的指针'str'会接收到'count'+1字节的数据导致缓冲区溢出：
        sockhelp.c:318:    current_position[0] = 0;
        sockhelp.c:319:  return total_count;
        sockhelp.c:320:}
由于此HTTP服务程序是单线程结构，守护进程没有设计权限分离，因此需要以root用户权限监听TCP/80端口，任何缓冲区溢出可以导致以root用户权限在系统上执行任意指令。
solution:Upgrade yann_ramin atphttpd to a higher version than 0.4,0.4b,and avoid the version 0.4,0.4b