Re: [PATCH] Security: Add prctl(PR_{GET,SET}_NETWORK) interface.

From: Michael Stone
Date: Wed Dec 16 2009 - 20:24:30 EST


Andi Kleen wrote:
On Wed, Dec 16, 2009 at 10:32:43AM -0500, Michael Stone wrote:
Daniel Bernstein has observed [1] that security-conscious userland processes
may benefit from the ability to irrevocably remove their ability to create,
bind, connect to, or send messages except in the case of previously
connected sockets or AF_UNIX filesystem sockets. We provide this facility by
implementing support for a new prctl(PR_SET_NETWORK) flag named
PR_NETWORK_OFF.

This facility is particularly attractive to security platforms like OLPC
Bitfrost [2] and to isolation programs like Rainbow [3] and Plash [4].

What would stop them from ptracing someone else running under the same
uid who still has the network access?

Just like in the (revised from last year) rlimits version, there's a hunk in
the prctl_network semantics patch which disables networking-via-ptrace() like
so:

diff --git a/kernel/ptrace.c b/kernel/ptrace.c
index 23bd09c..5b38db0 100644
--- a/kernel/ptrace.c
+++ b/kernel/ptrace.c
@@ -151,6 +151,8 @@ int __ptrace_may_access(struct task_struct *task, unsigned int mode)
dumpable = get_dumpable(task->mm);
if (!dumpable && !capable(CAP_SYS_PTRACE))
return -EPERM;
+ if (current->network)
+ return -EPERM;

return security_ptrace_access_check(task, mode);
}

More questions?

Regards, and thanks for your interest,

Michael
--
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/