漏洞信息详情
ATP httpd远程单字节缓冲区溢出漏洞
- CNNVD编号:CNNVD-200212-489
- 危害等级: 高危
- CVE编号:
CVE-2002-1816
- 漏洞类型:
边界条件错误
- 发布时间:
2002-10-14
- 威胁类型:
远程
- 更新时间:
2005-10-20
- 厂 商:
yann_ramin - 漏洞来源:
thread of Pyramid … -
漏洞简介
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