On Tue, Jun 9, 2015 at 2:52 PM, Tycho Andersen <tycho.andersen@xxxxxxxxxxxxx> wrote: > On Tue, Jun 09, 2015 at 02:45:49PM -0700, Kees Cook wrote: >> On Tue, Jun 9, 2015 at 2:22 PM, Tycho Andersen >> <tycho.andersen@xxxxxxxxxxxxx> wrote: >> > Hi Kees, Andy, >> > >> > On Fri, Jun 05, 2015 at 11:16:50PM +0200, Oleg Nesterov wrote: >> >> Hi Tycho, >> >> >> >> On 06/04, Tycho Andersen wrote: >> >> > > > +#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. >> >> >> >> Good ;) >> >> >> >> > Still, perhaps I'm missing something... >> >> >> >> Kees, Andy? >> > >> > Any thoughts on removing may_suspend_seccomp() all together? >> >> As in, just open-code the check? That would be fine by me. > > Sorry, I meant getting rid of any checks entirely. Using my argument > above I've managed to convince myself they don't add any value. You > guys know a lot more about this than I do, though. Well, as things stand currently, yes, that check would be redundant. The fact that ptrace can be used to bypass seccomp is kind of an accident, though. The design for ptrace-based seccomp managers was that the manager would do the work, rather than rewriting the syscall on behalf of the child. I don't think anything actually uses this effect. It's something we've wanted to fix, though a clean solution isn't obvious. As a result, I'm cautious to add this behavior in such a wide open fashion. For now, I'd like to limit the scope of this to CAP_SYS_ADMIN. I do think dropping the seccomp.mode check is fine -- this would mean you could set this flag before the child even added seccomp filters. So, instead of the function call, maybe just add the capable() call? -Kees -- Kees Cook Chrome OS Security -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html