Thread (15 messages) 15 messages, 5 authors, 2015-06-13

Re: [PATCH v4] seccomp: add ptrace options for suspend/resume

flat view

From: Andy Lutomirski <hidden>
Date: 2015-06-10 17:42:32
Also in: lkml

On Wed, Jun 10, 2015 at 10:29 AM, Serge Hallyn [off-list ref] wrote:
Quoting Andy Lutomirski (luto-kltTT9wpgjJwATOyAt5JVQ@public.gmane.org):
quoted
On Wed, Jun 10, 2015 at 9:31 AM, Oleg Nesterov [off-list ref] wrote:
quoted
On 06/09, Andy Lutomirski wrote:
quoted
On Tue, Jun 9, 2015 at 5:49 PM, Tycho Andersen
quoted
@@ -556,6 +556,15 @@ static int ptrace_setoptions(struct task_struct *child, unsigned long data)
        if (data & ~(unsigned long)PTRACE_O_MASK)
                return -EINVAL;

+       if (unlikely(data & PTRACE_O_SUSPEND_SECCOMP)) {
Well, we should do this if

                        (data & O_SUSPEND) && !(flags & O_SUSPEND)

or at least if

                        (data ^ flags) & O_SUSPEND

quoted
quoted
+               if (!config_enabled(CONFIG_CHECKPOINT_RESTORE) ||
+                   !config_enabled(CONFIG_SECCOMP))
+                       return -EINVAL;
+
+               if (!capable(CAP_SYS_ADMIN))
+                       return -EPERM;
I tend to think that we should also require that current not be using
seccomp.  Otherwise, in principle, there's a seccomp bypass for
privileged-but-seccomped programs.
Andy, I simply can't understand why do we need any security check at all.

OK, yes, in theory we can have a seccomped CAP_SYS_ADMIN process, seccomp
doesn't filter ptrace, you hack that process and force it to attach to
another CAP_SYS_ADMIN/seccomped process, etc, etc... Looks too paranoid
to me.
I've sometimes considered having privileged processes I write fork and
seccomp their child.  Of course, if you're allowing ptrace through
your seccomp filter, you open a giant can of worms, but I think we
should take the more paranoid approach to start and relax it later as
I really do intend to look at your old proposed tree for improving that...
have only done a once-over so far, though.
Don't read it yet.  It's unnecessarily complicated due to the mess
that is x86's entry code, and I want to clean up the entry code first.

--Andy
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help