[2110] in bugtraq

home help back first fref pref prev next nref lref last post

Re: BUGTRAQ ALERT: Solaris 2.x vulnerability

daemon@ATHENA.MIT.EDU (Scott Chasin)
Wed Aug 16 11:25:16 1995

Date:         Wed, 16 Aug 1995 09:11:05 MDT
Reply-To: Bugtraq List <BUGTRAQ@CRIMELAB.COM>
From: Scott Chasin <chasin@CRIMELAB.COM>
To: Multiple recipients of list BUGTRAQ <BUGTRAQ@CRIMELAB.COM>
In-Reply-To:  <199508161350.JAA16741@netspace.org> from "L-Soft list server at
              NETSPACE.ORG" at Aug 16, 95 09:50:08 am

> ???? I'm on 2.4 HW 3/95 (plus a bunch of patches of course) and can't
> find this hole. I'm looking to see if we still have a 2.3 machine
> around.

Remember - The rc scripts responsible for chmoding /tmp with the
sticky bit is really broken.

If you look in /etc/rc2.d at S05RMTMPFILES you can see that the following
is obsolete for mounted /tmp filesystems:

--
#  Traditional SunOS 4.x behavior has been to not remove directories in
#  the /tmp directory; only simple files were removed. This lead to an
#  inconsistancy when the tmpfs file system was used (which isn't persistant
#  across boots. The following adopts the traditional System V behavior
#  of removing everything in /tmp.

#  clean up /tmp
#  if /tmp or any of its subdirectories are mount points do not remove /tmp

M=`/sbin/mount | /usr/bin/egrep '^/tmp(/| )' | /usr/bin/wc -l`
if [ $M -eq 0 ]
then
        # just remove files under directory if symbolic link
        if [ -h /tmp ]
        then
                /usr/bin/rm -rf /tmp/*
        else
                /usr/bin/rm -rf /tmp
                /usr/bin/mkdir /tmp
                /usr/bin/chmod 1777 /tmp
                /usr/bin/chgrp sys /tmp
                /usr/bin/chown sys /tmp
        fi

--
The above basically doesn't adhere to mounted /tmp filesystems.  So upon
boot your /tmp (if mounted in some fashion) does not get the sticky-bit.


> > DESCRIPTION:
> >          A race condition exists in /usr/bin/ps when ps opens a temporary
> >          file when executed.  After opening the file, /usr/bin/ps chown's the
> >          temporary file to root and the renames it to /tmp/ps_data.
>
> Well, I can't seem to find the temp files, even while running the exploit.
> (With a while (1) ls -l ps.* |& grep -v "No match" running.)

They are there.  Trust me.   If still in doubt, try the following:

/bin/rm /tmp/ps_data; /bin/truss /bin/ps -eaf >& /tmp/truss.out

And then search for the chown() call in /tmp/truss.out.

> > WORKAROUND:
> >          chmod +t /tmp
>
> If this is the truth. That means all of us *not* running with tmpfs will
> be affected. There is a bug in the code that the sticky bit works
> correctly on tmpfs but not on ufs.

Check the above /etc/rc2.d TMP script for why.

> >      unlink ("/tmp/ps_data");
>
> Uhh. On my system this won't work since /tmp/ps_data is 664. Or is this
> a matter of trying to catch the program twice?

If the mode on /tmp doesn't have the sticky-bit set, you can remove ps_data.

> Mostly I wanted to point out the bugs in ufs /tmp with sticky bit on.
>
> Ciao,
>
> --
> Richard Bainter          Mundanely     |    System Analyst        - OMG/CSD
> Pug                      Generally     |    Applied Research Labs - U.Texas
>    pug@arlut.utexas.edu     |     pug@eden.com     |     {any user}@pug.net
> Note: The views may not reflect my employers, or even my own for that matter.

home help back first fref pref prev next nref lref last post