mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Serge E. Hallyn" <serue@us.ibm.com>
To: "David P. Quigley" <dpquigl@tycho.nsa.gov>
Cc: Jan Engelhardt <jengelh@computergmbh.de>,
	Simon Arlott <simon@fire.lp0.eu>, Adrian Bunk <bunk@kernel.org>,
	Chris Wright <chrisw@sous-sol.org>,
	linux-kernel@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andreas Gruenbacher <agruen@suse.de>,
	Thomas Fricaccia <thomas_fricacci@yahoo.com>,
	Jeremy Fitzhardinge <jeremy@goop.org>,
	James Morris <jmorris@namei.org>,
	Crispin Cowan <crispin@crispincowan.com>,
	Giacomo Catenazzi <cate@debian.org>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>
Subject: Re: Linux Security *Module* Framework (Was: LSM conversion to static interface)
Date: Wed, 24 Oct 2007 16:37:04 -0500	[thread overview]
Message-ID: <20071024213704.GA2867@sergelap.austin.ibm.com> (raw)
In-Reply-To: <1193259748.30930.91.camel@moss-terrapins.epoch.ncsc.mil>

Quoting David P. Quigley (dpquigl@tycho.nsa.gov):
> On Wed, 2007-10-24 at 21:04 +0200, Jan Engelhardt wrote:
> > On Oct 24 2007 19:59, Simon Arlott wrote:
> > >On 24/10/07 19:51, Jan Engelhardt wrote:
> > >> On Oct 24 2007 19:11, Simon Arlott wrote:
> > >>>
> > >>>* (I've got a list of access rules which are scanned in order until one of 
> > >>>them matches, and an array of one bit for every port for per-port default 
> > >>>allow/deny - although the latter could be removed.
> > >>>http://svn.lp0.eu/simon/portac/trunk/)
> > >> 
> > >> Besides the 'feature' of inhibiting port binding,
> > >> is not this task of blocking connections something for a firewall?
> > >
> > >The firewall blocks incoming connections where appropriate, yes, but it 
> > >doesn't stop one user binding to a port that another user expected to be able 
> > >to use. "Ownership" of ports (1-1023) shouldn't be something only root (via 
> > >CAP_NET_BIND_SERVICE) has. Lots of services also don't have standard ports 
> > >below 1024 and it's useful to be able to prevent users from binding to them 
> > >too.
> > 
> > Indeed.
> > 
> > 
> > There has been a feature in the security framework that probably did
> > not get much attention. It looks like YAGNI first, but on a closer look,
> > it becomes useful pretty quick - secondary_register.
> > 
> > As more and more simple LSM plugins pop up, stacking/chaining by means
> > of secondary_register becomes attractive again, especially if these LSMs
> > target different actions. This is probably the most useful thing why
> > the LSM interface should remain modular:
> > 
> > # Secure my files
> > modprobe apparmor
> > # -*- assuming apparmor implemented secondaries -*-
> > # Secure my ports
> > modprobe portac
> > # More rights to users
> > modprobe multiadm
> > # -*- whatever else comes along -*-
> 
> There is an issue that you overlook here and it is the successful
> composition of security models. While your idea is appealing it presents
> several problems. In your example you have 3 models with 3 policies.
> AppArmor which has its own port security mechanisms is a MAC model that
> from what I have seen appears to have a targeted least privilege policy.
> This means that AppArmor picks applications it wishes to secure and
> makes sure it can't do anything except what it needs to get its job
> done. Your module multiadm takes a user which is completely orthogonal
> to the concepts that AppArmor uses and gives him extra privileges. From
> what I have read and correct me if I am wrong portac deals with users
> instead of programs. Now lets try to reconcile this in a way that is
> sane to the user/administrator.
> 
> Apparmor wants to lock down some application, it gives the application
> access to a particular port, and the minimal set of privileges needed to
> execute the application. Since Apparmor is "easy to use" (note the
> quotes are to indicate they aren't my words not sarcasm) and SUSE comes
> with a targeted policy the user isn't concerned with it. Now multiadm
> comes along and an administrator wishes to grant extra rights to a user.
> This is fine with multiadm alone since it is the main security module,
> however we now have to compose this with AppArmor. So an administrator
> runs into an error running his application. Is this because his user
> isn't granted the proper escalated privileges? Is it because AppArmor
> needs an extra rule to run the application?  It could also be that our
> third module has blocked the application because it determined that even
> though multiadm specified that the user should have the elevated
> privileges to run the application that user shouldn't be able to bind to
> that port. 
> 
> There might be a better example to illustrate the problem however, this

The scariest thing to consider is programs which don't appropriately
handle failure.  So I don't know, maybe the system runs a remote logger
to which the multiadm policy gives some extra privs, but now the portac
module prevents it from sending its data.  And maybe, since the authors
never saw this failure as possible, the program happens to dump
sensitive data in a public readable place.  I *could* be more vague but
it'd be tough :)  But you get the idea.

Or, a better example, a privileged program reads some sensitive data -
as allowed by multiadm, writes it to a file, but apparmor prevented it
from chowning the file to the right user before writing, the program
kept writing anyway, and now the calling user hallyn, rather than the
privileged user sensitive_log_t, owns the file.

I ran into examples of this with the stacker module.  For instance
suddenly the capability module had to be changed so that it would allow
selinux xattrs to be written - leaving that arbitration to selinux.
That hadn't been necessary before since selinux simply didn't explicitly
call the secondary->inode_setxattr() hook.

Note I'm not arguing for or against, only arguing for caution :)

-serge

  reply	other threads:[~2007-10-24 21:37 UTC|newest]

Thread overview: 141+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <167451.96128.qm@web38607.mail.mud.yahoo.com>
2007-10-18  2:18 ` LSM conversion to static interface 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  4:09           ` LSM conversion to static interface [revert patch] Arjan van de Ven
2007-10-23  4:56             ` James Morris
2007-10-23  4:57               ` Arjan van de Ven
2007-10-23  5:16             ` Chris Wright
2007-10-23  9:10               ` Jan Engelhardt
2007-10-23  9:13                 ` Chris Wright
2007-10-23  9:14                   ` Jan Engelhardt
2007-10-24  0:31               ` Jeremy Fitzhardinge
2007-10-24  0:32                 ` Chris Wright
2007-10-24  5:06                 ` Arjan van de Ven
2007-10-24 11:50                   ` Linux Security *Module* Framework (Was: LSM conversion to static interface Simon Arlott
2007-10-24 12:55                     ` Adrian Bunk
2007-10-24 18:11                       ` Linux Security *Module* Framework (Was: LSM conversion to static interface) Simon Arlott
2007-10-24 18:51                         ` Jan Engelhardt
2007-10-24 18:59                           ` Simon Arlott
2007-10-24 19:04                             ` Jan Engelhardt
2007-10-24 21:02                               ` David P. Quigley
2007-10-24 21:37                                 ` Serge E. Hallyn [this message]
2007-10-24 21:51                                   ` Jan Engelhardt
2007-10-24 22:02                                     ` David P. Quigley
2007-10-24 23:13                                       ` Jan Engelhardt
2007-10-25  1:50                                   ` david
2007-10-25  3:50                                   ` Kyle Moffett
2007-10-24 21:42                                 ` Jan Engelhardt
2007-10-24 21:58                                 ` Casey Schaufler
2007-10-24 22:04                                   ` David P. Quigley
2007-10-25 11:38                                 ` Simon Arlott
2007-10-24 20:18                           ` Crispin Cowan
2007-10-24 20:46                             ` Jan Engelhardt
2007-10-24 21:29                               ` Casey Schaufler
2007-10-24 22:31                         ` Adrian Bunk
2007-10-24 22:58                           ` Casey Schaufler
2007-10-24 23:32                             ` Adrian Bunk
2007-10-24 23:42                               ` Linus Torvalds
2007-10-25  0:41                                 ` Chris Wright
2007-10-25  2:19                                   ` Arjan van de Ven
2007-10-30  3:37                                   ` Toshiharu Harada
2007-10-25  1:03                                 ` Casey Schaufler
2007-10-25  0:23                             ` Chris Wright
2007-10-25  0:35                               ` Ray Lee
2007-10-25  1:26                                 ` Peter Dolding
2007-10-25  1:41                                 ` Alan Cox
2007-10-25  2:11                                   ` david
2007-10-25 18:17                                   ` Ray Lee
2007-10-25 22:21                                     ` Alan Cox
2007-10-26  3:45                                       ` david
2007-10-26  5:44                                         ` Peter Dolding
2007-10-27 18:29                                     ` Pavel Machek
2007-10-28 18:48                                       ` Hua Zhong
2007-10-28 19:05                                       ` Hua Zhong
2007-10-28 22:08                                   ` Crispin Cowan
2007-10-28 22:50                                     ` Alan Cox
2007-11-26 20:42                                       ` serge
2007-10-28 23:55                                     ` Peter Dolding
2007-10-29  5:12                                     ` Arjan van de Ven
2007-10-25  9:19                                 ` Bernd Petrovitsch
2007-10-25 16:04                                   ` Ray Lee
2007-10-25 17:10                                     ` Arjan van de Ven
2007-10-30  9:41                                     ` Bernd Petrovitsch
2007-10-25  1:42                               ` Casey Schaufler
2007-10-27 18:22                                 ` Pavel Machek
2007-10-28 19:42                                   ` Linux Security *Module* Framework Tilman Schmidt
2007-10-28 20:46                                     ` Jan Engelhardt
2007-10-30  3:23                                 ` Linux Security *Module* Framework (Was: LSM conversion to static interface) Toshiharu Harada
2007-10-30  8:40                                   ` Jan Engelhardt
2007-10-30  8:50                                     ` Crispin Cowan
2007-10-30  9:27                                       ` Jan Engelhardt
2007-10-30  9:21                                     ` Toshiharu Harada
2007-10-25 11:44                           ` Simon Arlott
2007-10-25 23:09                           ` Tilman Schmidt
2007-10-26  2:56                             ` Greg KH
2007-10-26  7:09                               ` Jan Engelhardt
2007-10-26 15:54                                 ` Greg KH
2007-10-26  9:46                               ` Tilman Schmidt
2007-10-26 15:58                                 ` Greg KH
2007-10-26 16:32                                   ` Simon Arlott
2007-10-27 14:07                                   ` eradicating out of tree modules (was: Linux Security *Module* Framework) Tilman Schmidt
2007-10-28  1:21                                     ` Adrian Bunk
2007-10-26 23:26                                 ` Linux Security *Module* Framework (Was: LSM conversion to static interface) Adrian Bunk
2007-10-27 14:47                                   ` eradicating out of tree modules (was: : Linux Security *Module* Framework) Tilman Schmidt
2007-10-27 17:31                                     ` eradicating out of tree modules Stefan Richter
2007-10-28  0:55                                     ` eradicating out of tree modules (was: : Linux Security *Module* Framework) Adrian Bunk
2007-10-28  9:25                                       ` eradicating out of tree modules Stefan Richter
2007-10-28 12:01                                         ` Tilman Schmidt
2007-10-28 14:37                                           ` Stefan Richter
2007-10-28 14:59                                             ` Simon Arlott
2007-10-28 16:55                                             ` Tilman Schmidt
2007-10-28 18:51                                       ` Tilman Schmidt
2007-10-28 19:25                                         ` Adrian Bunk
2007-10-30  0:29                                           ` Tilman Schmidt
2007-10-30 13:11                                             ` linux-os (Dick Johnson)
2007-10-30 13:19                                               ` Xavier Bestel
2007-10-30 15:30                                               ` Greg KH
2007-10-29 23:51                               ` Out-of-tree modules [was: Linux Security *Module* Framework] Jan Engelhardt
2007-10-30  0:46                                 ` Lee Revell
2007-10-30  1:19                                   ` Jan Engelhardt
2007-10-27 14:08                     ` Linux Security *Module* Framework (Was: LSM conversion to static interface Tetsuo Handa
2007-11-05  6:42                       ` Crispin Cowan
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  1:12   ` Crispin Cowan
2007-10-29 10:01 Linux Security *Module* Framework (Was: LSM conversion to static interface) Rob Meijer
2007-10-29 10:24 ` Crispin Cowan
2007-10-29 13:32   ` Peter Dolding
2007-10-29 19:04 Rob Meijer
2007-10-29 19:41 ` Crispin Cowan
2007-10-30  5:13   ` Peter Dolding
2007-10-30 18:42     ` Jan Engelhardt
2007-10-30 19:14       ` Casey Schaufler
2007-10-30 19:50         ` Jan Engelhardt
2007-10-30 23:38       ` Peter Dolding
2007-10-31  0:16         ` david
2007-10-31  2:21           ` Peter Dolding
2007-10-31  3:43             ` Casey Schaufler
2007-10-31  5:08             ` david
2007-10-31  6:43             ` Crispin Cowan
2007-10-31  9:03               ` Peter Dolding
2007-10-31 10:10               ` Toshiharu Harada
2007-11-01  2:04                 ` Peter Dolding
2007-11-01  2:20                   ` Casey Schaufler
2007-11-01  2:51                     ` Peter Dolding
2007-11-01  7:17                       ` Jan Engelhardt
2007-11-01 11:49                         ` David Newall
2007-11-04  1:28                           ` Peter Dolding
2007-11-05  6:56                       ` Andrew Morgan
2007-11-05 13:29                         ` Serge E. Hallyn
2007-10-29 20:27 ` Casey Schaufler

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=20071024213704.GA2867@sergelap.austin.ibm.com \
    --to=serue@us.ibm.com \
    --cc=agruen@suse.de \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=bunk@kernel.org \
    --cc=cate@debian.org \
    --cc=chrisw@sous-sol.org \
    --cc=crispin@crispincowan.com \
    --cc=dpquigl@tycho.nsa.gov \
    --cc=jengelh@computergmbh.de \
    --cc=jeremy@goop.org \
    --cc=jmorris@namei.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=simon@fire.lp0.eu \
    --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

Powered by JetHome