Re: RFC: disablenetwork facility. (v4)

From: Serge E. Hallyn
Date: Tue Dec 29 2009 - 16:27:28 EST


Quoting Bryan Donlan (bdonlan@xxxxxxxxx):
> On Tue, Dec 29, 2009 at 1:36 PM, Eric W. Biederman
> <ebiederm@xxxxxxxxxxxx> wrote:
> > Bryan Donlan <bdonlan@xxxxxxxxx> writes:
> >
> >> On Tue, Dec 29, 2009 at 11:39 AM, Serge E. Hallyn <serue@xxxxxxxxxx> wrote:
> >>> Quoting Bryan Donlan (bdonlan@xxxxxxxxx):
> >>>> On Tue, Dec 29, 2009 at 10:11 AM, Serge E. Hallyn <serue@xxxxxxxxxx> wrote:
> >>>> > Eric, let me specifically point out a 'disable setuid-root'
> >>>> > problem on linux: root still owns most of the system even when
> >>>> > it's not privileged.  So does "disable setuid-root" mean
> >>>> > we don't allow exec of setuid-root binaries at all, or that
> >>>> > we don't setuid to root, or that we just don't raise privileges
> >>>> > for setuid-root?
> >>>>
> >>>> I, for one, think it would be best to handle it exactly like the
> >>>> nosuid mount option - that is, pretend the file doesn't have any
> >>>> setuid bits set. There's no reason to deny execution; if the process
> >>>> would otherwise be able to execute it, it can also copy the file to
> >>>> make a non-suid version and execute that instead. And some programs
> >>>> can operate with reduced function without setuid. For example, screen
> >>>> comes to mind; it needs root to share screen sessions between multiple
> >>>> users, but can operate for a single user just fine without root, and
> >>>> indeed the latter is usually the default configuration.
> >>>
> >>> That's fine with me, seems safe for a fully unprivileged program to
> >>> use, and would make sense to do through one of the securebits set
> >>> with prctl(PR_SET_SECUREBITS).
> >>>
> >>> In addition, I assume we would also refuse to honor file capabilities?
> >>
> >> Yes - essentially a one-time switch saying "never allow me to gain
> >> capabilities again".
> >
> > That is what I was thinking.  Does setresuid case problems?  Assuming
> > the application that drop permissions could have successfully
> > called setresuid?
>
> It's probably reasonable to require that real == effective == saved ==
> fs UID (and same for GID); anything else brings up sticky issues of
> "which UID is a higher capability?"

I think i disagree. A uid is just a uid (or should be). One day we may
have a way for a factotum-style daemon to grant the ability to an unpriv
task to setuid without CAP_SETUID. I think slingling uids and gids
around that you already have access to should be fine.

> If a process does this call, it's effectively saying that the only way
> it's going to be accessing resources beyond its current UID and
> capabilities is by talking to another process over a (unix domain)
> socket.
> --
> To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/