Thread (3 messages) 3 messages, 3 authors, 2009-12-29

Re: RFC: disablenetwork facility. (v4)

From: Bryan Donlan <hidden>
Date: 2009-12-29 19:08:54
Also in: lkml

On Tue, Dec 29, 2009 at 1:36 PM, Eric W. Biederman
[off-list ref] wrote:
Bryan Donlan [off-list ref] writes:
quoted
On Tue, Dec 29, 2009 at 11:39 AM, Serge E. Hallyn [off-list ref] wrote:
quoted
Quoting Bryan Donlan (bdonlan@gmail.com):
quoted
On Tue, Dec 29, 2009 at 10:11 AM, Serge E. Hallyn [off-list ref] wrote:
quoted
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?"
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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help