Date: Mon, 4 Aug 1997 15:07:36 -0600 (MDT) From: Marc Slemko <marcs@znep.com> To: Atipa <freebsd@atipa.com> Cc: "Jonathan A. Zdziarski" <jonz@netrail.net>, ports@FreeBSD.ORG, security@FreeBSD.ORG Subject: Re: SetUID Message-ID: <Pine.BSF.3.95.970804150403.27439W-100000@alive.znep.com> In-Reply-To: <Pine.BSF.3.91.970804145336.11294A-100000@dot.ishiboo.com>
index | next in thread | previous in thread | raw e-mail
On Mon, 4 Aug 1997, Atipa wrote:
>
>
> On Mon, 4 Aug 1997, Marc Slemko wrote:
>
> > You could. If you did, however, you would be silly.
> >
> > The wrapper you give allows anyone who can run it to do anything they want
> > as the uid it is setuid to.
>
> If you allow the shell script to be modified, yes. Otherwise, I can not
> see how they could use the wrapper to execute anything but the script
> hard coded therein. Am I being naive?
>
> Set the permissions to 750, chown root.<special group>
> And make sure the shell script is non world or group writable.
>
> What's the vulnerablility?
You are being very naive. You can do an awful lot with environment
variables. What would happen if you set ENV before running your wrapper?
/bin/sh would see it and execute whatever is in the file it points to.
What if you set one of a couple of LD_* environment variables? The loader
would see them and use whatever they point to.
Net result: people who can run it can do whatever they want as the user it
is setuid to.
Not passing in the external environment is a good first step to making it
secure.
>
> Kevin
>
> > > > -- cut here (wrapper.c) --
> > >
> > > #include <stdlib.h>
> > > main()
> > > {
> > > execl("/etc/rc.WHATEVER","WHATEVER",NULL);
> > > }
> > >
> > > -- end--
>
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.3.95.970804150403.27439W-100000>
