Re: setuid(geteuid());? - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: setuid(geteuid());?
Date
Msg-id 200104212153.f3LLrVV00105@candle.pha.pa.us
Whole thread Raw
In response to Re: setuid(geteuid());?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
> HPUX has an even more bizarre definition:
> 
>      setuid() sets the real-user-ID (ruid),effective-user-ID (euid), and/or
>      saved-user-ID (suid) of the calling process.  The super-user's euid is
>      zero.  The following conditions govern setuid's behavior:
> 
>           o  If the euid is zero, setuid() sets the ruid, euid, and suid to
>              uid.
> 
>           o  If the euid is not zero, but the argument uid is equal to the
>              ruid or the suid, setuid() sets the euid to uid; the ruid and
>              suid remain unchanged.  (If a set-user-ID program is not
>              running as super-user, it can change its euid to match its
>              ruid and reset itself to the previous euid value.)
> 
>           o  If euid is not zero, but the argument uid is equal to the
>              euid, and the calling process is a member of a group that has
>              the PRIV_SETRUGID privilege (see privgrp(4)), setuid() sets
>              the ruid to uid; the euid and suid remain unchanged.
> 
> Rule #2 is what creates the security hole.  Rule #3 would allow us to
> plug the hole, but only if we have PRIV_SETRUGID...

I don't even want to twist my brain far enough to understand this.  So
basically. BSD/OS is safe with a seteuid executable if we keep the
setuid(geteuid()) call, while other OS's have serious problems we can't
plug.  I knew there was some OS-specific stuff in setuid.  Seems a check
that uid and euid are the same and not root is the way to go.

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: setuid(geteuid());?
Next
From: Paul A Vixie
Date:
Subject: well, now i wish we hadn't gutted the ipv6 support