Subject: Re: mktemp() warning lossage?
To: Darren Reed <darrenr@cyber.com.au>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: tech-security
Date: 03/24/1997 01:22:22
[Moving a thread about mktemp() vs mkstemp() warnings to here
 from elsewhere]



Darren reed writes:
>>In some mail I received from Jonathan Stone, sie wrote
>> 
>> setuid/setgid *is* the concern here, isn't it?

>It is _one of_ the concerns.  For example, if a user is running a program
>that creates a temp file in /tmp and I can predict it happening (i.e. cron
>jobs or quiet system), I can have a good chance at creating a symlink to
>some other file they own, say .rhosts.  This may then have its mode
>changed and contents trashed with something that creates a security
>problem.


hi Darren,

The warnings in question simply advise using mkstemp(), instead of 
mktemp() or tmpnam() and its friends.

Given the shared implementation, I'm afraid I don't see how NetBSD's
mktemp() and mkstemp() (or even tmpnam(), for that matter) differ in
any meaningful way, w.r.t that particular security risk.

I may be missing something about the semantics of open() with
O_EXCL|O_CREAT, but _in general_ (e.g., diskless workstations, or
small-disk machines with TMPDIR mounted over NFS) I don't see how
mkstemp() really stops sniffing tempfiles or kludging up symlinks.  In
fact, I thought that was part of the justification for the recent
proposal for a per-user /tmp filesystem?

Could you indulge me, and show a scenario where using mkstemp()
instead of mktemp() really helps?  If it does, then

	a) I'll update the manpage accordingly, and

	b) look into  a mkstmpdir() for programs like df, that
	   use mktemp()  to create names for `temporary' directories.