mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Arjan van de Ven <arjan@infradead.org>
To: "Thomas Fricaccia" <thomas_fricacci@yahoo.com>
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: LSM conversion to static interface
Date: Wed, 17 Oct 2007 20:06:07 -0700	[thread overview]
Message-ID: <20071017200607.0bb4da9a@laptopd505.fenrus.org> (raw)
In-Reply-To: <200710180134.l9I1YGBW011092@sapphire.spiritone.com>

On Wed, 17 Oct 2007 18:34:16 -0700
"Thomas Fricaccia" <thomas_fricacci@yahoo.com> wrote:
> 
> But then I noticed that, while the LSM would remain in existence, it
> was being closed to out-of-tree security frameworks.  Yikes!  Since
> then, I've been following the rush to put SMACK, TOMOYO and AppArmor
> "in-tree". 

I think your statement isn't quite correct: it's not closed to out of
tree security frameworks; it's no longer possible to do MODULES. You
can easily patch any of the ones you mention in (and in fact, this is
how distros that use apparmor will use it anyway). You are totally free
to compile whatever security module you want into your kernel and use
it... I would actually highly encourage that; the freedom to do that is
what Linux is about.

The problem with "loadable security modules" is actually fundamental,
and afaik even the AppArmor people mostly agree with this: The security
any such system provides is generally based on being in a "Safe" state
from the start, so knowing all objects that go through the system, being
able to label them (or at least do something with them, I realize the
term "label" is maybe seen as SELinux specific, but I mean it in a
generic way; the SELinux people will tell you I'm not a fan of their
approach *at all*), check them etc etc. A loadable-module approach can't
do that, it would, at load time, have to inspect the system, make sure
no operations are in "half process" when the LSM hooks go into effect
(just think of it: if you have an operation that gets 3 LSM checks done
to it, and you load and activate your module after the first one is
done as NOP, and your code only sees the 2nd and 3rd... showing that
that gives you sane behavior.... unpleasant no matter what you do) and
on unload, undo all it's work in a semi atomic way (just try doing it
race free is already impossible).

This is the prime motivation behind the change as I understand it: It
wasn't really an option to get this correct, the distros who deploy
these frameworks tend to compile them in anyway as a result, and there
are real downsides as well (see below).

> technical arguments seem to be (1) some people use the LSM interface
> for "non-security" purposes, which is frowned upon, (2) it's
> difficult to properly secure a system with an open-ended interface
> like LSM, and (3) my security framework should be all any fair-minded
> person would ever want, so we won't let you use something else.


you missed another one: the curent (now merged) patch allows a new
option (which is under development and will be proposed for 2.6.25): A
config option to compile the kernel such that the security framework of
your choice gets compiled as "exclusive" for your binary kernel, and
such that the code doesn't go via the LSM function pointers anymore, but
just via preprocessor rules, does direct calls instead. (And gets
patched out if you issue kernel commandline options to disable security
entirely). This takes away one of the main performance overheads of LSM
(many many function pointer calls) for those who know which LSM module
they'll be using.

That option obviously doesn't mean that you can't have multiple LSM
drivers anymore in the kernel, again it is an option that IF you know
you'll only use one, you can get rid of all the overhead of needing to
be ready to do multiple.

While this strict technically isn't in conflict with the non-modular
LSM (modular-LSM can obviously be a config option in itself as well),
it does make it a lot easier and cleaner to do things this way.

  parent reply	other threads:[~2007-10-18  3:08 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-18  1:34 Thomas Fricaccia
2007-10-18  2:03 ` Casey Schaufler
2007-10-18  2:21   ` Linus Torvalds
2007-10-18  3:06 ` Arjan van de Ven [this message]
     [not found] <167451.96128.qm@web38607.mail.mud.yahoo.com>
2007-10-18  2:18 ` Linus Torvalds
2007-10-19 20:26   ` Andreas Gruenbacher
2007-10-19 20:40     ` Linus Torvalds
2007-10-20 11:05       ` Jan Engelhardt
2007-10-20 22:57         ` James Morris
2007-10-21 22:59           ` Adrian Bunk
2007-10-23  9:13           ` Jan Engelhardt
2007-10-23  5:44         ` Giacomo Catenazzi
2007-10-23  8:55           ` Jan Engelhardt
2007-10-23  9:14             ` Giacomo A. Catenazzi
2007-10-23  9:18               ` Jan Engelhardt
2007-10-23 15:20             ` Serge E. Hallyn
2007-10-23 15:28               ` Jan Engelhardt
2007-10-23 15:34                 ` Serge E. Hallyn
2007-10-25 10:23                   ` Valdis.Kletnieks
2007-10-19 21:07     ` James Morris
2007-10-22  2:24 Thomas Fricaccia
2007-10-22  3:59 ` Greg KH
2007-10-22 17:47   ` Avi Kivity
2007-10-23 16:05     ` Adrian Bunk
2007-10-23 16:52   ` Geert Uytterhoeven
2007-10-22 10:07 ` Alan Cox
2007-10-22 16:10   ` Crispin Cowan
2007-10-22 16:50     ` Alan Cox
2007-10-22 16:56       ` Greg KH
2007-10-22 17:00 Thomas Fricaccia
2007-10-22 17:12 ` Alan Cox
2007-10-22 17:13 ` Greg KH
2007-10-23  5:14   ` Crispin Cowan
2007-10-23  5:32     ` david
2007-10-23 11:38   ` Simon Arlott
2007-10-23  5:53 ` Giacomo Catenazzi
2007-10-23  7:12   ` Crispin Cowan
2007-10-23  8:17     ` Giacomo A. Catenazzi
2007-10-24  3:41     ` Greg KH
2007-10-25 11:33 Jan Engelhardt
2007-10-26 10:40 ` Samir Bellabes

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=20071017200607.0bb4da9a@laptopd505.fenrus.org \
    --to=arjan@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=thomas_fricacci@yahoo.com \
    --cc=torvalds@linux-foundation.org \
    /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

all inboxes | Powered by JetHome®