tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: [PATCH] Fix system() behaviour when parameter is NULL
On Thu, 28 Aug 2008 15:13:55 -0400 (EDT)
der Mouse <mouse%Rodents-Montreal.ORG@localhost> wrote:
> >> "access() is a potential security hole and should never be used."
> > Actually, the statement is wrong... Rather, it needs a few more
> > qualifiers. One of the original purposes of access() was to let
> > setuid() programs check if the real uid had certain privileges on
> > the file. That doesn't work properly because of race condition
> > attacks.
>
> Well...strictly speaking, it works, but opens up a classic test-vs-use
> race if you then proceed to count on the result to mean that it's safe
> to use the pathname you tested. (Except for cases where all the
> directories leading to the object are unwritable to all attackers
> inside the threat model, which is the case rarely enough that the
> possibility can usually be ignored.)
I think this is what I said. The usual buzzword for this specific kind
of attack is TOCTTOU -- "time of check to time of use".
>
> This is rather more complicated than someone needing the manpage is
> likely to grok; the warning that's there is a workable approximation
> for the people who need warning.
Maybe.
>
> > However, if you're not looking at that issue, it's a perfectly fine
> > system call.
>
> Yes. However, is it the right one here? If system()'s caller is
> set-id, I'm not convinced it will give the answer we want if the ruid
> and euid have different access rights on _PATH_BSHELL.
A different question entirely, and you may be right -- I was simply
answer the question about whether access() is a security hole per se.
--Steve Bellovin, http://www.cs.columbia.edu/~smb
Home |
Main Index |
Thread Index |
Old Index