首页 -> 安全研究

安全研究

安全漏洞
Ntop远程格式串溢出漏洞

发布日期:2002-03-04
更新日期:2002-03-06

受影响系统:
Luca Deri ntop 2.0
描述:
Ntop是一个Unix平台下的工具程序,用于查看网络的使用情况,显示方式与Unix下的top命令相似。这个工具也已经被移植到了Windows平台下(使用libpcap for Win32)。ntop内置了一个Web服务器,可以通过网络使用它。

Ntop实现上存在格式串溢出漏洞,远程攻击者可能利用这个漏洞在主机上以root身份执行任意指令。

问题在于util.c文件中的traceEvent()函数以不安全的方式使用syslog调用,有问题的代码如下:

void traceEvent(int eventTraceLevel, char* file,
  int line, char * format, ...)

...

va_list va_ap;
  va_start (va_ap, format);


...


    char buf[BUF_SIZE];


...


#ifdef WIN32
      /* Windows lacks of vsnprintf */
      vsprintf(buf, format, va_ap);
#else
      vsnprintf(buf, BUF_SIZE-1, format, va_ap);
#endif


      if(!useSyslog) { // syslog() logging is not enabled
        printf(buf); // vulnerability


...


#ifndef WIN32
      else { // syslog() logging is enabled
#if 0
        switch(traceLevel) {
        case 0:
          syslog(LOG_ERR, buf); // 有漏洞
          break;
        case 1:
          syslog(LOG_WARNING, buf); // 有漏洞
          break;
        case 2:
          syslog(LOG_NOTICE, buf); // 有漏洞
          break;
        default:
          syslog(LOG_INFO, buf); // 有漏洞
          break;
        }
#else
        syslog(LOG_ERR, buf);

...

syslog调用正确的用法应该是syslog(LOG_ERR, "%s", buf),这样就可以避免溢出的发生。




<*来源:hologram (holo@brained.org
  
  链接:http://archives.neohapsis.com/archives/bugtraq/2002-03/0023.html
        http://archives.neohapsis.com/archives/bugtraq/2002-03/0026.html
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

hologram (holo@brained.org)提供了如下测试方法:

向服务器程序提交以下的URL会导致ntop程序崩溃:

GET /%s%s%s HTTP/1.0

建议:
临时解决方法:

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

* 给源程序打如下的补丁,重新编译运行。

--- util.c.orig Wed Feb 27 22:40:11 2002
+++ util.c      Wed Feb 27 22:41:51 2002
@@ -2170,7 +2170,7 @@
#endif

       if(!useSyslog) {
-       printf(buf);
+       printf("%s", buf);
        if(format[strlen(format)-1] != '\n')
          printf("\n");
       }
@@ -2179,20 +2179,20 @@
#if 0
        switch(traceLevel) {
        case 0:
-         syslog(LOG_ERR, buf);
+         syslog(LOG_ERR, "%s", buf);
          break;
        case 1:
-         syslog(LOG_WARNING, buf);
+         syslog(LOG_WARNING, "%s", buf);
          break;
        case 2:
-         syslog(LOG_NOTICE, buf);
+         syslog(LOG_NOTICE, "%s", buf);
          break;
        default:
-         syslog(LOG_INFO, buf);
+         syslog(LOG_INFO, "%s", buf);
          break;
        }
#else
-       syslog(LOG_ERR, buf);
+       syslog(LOG_ERR, "%s", buf);
#endif
       }
#endif

厂商补丁:

Luca Deri
---------
目前厂商已经在最新版本的软件中修复这个安全问题,请到厂商的主页下载:

http://www.ntop.org/ntop.html

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