[8216] in bugtraq

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

Re: /tmp race in mc-4.5.0

daemon@ATHENA.MIT.EDU (Marc Heuse)
Thu Oct 15 12:45:07 1998

Date: 	Thu, 15 Oct 1998 08:25:20 +0200
Reply-To: Marc Heuse <Marc.Heuse@MAIL.DEUBA.COM>
From: Marc Heuse <Marc.Heuse@MAIL.DEUBA.COM>
X-To:         pavel@BUG.UCW.CZ
To: BUGTRAQ@NETSPACE.ORG
In-Reply-To:  <19981013004104.21353@bug.ucw.cz> from Pavel Machek at "Oct 13,
              98 00:41:04 am"

Hi,

> > mc 4.5.0 creates a temporary file in /tmp when it's started.
> > It's called talk.fish and has the mode 644. If a user would link the
> > file to /etc/passwd or anything else, when the root would start mc, the
> > file would be erased.
> It was me who added talk.fish file (and it kind of escaped me, sorry),
> it is debugging hack and it is currently disabled in my tree (and
> CVS). Workaround is:
> create /tmp/talk.fish yourself, so that noone can put symlink there

and remember to disable the tmpdir cleanup script ...

> What is worse, they are probably going to
> stay there until someone invents safe & portable way of how to work
> with temporary files from shell.

I'd modify your example to:

        TMPDIR=/tmp/mctmpdir.$$
        umask 027       # or 077
        rm -rf $TMPDIR
        mkdir $TMPDIR || exit 1
        do_something > $TMPDIR/file
        do_something_else < $TMPDIR/file
        rm -rf $TMPDIR

> (Actually, is this safe? It might be safe & portable, unfortunately,
> it is also slow & ugly)

        this is safe and portable.
        another portable way which works on any sh/bash script is
        creating the files safely before using them for input/output
        redirection:

        TMP_FILE_1=/tmp/.mystuff1.$$
        rm -rf $TMP_FILE_1
        set -o noclobber
        > $TMP_FILE_1 || exit 1
        set +o noclobber

        but the best and fastest (and not so portable way, but protects
        better against denial-of-service attacks than the other two) is:

        TMP_FILE=`mktemp /tmp/.myfileXXXXXX` || exit 1




Mit freundlichen Gruessen,
                                Marc Heuse


This message and any statements expressed therein are those of myself
and not of the Deutsche Bank AG or its subsidiary companies.



Type Bits/KeyID    Date       User ID
pub  2048/DB5C03C5 1997/09/23 Marc Heuse <marc.heuse@mail.deuba.com>

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.3i

mQENAzQnbFEAAAEIAL/tj4hn/DVjEWAZhuqRdxZQDy5B+gZbE0CD/mUnZqpem+9L
KY+I8te7jMfTQExzqn5jYb5BaibT0SbEBWSx9Gha8EiBLAVcAjvrXpV+HJLcnPRG
YDk5a3s7GrA+QVHbbd9DWgqjMfUMw9oUDAhhjgK20SeOtFGBD2U17GkQF6TK7EjC
CTOuz2Hx/tisDuroJJnxZdbLNvCceOf/D/bbFcR7DfnEJWJ3f9JC4fibZMlX5rXL
Ct/TKhZMd4d42uL7L4KvkT5JCnFuEw1jRDPpBjZ030cK2uWCM//iEVLGmGKOs6Pg
o3Lfnnd6I6bTPHgrNsapNWmocbIGDC/4w9tcA8UABRG0Jk1hcmMgSGV1c2UgPG1h
cmMuaGV1c2VAbWFpbC5kZXViYS5jb20+iQEVAwUQNCdsUQwv+MPbXAPFAQFWEwf5
AWt6PbKLLCCBPnzBMdXatKEJvNzrZRXNSpbgKQUDAKApRUnOkDJ9yp3tfJG0/BsL
XBf+ldmjjoo/OZeWhIhNb71bbCs8BK7/YK5LKef2eq4pzSiWYosrOfjlfyOVhAiP
AiWYtK/HBELy6Zs8QwoPX0QX0+R2+ocMS0TDz7nwBgO5wcj3yMU0geTrnlDpJdj1
RgFQLE6T9qO5coRjj1EAoT5gQMxP9L4TQuifYiQ6S2vh6blr3amjPohKSDzZ62/x
rQ1KMXJd7MlMQndn8UwKt4XgoFIsZOFRrkDiXfm6zFnH40UcotoA+Ygojp52+Y6A
MuixTDbuf3Jph2jEG6r4Dw==
=/n63
-----END PGP PUBLIC KEY BLOCK-----

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