From: SecuriTeam <support@securiteam.com.>
To: [email protected]
Date: 19 Dec 2006 10:41:40 +0200
Subject: [UNIX] Sun Microsystems Solaris ld.so Directory Traversal Vulnerability
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Message-Id: <20061219165217.D98A25822@mail.tyumen.ru.>
X-Virus-Scanned: antivirus-gw at tyumen.ru
X-Spam-Status: No, hits=2.011 tagged_above=2 required=5
tests=DATE_IN_PAST_06_12, MSGID_FROM_MTA_ID
X-Spam-Level: **
The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
- - promotion
The SecuriTeam alerts list - Free, Accurate, Independent.
Get your security news from a reliable source.
http://www.securiteam.com/mailinglist.html
- - - - - - - - -
Sun Microsystems Solaris ld.so Directory Traversal Vulnerability
------------------------------------------------------------------------
SUMMARY
Solaris is a UNIX operating system developed by Sun Microsystems. Local
exploitation of a directory traversal vulnerability in ld.so could
potentially allow a non root user to execute arbitrary code as root.
DETAILS
Vulnerable Systems:
* Solaris 10 for both x86 and SPARC
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.
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.
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>
http://sunsolve.sun.com/search/document.do?assetkey=1-26-102724-1
Disclosure Timeline:
10/24/2006 - Initial vendor notification
10/27/2006 - Initial vendor response
12/12/2006 - Coordinated public disclosure
ADDITIONAL INFORMATION
The information has been provided by
<mailto:idlabs-advisories@idefense.com.> iDefense Labs Security Advisories.
The original article can be found at:
<http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=449>
http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=449
This bulletin is sent to members of the SecuriTeam mailing list.
To unsubscribe from the list, send mail with an empty subject line and body to: [email protected]
In order to subscribe to the mailing list, simply forward this email to: [email protected]
DISCLAIMER:
The information in this bulletin is provided "AS IS" without warranty of any kind.
In no event shall we be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages.