> -----Original Message-----
> From: Tom Yu [mailto:tlyu@xxxxxxx]
> Sent: Tuesday, January 09, 2007 10:09 PM
> To: bugtraq@xxxxxxxxxxxxxxxxx
> Subject: MITKRB5-SA-2006-003: kadmind (via GSS-API lib) frees
> uninitialized pointers
>
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
> MIT krb5 Security Advisory 2006-003
>
> Original release: 2007-01-09
> Last update: 2007-01-09
>
> Topic: kadmind (via GSS-API mechglue) frees uninitialized pointers
>
> Severity: CRITICAL
>
> CVE: CVE-2006-6144
> CERT: VU#831452
>
> SUMMARY
> =======
>
> The Kerberos administration daemon, "kadmind", can free uninitialized
> pointers, possibly leading to arbitrary code execution. This
> vulnerability results from memory management bugs in the "mechglue"
> abstraction interface of the GSS-API implementation. Third-party
> applications written using the GSS-API may also be vulnerable.
>
> Exploitation of this vulnerability is believed to be difficult. No
> exploit code is known to exist at this time.
>
> IMPACT
> ======
>
> An unauthenticated user may cause execution of arbitrary code in
> kadmind, which can compromise the Kerberos key database and host
> security. (kadmind usually runs as root.) Unsuccessful exploitation,
> or even accidental replication of the required conditions by
> non-malicious users, can result in kadmind crashing.
>
> An unauthenticated user may cause execution of arbitrary code in
> third-party applications which use the GSS-API library.
>
> AFFECTED SOFTWARE
> =================
>
> * kadmind from MIT releases krb5-1.5 through krb5-1.5.1
>
> * third-party applications calling the GSS-API library included in MIT
> releases krb5-1.5 through krb5-1.5.1
>
> * Earlier releases may not be affected because the relevant code was
> not compiled.
>
> FIXES
> =====
>
> * The upcoming krb5-1.6 release will contain a fix for this problem.
> Additionally, the upcoming krb5-1.5.2 patch release will contain
> this fix.
>
> * Apply the patch at:
>
> http://web.mit.edu/kerberos/advisories/2006-003-patch.txt
>
> A PGP-signed version of the patch is at:
>
> http://web.mit.edu/kerberos/advisories/2006-003-patch.txt.asc
>
> REFERENCES
> ==========
>
> This announcement is posted at:
>
>
> http://web.mit.edu/kerberos/advisories/MITKRB5-SA-2006-003-mec
> hglue.txt
>
> This announcement and related security advisories may be found on the
> MIT Kerberos security advisory page at:
>
> http://web.mit.edu/kerberos/advisories/index.html
>
> The main MIT Kerberos web page is at:
>
> http://web.mit.edu/kerberos/index.html
>
> CVE: CVE-2006-6144
> http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6144
>
> CERT: VU#831452
> http://www.kb.cert.org/vuls/id/831452
>
> ACKNOWLEDGMENTS
> ===============
>
> This vulnerability was found while investigating a related
> vulnerability reported by Andrew Korty of Indiana University.
>
> DETAILS
> =======
>
> The specifications for the GSS-API C bindings, including RFC 2744,
> require that all GSS-API calls which may return pointers to allocated
> memory to initialize the pointers, even in error conditions. The
> implementation of the "mechglue" abstraction interface can execute
> error-handling paths which do not complete initialization of output
> parameters. As a result, callers which do not initialize return
> structures such as gss_buffer_desc may call destructor functions such
> as gss_release_buffer on values containing uninitialized pointers.
>
> In kadmind, the log_badverf() function calls gss_display_name()
> without checking its return value and without initializing the
> gss_buffer_desc structures passed to gss_display_name(). If
> gss_display_name() encounters certain error conditions, it does not
> initialize the gss_buffer_t output argument passed to it. The
> log_badverf() function then logs the returned strings, and calls
> gss_release_buffer() on these gss_buffer_desc structures. When
> RPCSEC_GSS is used, kadmind uses a NULL server name, so at least one
> of the calls to gss_display_name() will always fail in that case.
>
> The act of logging these strings will typically cause a memory access
> fault if the uninitialized pointers have values pointing into invalid
> address space, which may prevent harmful effects in
> gss_release_buffer() because the program will have crashed. It is
> inadvisable to depend on this possibility, because an attacker may be
> able to manipulate the uninitialized pointers to take on values
> pointing into valid address space.
>
> REVISION HISTORY
> ================
>
> 2007-01-09 original release
>
> Copyright (C) 2006 Massachusetts Institute of Technology
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.6 (SunOS)
>
> iQCVAwUBRaL92KbDgE/zdoE9AQJ8DAQAiYr6UPRR5twDUVvBLjhdGriKSYPRaOoe
> re7ROX9BZ1fAAxldLH2Eela50gAAvnqYkAUyB1RH0Qi9OyEudEbeAUH7PLAR42lE
> +Tt/OGH6jF6Uju/6wTfqLUPXCoBf8l9h2lojTuHYSGWvbz8Cth5vzpJSOGIM9cu7
> YIFqXWFgoqs=
> =/Rxc
> -----END PGP SIGNATURE-----
>