[CERT-intexxia] libgtop_daemon Remote Format String Vulnerability

From: Benoît Roussel (benoit.rousselat_private)
Date: Mon Nov 26 2001 - 23:07:48 PST

  • Next message: Joel Michael: "Re: double dot vulnerability on a site running Informix database."

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1
    
    ________________________________________________________________________
    SECURITY ADVISORY                                            INTEXXIA(c)
    27 11 2001                                               ID #1048-261101
    ________________________________________________________________________
    TITLE   : libgtop_daemon Remote Format String Vulnerability
    CREDITS : Guillaume Pelat / INTEXXIA
    ________________________________________________________________________
    
    
    SYSTEM AFFECTED
    ===============
    
            libgtop_daemon <= 1.0.12
    
    
    ________________________________________________________________________
    
    
    DESCRIPTION
    ===========
    
            The Laboratory intexxia found a remote exploitable format string
    vulnerability in  libgtop_daemon which could cause  privilege escalation
    on a remote system.
    
    
    ________________________________________________________________________
    
    
    DETAILS
    =======
    
            libgtop_daemon is a GNOME daemon used to monitor process running
    on a remote system.
    
            The Laboratory  intexxia  just  found  a  remote  format  string
    vulnerability in this daemon. The 2 functions named syslog_message() and
    syslog_io_message() are called with a format string which is initialized
    by the client.
    
            By sending a specially  crafted format string  to the server, it
    is possible  for a  remote attacker  to execute  arbitrary code  on  the
    remote  system  with  the  daemon  permissions. This vulnerability could
    cause privilege escalation.
    
            The permitted() function, that verifies if  the client trying to
    to connect is authorized to, is concerned by this flaw.
    
            The libgtop_daemon daemon is  launched with 'nobody' permissions
    by default. Complete  exploitation of this  vulnerability will permit an
    attacker to execute code  with the  'nobody' permissions.  But this flaw
    could be used to compromize  the local system by  exploiting other local
    vulnerabilities.
    
    
    ________________________________________________________________________
    
    
    PROOF OF CONCEPT
    ================
    
            Here is a proof of concept to show where the problem occurs :
    
    Client side :
    ~ % telnet 127.0.0.1 42800
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    %p%p
    Connection closed by foreign host.
    ~ % telnet 127.0.0.1 42800
    Trying 127.0.0.1...
    Connected to 127.0.0.1.
    Escape character is '^]'.
    %n%n
    Connection closed by foreign host.
    
    Server side :
    ~/# libgtop_daemon -f
    ' from clientn[3877]: Invalid authentication protocol
    '0xbffff46c0x804b2ae
    libgtop-daemon[3877]: Refused connection from 127.0.0.1.
    Segmentation fault
    
    
    ________________________________________________________________________
    
    
    WORKAROUND
    ==========
    
            Although there is an official solution, here is the way to patch
    the  sources to  resolve this  problem. The  file 'src/daemon/gnuserv.c'
    must be modified :
    
    In function syslog_message(), replace :
      syslog (priority, buffer);
    by :
      syslog (priority, "%s", buffer);
    
    And in function syslog_io_message(), replace :
      syslog (priority, buffer2);
    by :
      syslog (priority, "%s", buffer2);
    
    
    The Laboratory intexxia  developped the following  patch to correct this
    vulnerability. However,  the simplest  and  probably  the  best  way  to
    resolve this  issue is to  install the new  version at the above link in
    the solution section :
    
      diff -dru libgtop-1.0.12/src/daemon/gnuserv.c
      libgtop-1.0.12-patched/src/daemon/gnuserv.c
      --- libgtop-1.0.12/src/daemon/gnuserv.c Mon Nov 26 13:48:14 2001
      +++ libgtop-1.0.12-patched/src/daemon/gnuserv.c Mon Nov 26 13:49:26 2001
      @@ -93,7 +93,7 @@
           vsnprintf (buffer, BUFSIZ-1, format, ap);
           va_end (ap);
    
      -    syslog (priority, buffer);
      +    syslog (priority, "%s", buffer);
       }
     
       void
      @@ -108,7 +108,7 @@
           va_end (ap);
    
           snprintf (buffer2, BUFSIZ-1, "%s: %s", buffer, strerror (errno));
      -    syslog (priority, buffer2);
      +    syslog (priority, "%s", buffer2);
       }
     
       /*
    
    
    ________________________________________________________________________
    
    
    SOLUTION
    ========
    
            There is an official solution now. libgtop_daemon release 1.0.13
    has been  made to  correct this  issue. Here  is a  link where  you  can
    download it :
    
    ftp://ftp.gnome.org/pub/GNOME/stable/sources/libgtop/libgtop-1.0.13.tar.gz
    
    
    ________________________________________________________________________
    
    
    VENDOR STATUS
    =============
    
            26-11-2001 : This  bulletin  was  sent   to  the  libgtop_daemon
                         developpment team.
            27-11-2001 : The  libgtop_daemon  developpement  team released a
                         new version including the patch for this issue.
    
    
    ________________________________________________________________________
    
    
    DISCLAIMER
    ==========
    
            intexxia provides these informations as a public service and "as
    is". Intexxia  will not be  held accountable for  any damage or distress
    caused by the proper or improper usage of these materials.
    
    
    ________________________________________________________________________
    
    
    DIFFUSION CRITERIA
    ==================
    
            (c) intexxia 2001. This  document is property  of intexxia. Feel
    free to use and distribute  this material as long as  credit is given to
    intexxia and the author.
    
    
    ________________________________________________________________________
    
    
    CONTACT
    =======
    
    CERT intexxia                                          certat_private
    INTEXXIA                                         http://www.intexxia.com
    171, av. Georges Clemenceau                 Standard : +33 1 55 69 49 10
    92024 Nanterre Cedex - France                    Fax : +33 1 55 69 78 80
    
    -----BEGIN PGP SIGNATURE-----
    Version: PGPfreeware 7.0.3 for non-commercial use <http://www.pgp.com>
    
    iQA/AwUBPAM7wU2N8BNyNDXLEQLdpQCg1Vi/4vbZQdRjj/1ymF3z1+umSqcAoLg4
    FBeGXpWddc3WB6nKK5KMxnC9
    =pmZw
    -----END PGP SIGNATURE-----
    



    This archive was generated by hypermail 2b30 : Tue Nov 27 2001 - 12:35:27 PST