On Fri, 2011-05-13 at 17:23 +0200, Peter Zijlstra wrote:
> On Fri, 2011-05-13 at 11:10 -0400, Eric Paris wrote:
> > Then again, I certainly don't see a
> > reason that this syscall hardening patch should be held up while a whole
> > new concept in computer security is contemplated...
> Which makes me wonder why this syscall hardening stuff is done outside
> of LSM? Why isn't is part of the LSM so that say SELinux can have a
> syscall bitmask per security context?
I could do that, but I like Will's approach better. From the PoV of
meeting security goals of information flow, data confidentiality,
integrity, least priv, etc limiting on the syscall boundary doesn't make
a lot of sense. You just don't know enough there to enforce these
things. These are the types of goals that SELinux and other LSMs have
previously tried to enforce. From the PoV of making the kernel more
resistant to attacks and making a process more resistant to misbehavior
I think that the syscall boundary is appropriate. Although I could do
it in SELinux it don't really want to do it there.
In case people are interested or confused let me give my definition of
two words I've used a bit in these conversations: discretionary and
mandatory. Any time I talk about a 'discretionary' security decision it
is a security decisions that a process imposed upon itself. Aka the
choice to use seccomp is discretionary. The choice to mark our own file
u-wx is discretionary. This isn't the best definition but it's one that
works well in this discussion. Mandatory security is one enforce by a
global policy. It's what selinux is all about. SELinux doesn't give
hoot what a process wants to do, it enforces a global policy from the
top down. You take over a process, well, too bad, you still have no
choice but to follow the mandatory policy.
The LSM does NOT enforce a mandatory access control model, it's just how
it's been used in the past. Ingo appears to me (please correct me if
I'm wrong) to really be a fan of exposing the flexibility of the LSM to
a discretionary access control model. That doesn't seem like a bad
idea. And maybe using the filter engine to define the language to do
this isn't a bad idea either. But I think that's a 'down the road'
project, not something to hold up a better seccomp.
> Making it part of the LSM also avoids having to add this prctl().
Well, it would mean exposing some new language construct to every LSM
(instead of a single prctl construct) and it would mean anyone wanting
to use the interface would have to rely on the LSM implementing those
hooks the way they need it. Honestly chrome can already get all of the
benefits of this patch (given a perfectly coded kernel) and a whole lot
more using SELinux, but (surprise surprise) not everyone uses SELinux.
I think it's a good idea to expose a simple interface which will be
widely enough adopted that many userspace applications can rely on it
The existence of the LSM and the fact that there exists multiple
security modules that may or may not be enabled really leads application
developers to be unable to rely on LSM for security. If linux had a
single security model which everyone could rely on we wouldn't really
have as big of an issue but that's not possible. So I'm advocating for
this series which will provide a single useful change which applications
can rely upon across distros and platforms to enhance the properties and
abilities of the linux kernel.