From: Tycho Andersen <tycho.andersen@canonical.com>
To: Oleg Nesterov <oleg@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-api@vger.kernel.org,
Kees Cook <keescook@chromium.org>,
Andy Lutomirski <luto@amacapital.net>,
Will Drewry <wad@chromium.org>,
Roland McGrath <roland@hack.frob.com>,
Pavel Emelyanov <xemul@parallels.com>,
"Serge E. Hallyn" <serge.hallyn@ubuntu.com>
Subject: Re: [PATCH v2] seccomp: add ptrace options for suspend/resume
Date: Thu, 4 Jun 2015 15:05:29 -0600 [thread overview]
Message-ID: <20150604210529.GJ3160@smitten> (raw)
In-Reply-To: <20150604183149.GA560@redhat.com>
Hi Oleg,
On Thu, Jun 04, 2015 at 08:31:49PM +0200, Oleg Nesterov wrote:
> On 06/03, Tycho Andersen wrote:
> >
> > @@ -556,6 +557,11 @@ static int ptrace_setoptions(struct task_struct *child, unsigned long data)
> > if (data & ~(unsigned long)PTRACE_O_MASK)
> > return -EINVAL;
> >
> > +#ifdef CONFIG_CHECKPOINT_RESTORE
> > + if (data & PTRACE_O_SUSPEND_SECCOMP && !may_suspend_seccomp())
> > + return -EPERM;
> > +#endif
> > +
>
> Well. This -EPERM doesn't look consistent...
>
> if config_enabled(CONFIG_CHECKPOINT_RESTORE) == F, we return success
> but PTRACE_O_SUSPEND_SECCOMP has no effect because of another ifdef in
> seccomp.
>
> OTOH, if CONFIG_SECCOMP=n, this option has no effect too but we return
> -EPERM even.
Yes, something like:
if (unlikely(data & PTRACE_O_SUSPEND_SECCOMP)) {
if (!config_enabled(CONFIG_CHECKPOINT_RESTORE) ||
!config_enabled(CONFIG_SECCOMP))
return -EINVAL;
if (!may_suspend_seccomp())
return -EPERM;
}
I guess.
> Also. Suppose that the tracer sets SUSPEND_SECCOMP and then drops
> CAP_SYS_ADMIN. After that it can't set or clear other ptrace options.
Is this a case we're concerned about? I think this should be ok (i.e.
"don't do that" :).
> So if we really want the security checks (I still think we do not ;)
> then we should probably check "flags & SUSPEND_SECCOMP" as well.
Good point.
> > +#ifdef CONFIG_CHECKPOINT_RESTORE
> > +bool may_suspend_seccomp(void)
> > +{
> > + if (!capable(CAP_SYS_ADMIN))
> > + return false;
> > +
> > + if (current->seccomp.mode != SECCOMP_MODE_DISABLED)
> > + return false;
>
> Heh. OK, I won't argue with the new check too ;)
Actually now that I think about it I agree with you, these checks
don't seem necessary. Even inside a user namespace, if you can ptrace
a process you can make it do whatever you want irrespective of
seccomp, as long as it has the necessary capabilities. Once the
seccomp checks are run after ptrace, they'll be enforced so you
couldn't have it call whatever you want in the first place.
Still, perhaps I'm missing something...
Tycho
next prev parent reply other threads:[~2015-06-04 21:05 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-03 22:09 [PATCH v2] seccomp: add ptrace options for suspend/resume Tycho Andersen
2015-06-04 16:44 ` Kees Cook
2015-06-04 17:15 ` Tycho Andersen
2015-06-04 18:12 ` Kees Cook
[not found] ` <CAGXu5jLBm6ZBptsDTrNV6OrFSwoZ__k3867-Ji+6oYuTQ8ncWQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-04 18:03 ` Oleg Nesterov
[not found] ` <20150604180303.GA32421-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-04 18:10 ` Kees Cook
[not found] ` <1433369396-13360-1-git-send-email-tycho.andersen-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
2015-06-04 18:31 ` Oleg Nesterov
2015-06-04 21:05 ` Tycho Andersen [this message]
2015-06-05 21:16 ` Oleg Nesterov
[not found] ` <20150605211650.GA25718-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2015-06-05 21:26 ` Tycho Andersen
2015-06-09 21:22 ` Tycho Andersen
2015-06-09 21:45 ` Kees Cook
[not found] ` <CAGXu5jLC-DcS-Mg5OTM-LEkuOKMMGrV2tq+Lky1Mxh_rDLa4Bg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-09 21:52 ` Tycho Andersen
2015-06-09 22:06 ` Kees Cook
[not found] ` <CAGXu5jKB1TZF7KpqpeRVaPZ4P4Zy+Y=WhMqDdrH0GJfs1bAfzA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-06-09 22:13 ` Tycho Andersen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150604210529.GJ3160@smitten \
--to=tycho.andersen@canonical.com \
--cc=keescook@chromium.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=oleg@redhat.com \
--cc=roland@hack.frob.com \
--cc=serge.hallyn@ubuntu.com \
--cc=wad@chromium.org \
--cc=xemul@parallels.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).