首页 -> 安全研究

安全研究

安全漏洞
ATP httpd远程单字节缓冲区溢出漏洞

发布日期:2002-10-14
更新日期:2002-10-18

受影响系统:
Yann Ramin ATPhttpd 0.4 b
Yann Ramin ATPhttpd 0.4
描述:
BUGTRAQ  ID: 5956
CVE(CAN) ID: CVE-2002-1816

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用户权限在系统上执行任意指令。

<*来源:thread of Pyramid Research
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=103463384231497&w=2
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* PYR/\MID Resarch Poject提供如下第三方补丁:

- ------ cut here ------
+++ sockhelp.c  Sun Oct  6 02:37:05 2002
@@ -301,6 +301,8 @@ size_t count;
   char *current_position;
   char last_read = 0;

+  count--;
+
   current_position = str;
   while (last_read != 10) {
     bytes_read = read(sockfd, &last_read, 1);
- ------ cut here ------

厂商补丁:

Yann Ramin
----------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.redshift.com/~yramin/atp/atphttpd/

浏览次数:2878
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障