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 © 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@private 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.
This archive was generated by hypermail 2.1.3 : Tue Dec 12 2006 - 15:06:30 PST