|
Sun Microsystems Solaris ld.so Directory Traversal Vulnerability
iDefense Security Advisory 12.12.06
http://labs.idefense.com/intelligence/vulnerabilities/
Dec 12, 2006
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. It is speculated that older versions of Solaris are 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 =A9 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
customerservice@idefense.com 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.