From customerservice@idefense.com Thu Dec 16 14:11:00 2004 From: iDEFENSE Security Advisory To: bugtraq@securityfocus.com Date: 16 Dec 2004 13:42:07 -0500 Subject: iDEFENSE Security Advisory 12.16.04: Samba smbd Security Descriptor Integer Overflow Vulnerability Samba smbd Security Descriptor Integer Overflow Vulnerability iDEFENSE Security Advisory 12.16.04 http://www.idefense.com/application/poi/display?id=165 December 16, 2004 I. BACKGROUND Samba is an open source implementation of the SMB/CIFS protocol which allows Windows clients to use resources on non-Windows systems. More information is available at http://www.samba.org/ II. DESCRIPTION Remote exploitation of an integer overflow vulnerability in all versions of Samba's smbd prior to and including 3.0.8 could allow an attacker to cause controllable heap corruption, leading to execution of arbitrary commands with root privileges. To open a file on a Samba server, a client sends a sequence of SMB messages to the smbd process. The message with the information on the file to open also contains a security descriptor, which is a list of access controls to apply to the file. The vulnerability specifically occurs in the allocation of memory to store these descriptors. /* * Even if the num_aces is zero, allocate memory as there's a difference * between a non-present DACL (allow all access) and a DACL with no ACE's * (allow no access). */ if((psa->ace = (SEC_ACE *)prs_alloc_mem(ps,sizeof(psa->ace[0]) * (psa->num_aces+1))) == NULL) return False; When more than 38347922 descriptors are requested, an integer overflow occurs resulting in less memory being allocated than was requested. sizeof(psa->ace[0]) is 112, or 0x70 in hex. 0x70x(38347922 + 1)=4294967376, or 0x100000050. This number is larger than can be stored in a 32-bit integer, so the bits that don't fit are removed, leaving 0x50, or 80 in decimal. As one descriptor is 112 bytes, an overflow of at least 32 bytes will occur. An attacker could supply data to the server which would cause the heap to become corrupted in such a way as to cause arbitrary values to be written to arbitrary locations, eventually leading to code execution. III. ANALYSIS Successful remote exploitation allows an attacker to gain root privileges on a vulnerable system. In order to exploit this vulnerability an attacker would need to have credentials allowing them access to the a share. Unsuccessful exploitation attempts will cause the process serving the request to crash with signal 11, and may leave evidence of an attack in logs. IV. DETECTION iDEFENSE Labs have confirmed that Samba 3.0.8 and 2.2.9 are vulnerable. Checks made against earlier versions of the source code suggest that all versions from at least 2.0.0 are also vulnerable to some minor variation of this vulnerability. V. WORKAROUND Employ firewalls, access control lists or other TCP/UDP restriction mechanisms to limit access to systems and services. VI. VENDOR RESPONSE Patches for this issue are available at: http://www.samba.org/samba/ftp/patches/security/samba-3.0.9-CAN-2004-1154.patch http://www.samba.org/samba/ftp/patches/security/samba-3.0.9-CAN-2004-1154.patch.asc VII. CVE INFORMATION The Common Vulnerabilities and Exposures (CVE) project has assigned the names CAN-2004-1154 to these issues. This is a candidate for inclusion in the CVE list (http://cve.mitre.org), which standardizes names for security problems. VIII. DISCLOSURE TIMELINE 12/02/2004 Initial vendor notification 12/02/2004 Initial vendor response 12/16/2004 Coordinated public disclosure IX. CREDIT This vulnerability was discovered by Greg MacManus, iDEFENSE Labs. Get paid for vulnerability research http://www.idefense.com/poi/teams/vcp.jsp X. LEGAL NOTICES Copyright © 2004 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 email 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.