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

漏洞信息详情

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

漏洞简介

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

漏洞公告

临时解决方法:
如果您不能立刻安装补丁或者升级,CNNVD建议您采取以下措施以降低威胁:

* 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/” target=”_blank”>
http://www.redshift.com/~yramin/atp/atphttpd/

参考网址

来源: BID
名称: 5956
链接:http://www.securityfocus.com/bid/5956

来源: XF
名称: atphttpd-sockgets-bo(10362)
链接:http://www.iss.net/security_center/static/10362.php

来源: SECUNIA
名称: 7293
链接:http://secunia.com/advisories/7293

来源: BUGTRAQ
名称: 20021012 Pyramid Research Project – atphttpd security advisorie
链接:http://archives.neohapsis.com/archives/bugtraq/2002-10/0187.html

来源:NSFOCUS
名称:3670
链接:http://www.nsfocus.net/vulndb/3670

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享