Secunia Research has discovered a vulnerability in Samba, which can be exploited by malicious people to compromise a vulnerable system. The vulnerability is caused due to a boundary error within the "send_mailslot()" function. This can be exploited to cause a stack-based buffer overflow with zero bytes via a specially crafted "SAMLOGON" domain logon packet containing a username string placed at an odd offset followed by an overly long GETDC string. Successful exploitation allows execution of arbitrary code, but requires that the "domain logon" option is enabled. The vulnerability is confirmed in version 3.0.27a. Other versions may also be affected. Vulnerability Details: ---------------------- The buffer overflow is triggered by the call to "set_message()" in nmbd/nmbd_packets.c at line 1895. The "set_message()" function will call a "memset()" to zero on "dgram->data" + 35 with a length bigger than the available 576-35 bytes for an overly long total length for the SAMLOGON GETDC, username, workgroup, and local hostname. The vulnerability would at first glance be only triggerable in certain unusual configurations with an overly long local workgroup or hostname due to the limitations in size of the NetBIOS Datagram packet (576 bytes). However if an empty (two zero bytes) Unicode username is placed at an odd offset within the SAMLOGON request, the "pull_ucs2_pstring()" function called at line 365 in nmbd/nmbd_processlogon.c will convert the whole GETDC string following the username into ascuser, allowing the buffer overflow to take place in standard configurations. Exploitation: ------------- Secunia Research has created a PoC for the vulnerability, which is available upon request. The vulnerability can also be reproduced by sending a SAMLOGON request with an empty username placed at an odd offset and an overly long GETDC string (around 250 bytes). Closing comments: ----------------- We have assigned this vulnerability Secunia advisory SA27760 and CVE identifier CVE-2007-6015. A preliminary disclosure date of 2007-12-05 10am CET has been set, where the details will be publicly disclosed. However, we are naturally prepared to push the disclosure date if you need more time to address the vulnerability.
Upstream is working on a patch.
Created attachment 137917 [details, diff] CVE-2007-0615.patch You know the drill, please do not commit, but add an updated ebuild to this bug, so it can get testing and be committed to straight stable at the release date.
Created attachment 137995 [details] samba-3.0.27a-r1.ebuild Sorry for the delay, I was really busy yesterday... The patch needs to be renamed to 3.0.27a-CVE-2007-0615.patch Besides the requested patch, the ebuild fixes the bugs #200132 ("typo in elog") and #199934 ("oneliner to remove +x bit from headers").
Please test the attached ebuild and report back at this bug. Target keywords : "alpha amd64 arm hppa ia64 mips ppc ppc64 s390 sh sparc x86" Adding Arch Security Liaisons: alpha : ferdy amd64 : welp hppa : jer ppc : dertobi123 ppc64 : corsair sparc : ferdy x86 : tsunam
make test does its job right up to the SMBTORTURE4 tests. This isn't a regression though, and all else looks OK for HPPA.
Ditto for amd64.
looking as good on ppc64, too.
Looks fine on alpha/ia64/sparc/x86
looks good for ppc
Please rename the patch to contain 6015 instead of 0615. prestabled for all security supported arches. Tiziano, please prepare for a commit on Tuesday. The time is not confirmed yet.
Samba folks will release their advisory at about 15 UTC and Secunia did not reply to the schedule question.
public now.
commited as 3.0.28 (as released by upstream, contains only the security update).
Arches, please test and mark stable net-fs/samba-3.0.28. Target keywords : "alpha amd64 arm hppa ia64 mips ppc ppc64 s390 sh sparc x86" Already stabled : "alpha amd64 hppa ia64 ppc ppc64 sparc x86" Missing keywords: "arm mips s390 sh"
GLSA 200712-10
Does not affect current (2008.0) release. Removing release.