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(网友投票)