<<< Date Index >>>     <<< Thread Index >>>

Mac OS X pppd format string vulnerability



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1



                                @stake, Inc.
                              www.atstake.com

                             Security Advisory

Advisory Name: Mac OS X pppd format string vulnerability
 Release Date: 02/23/2004
  Application: pppd 2.4.0
     Platform: Mac OS X 10.3.2 and below
     Severity: Local users are able to retrieve PAP/CHAP credentials
       Author: Dave G. <daveg@xxxxxxxxxxx>
Vendor Status: Vendor has security update 
CVE Candidate: CAN-2004-0165
    Reference: www.atstake.com/research/advisories/2004/a022304-1.txt


Overview: 

The ppp daemon that comes installed by default in Mac OS X 
is vulnerable to a format string vulnerability.  The vulnerability is
in a function specific to pppd that does not allow for traditional
exploitation (arbitrary data written to arbitrary memory locations)
via %n.  However, it is possible to read arbitrary data out of pppd's
process. Under certain circumstances, it is also possible to 'steal'
PAP/CHAP authentication credentials.

       
Details: 

When pppd receives an invalid command line argument, it will
eventually pass it as a format specifier to vslprintf().  This
function is a custom replacement for vsnprintf(), and does contains a
small subset of the format specifiers.  The offending function is
called option_error:

void
option_error __V((char *fmt, ...))
{
    va_list args;
    char buf[256];

#if defined(__STDC__)
    va_start(args, fmt);      
#else
    char *fmt;
    va_start(args);
    fmt = va_arg(args, char *);
#endif
    vslprintf(buf, sizeof(buf), fmt, args);
    va_end(args);
    if (phase == PHASE_INITIALIZE)     
        fprintf(stderr, "%s: %s\n", progname, buf);
#ifdef __APPLE__
    error(buf);
#else
    syslog(LOG_ERR, "%s", buf);
#endif
}

As we can see, there is a specific Apple ifdef that will pass our
buffer directly to error().  

By utilizing one of the techniques outlined in scut's paper,
"Exploiting Format String Vulnerabilities", it may be possible to
access PAP and/or CHAP credentials, if the OS X system is being used
as a PPP server.


Vendor Response:

This is fixed in Security Update 2004-02-23 for Mac OS X 10.3.2 and
Mac OS X 10.2.8.  Information about Apple Security Updates may be
found at http://www.info.apple.com/


Recommendation:

Install the vendor supplied upgrade.


Common Vulnerabilities and Exposures (CVE) Information:

The Common Vulnerabilities and Exposures (CVE) project has assigned 
the following names to these issues.  These are candidates for 
inclusion in the CVE list (http://cve.mitre.org), which standardizes 
names for security problems.

  CAN-2004-0165 Mac OS X pppd format string vulnerability


@stake Vulnerability Reporting Policy: 
http://www.atstake.com/research/policy/

@stake Advisory Archive:
http://www.atstake.com/research/advisories/

PGP Key:
http://www.atstake.com/research/pgp_key.asc

Copyright 2004 @stake, Inc. All rights reserved.





-----BEGIN PGP SIGNATURE-----
Version: PGP 8.0.3

iQA/AwUBQDqNV0e9kNIfAm4yEQJDyACfdyoktRpVe2HdeJ+OXFrO0PCH5L4Anj1t
ayzDBWIsuXib+mhqIjrG7wDI
=4K2F
-----END PGP SIGNATURE-----