RE: [H20020304]: Remotely exploitable format string vulnerability in ntop

From: Burton M. Strauss III (BStraussat_private)
Date: Tue Mar 05 2002 - 05:44:46 PST

  • Next message: David Litchfield: "Buffer Overrun in Talentsoft's Web+ (#NISR01032002A)"

    The existence of this bug - but NOTHING about it's security implications -
    was posted by one "Peter Suschlik (peterat_private)" to the ntop-dev mailing
    list on 28Feb2002:
    
    http://listmanager.unipi.it/pipermail/ntop-dev/2002-February/000489.html
    
    I'm not ntop's author (Luca Deri), so I can't speak as to whether this is
    the same individual, or whether an attempt was made to contact the
    developers.
    
    
    The source was corrected in snapshots (available at
    http://snapshot.ntop.org) beginning with ntop-02-03-01.tgz and all
    subsequent versions.
    
    Although this bug may allow for arbitrarily code execution, the risk is
    limited if the user follows good practices.  Still, an upgrade to snapshot
    versions on/after 01Mar2002 is recommended to all ntop users.
    
    ntop requires root privileges at startup in order to place the network
    interface into promiscuous mode.  ntop provides the -u <username> parameter
    to allow ntop to run as an unprivileged user, as soon as possible after
    execution begins.  This occurs BEFORE the web server is started.  If the
    user continues to run as root, a WARNING message is displayed.
    
    A pending patch will further tighten down the security screen on requested
    URLs.
    
    This message is being copied to the two ntop mailing lists and I will also
    add this information to the ntop community FAQs, also available at snapshot.
    
    -----Burton
    
    
    
    -----Original Message-----
    From: hologram [mailto:holoat_private]
    Sent: Monday, March 04, 2002 6:46 AM
    To: bugtraqat_private
    Subject: [H20020304]: Remotely exploitable format string vulnerability
    in ntop
    
    
    
            h o l o g r a m  |  s e c u r i t y  |  a d v i s o r y
    _______________________________________________________________________
    
    
                           Advisory ID : H20020304
                              Software : ntop
                              Synopsis : Remotely exploitable format
                                         string vulnerability in ntop.
                                Vendor : Luca Deri <www.ntop.org>
                              Verified : Version 2.0
                                Author : hologram <holoat_private>
    
    _______________________________________________________________________
    
    
    | Overview |-----------------------------------------------------------
    
    ntop is a UNIX tool that shows the network usage, similar to what the
    popular top UNIX command does on the system level. A format string
    vulnerability has been discovered on the programmatic level and
    is currently known to affect the UNIX version, however, the Windows
    port of the program remains untested. The vulnerability allows
    for remote arbitrary code execution.
    
    | Vulnerability |------------------------------------------------------
    
    The format string vulnerability lies within the traceEvent() function
    which is declared as:
    
    void traceEvent(int eventTraceLevel, char* file,
      int line, char * format, ...)
    
    in the file util.c. The third argument, as is apparent, is a format
    string to be later manipulated by the traceEvent() call.
    
    Further into the code, the following is made visible:
    
    ...
    
      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);  // vulnerability
    	  break;
    	case 1:
    	  syslog(LOG_WARNING, buf);  // vulnerability
    	  break;
    	case 2:
    	  syslog(LOG_NOTICE, buf);  // vulnerability
    	  break;
    	default:
    	  syslog(LOG_INFO, buf);   // vulnerability
    	  break;
    	}
    #else
    	syslog(LOG_ERR, buf);
    
    ...
    
    Obviously, a call such as syslog(LOG_ERR, buf) should be replaced
    with syslog(LOG_ERR, "%s", buf) to remove the insecurity.
    
    The bug can be exploited whether or not syslog() logging is enabled
    because of the erroneous printf(buf) call, as well.
    
    One of the simplest points of entry I have determined is if the -w
    option was specified when ntop was ran, which allows web access
    to the ntop information. A HTTP request of the following:
    
    GET /%s%s%s HTTP/1.0
    
    will cause program termination (the HTTP deamon for ntop is normally
    listening on port 3000).
    
    The vulnerability does allow remote execution of arbitrary commands,
    and if concerned, an appropriate fix should be quickly applied.
    
    
    -------------------------------| Copyright 2002. All rights reserved. |
    



    This archive was generated by hypermail 2b30 : Tue Mar 05 2002 - 12:34:20 PST