I. BACKGROUND
Solaris is a UNIX operating system developed by Sun Microsystems. More
information can be found at http://www.sun.com/software/solaris/
II. DESCRIPTION
Local exploitation of a directory traversal vulnerability in ld.so could
potentially allow a non root user to execute arbitrary code as root.
ld.so uses the environmental variables LANG, LC_ALL, and LC_MESSAGES to
determine what locale is currently set. When ld.so encounters an error,
such as when a non root user specifies an unsafe library in the LD_PRELOAD
environmental variable, it uses one of the above variables to open up a
message file that contains error strings. It will make a call like this to
open the file:
open("/usr/lib/locale/$LANG/LC_MESSAGES/SUNW_OST_SGS.mo",..)
$LANG is a user controlled environmental variable that is not sanitized.
This message file is meant to contain format strings used to build error
messages, and should therefore only be writable by root. By setting LANG
to a value such as "../../../../../home/user" an attacker can control the
the location of this message file, and pass arbitrary format strings to a
printf() like function in ld.so.
III. ANALYSIS
Successful local exploitation allows attackers to execute arbitrary code as
root on the affected host.
ld.so does not use the C library printf() function; it has it's own
minimal implementation. This implementation does not provide the %n format
specifier. Therefore an attacker is limited to leaking information through
such specifiers as %x. However, while researching this vulnerability it
was found that the formatting function itself also contains a buffer
overflow vulnerability that can be triggered with a user controlled format
string. This vulnerability is discussed in a separate iDefense advisory. By
combining these two vulnerabilities it is possible that an attacker could
execute arbitrary code as root.
IV. DETECTION
iDefense has confirmed that Solaris 10 for both x86 and SPARC is vulnerable. Older
versions of Solaris are likely to be vulnerable as well.
V. WORKAROUND
iDefense is currently unaware of any effective workarounds for this
vulnerability.
VI. VENDOR RESPONSE
Sun Microsystems has addressed this problem with new patches. More
information can be found in Sun Alert #102724. This alert can be found
at: http://sunsolve.sun.com/search/document.do?assetkey=1-26-102724-1
VII. CVE INFORMATION
A Mitre Corp. Common Vulnerabilities and Exposures (CVE) number has not
been assigned yet.
VIII. DISCLOSURE TIMELINE
10/24/2006 Initial vendor notification
10/27/2006 Initial vendor response
12/12/2006 Coordinated public disclosure
IX. CREDIT
The discoverer of this vulnerability wishes to remain anonymous.
Get paid for vulnerability research
http://labs.idefense.com/methodology/vulnerability/vcp.php
Free tools, research and upcoming events
http://labs.idefense.com/
X. LEGAL NOTICES
Copyright © 2006 iDefense, Inc.
Permission is granted for the redistribution of this alert electronically. It may not be edited in
any way without the express written consent of iDefense. If you wish to reprint the whole or any
part of this alert in any other medium other than electronically, please e-mail customer service for
permission.
Disclaimer: The information in the advisory is believed to be accurate at the time of publishing
based on currently available information. Use of the information constitutes acceptance for use in
an AS IS condition. There are no warranties with regard to this information. Neither the author nor
the publisher accepts any liability for any direct, indirect, or consequential loss or damage
arising from use of, or reliance on, this information.