[PATCH 3/5] v2 seccomp_filters: Enable ftrace-based system call filtering
Ingo Molnar
mingo at elte.hu
Wed May 18 04:34:59 EST 2011
* James Morris <jmorris at namei.org> wrote:
> On Tue, 17 May 2011, Ingo Molnar wrote:
>
> > I'm not sure i get your point.
>
> Your example was not complete as described. After an apparently simple
> specification, you've since added several qualifiers and assumptions, [...]
I havent added any qualifiers really (i added examples/description), the opt-in
method i mentioned in my first mail should be pretty robust:
| Firstly, using the filter code i deny the various link creation syscalls so
| that sandboxed code cannot escape for example by creating a symlink to
| outside the permitted VFS namespace. (Note: we opt-in to syscalls, that way
| new syscalls added by new kernels are denied by defalt. The current symlink
| creation syscalls are not opted in to.)
> [...] and I still doubt that it's complete.
I could too claim that i doubt that the SELinux kernel implementation is
secure!
So how about we both come up with specific examples about how it's not secure,
instead of going down the fear-uncertainty-and-doubt road? ;-)
> A higher level goal would look like
>
> "Allow a sandbox app access only to approved resources, to contain the
> effects of flaws in the app", or similar.
I see what you mean.
I really think that "restricting sandboxed code to only open files within a
given VFS namespace boundary" is the most useful highlevel description here -
which is really a subset of a "allow a sandbox app access only to an easily
approved set of files" highlevel concept.
There's no "to contain ..." bit here: *all* of the sandboxed app code is
untrusted, so there's no 'remote attacker' and we do not limit our threat to
flaws in the app. We want to contain apps to within a small subset of Linux
functionality, and we want to do that within regular apps (without having to be
superuser), full stop.
> Note that this includes a threat model (remote attacker taking control of the
> app) and a general and fully stated strategy for dealing with it.
Attacker does not have to be remote - most sandboxing concepts protect against
locally installed plugins/apps/applets. In sandboxing the whole app is
considered untrusted - not just some flaw in it, abused remotely.
> From there, you can start to analyze how to implement the goal, at which
> point you'd start thinking about configuration, assumptions, filesystem
> access, namespaces, indirect access (e.g. via sockets, rpc, ipc, shared
> memory, invocation).
Sandboxed code generally does not have access to anything fancy like that - if
it is added then all possible side effects have to be examined.
Thanks,
Ingo
More information about the Linuxppc-dev
mailing list