public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: David Howells <dhowells@redhat.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: aviro@redhat.com, linux-kernel@vger.kernel.org,
	selinux@tycho.nsa.gov, chrisw@sous-sol.org, jmorris@namei.org
Subject: Re: Security issues with local filesystem caching
Date: Thu, 26 Oct 2006 17:04:04 +0100	[thread overview]
Message-ID: <22702.1161878644@redhat.com> (raw)
In-Reply-To: <1161867101.16681.115.camel@moss-spartans.epoch.ncsc.mil>

Stephen Smalley <sds@tycho.nsa.gov> wrote:

> > Well, we could say that the cache daemon isn't actually allowed to read or
> > write any of these files; all it need to do is read their cache xattrs,
> > names and atimes, and rename and delete them.  It also needs to be able to
> > do readdir and lookup on the directories contained therein.
> 
> Yes, SELinux policy could impose such a restriction, as well as ensuring
> that only the cache daemon can access the cache in the first place (vs.  any
> arbitrary uid 0 process).

Okay.

> However, can the cache daemon effectively redirect an access by a process to
> a file that is being cached to another file by renaming cache files within
> the cache, such that the higher level permission checking and auditing would
> be applied to one file but the actual access would occur to another one?  If
> so, then it can effectively downgrade any file it is caching to the security
> context of any other file it is caching.

Whilst it can do a rename trick like that, there's then another check made by
the module once it has the dentry it wants.  This involves checking the
netfs's idea of the net file state against the cache's idea of the net file
state (coherency management) which is stored in an xattr attached to the cache
file.

This could be extended to revalidate the key also in some manner, but
currently if the mtime, ctime or file size are different to that on the
server, the cache file will be scrapped.

> > > But per-cache security attributes would be a reasonable approach to
> > > enabling finer-grained protection.
> > 
> > I'm not sure what you mean by this exactly.  I'd be happy to set the same
> > security attributes on the files and directories in the cache that impose
> > draconian restrictions, but whatever I do has to be representable in the
> > backing filesystem across reboots.
> 
> What I mean is that the cachefiles configuration would allow one to
> specify a set of security attributes (uid, gid, security context) per
> cache, and those attributes would then be applied by the cachefiles
> kernel module when creating files within that cache.

Oh, I see what you mean.  Yes, that's what I'm thinking of.

> This means that all files within a given cache have the same security
> attributes, but different caches can have different attributes.

That's fine too.

> Then one can run different cache daemon instances with different process
> security attributes, and ensure that each one can only access the caches it
> is responsible for managing.

Okay.

> Thus, the cache daemon instance for external data can't tamper with the
> cache of internal data, or vice versa.  Now, your default configuration may
> just use a single set of security attributes for all caches, and you might
> have a default definition in your configuration that is applied in the
> absence of any per-cache value, but you would be providing a mechanism by
> which people who want to isolate different caches can do so.

Sounds okay.  I'm not sure how I'd allow that to be configured.  I suspect
it'd have to involve the cache module calling an LSM hook for each cache.

> > > It would help to understand the objection to setting fsuid/fsgid more
> > > clearly - it may have had more to do with always setting them to 0 for
> > > all cache files, or with using that as a way to work around the lack of
> > > an explicit mechanism for bypassing security checks for internal
> > > accesses than with the setting of the fsuid/fsgid itself.
> > 
> > Christoph did enscribe thus:
> > 
> > | - in cachefiles_walk_to_object reseting the fsuid/fsgid is not allowed
> > 
> > Which I take to mean that I'm not allowed to change fsuid and fsgid.  Why
> > not, I'm not entirely certain.  I wouldn't have thought it would matter as
> > long as I put them back again before returning.
> 
> I think he also talked about binding the right access control credentials to
> the cache files, which I think is more along the lines of the discussion
> above (and Viro's concern).  I don't think it is so much about setting
> fsuid/fsgid per se, but about being able to protect the cache at finer
> granularity.

He did state both objections, yes; but he did specifically say something about
fsuid and fsgid.  However, he can always be overridden.

David

  reply	other threads:[~2006-10-26 16:05 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-25 10:14 Security issues with local filesystem caching David Howells
2006-10-25 16:52 ` Nate Diller
2006-10-25 16:48   ` Jeff V. Merkey
2006-10-25 17:21     ` David Howells
2006-10-25 17:42       ` Jeff V. Merkey
2006-10-25 18:15         ` David Howells
2006-10-25 20:21 ` Josef Sipek
2006-10-25 20:28   ` Josef Sipek
2006-10-26  9:56   ` David Howells
2006-10-27 15:54     ` Josef Sipek
2006-10-25 21:12 ` Stephen Smalley
2006-10-26 10:40   ` David Howells
2006-10-26 12:51     ` Stephen Smalley
2006-10-26 16:04       ` David Howells [this message]
2006-10-26 16:34         ` Stephen Smalley
2006-10-26 17:09           ` David Howells
2006-10-26 17:45             ` Stephen Smalley
2006-10-26 22:53               ` David Howells
2006-10-27 14:48                 ` Stephen Smalley
2006-10-27 15:42                   ` David Howells
2006-10-27 16:10                     ` Stephen Smalley
2006-10-27 16:25                       ` David Howells
2006-10-27 17:09                         ` Stephen Smalley
2006-10-27 17:34                           ` David Howells
2006-10-27 14:41               ` David Howells
2006-10-25 23:37 ` Alan Cox
2006-10-26  0:32   ` Al Viro
2006-10-26 10:45     ` David Howells
2006-10-26 10:54     ` Alan Cox
2006-10-26  9:14 ` Jan Dittmer
2006-10-26 10:55   ` David Howells
2006-10-26 11:52   ` Alan Cox
2006-10-31 21:26 ` David Howells
2006-11-01 13:28   ` Stephen Smalley
2006-11-01 15:34     ` David Howells
2006-11-01 15:58       ` Karl MacMillan
2006-11-01 17:45         ` Stephen Smalley
2006-11-02 16:29           ` Karl MacMillan
2006-11-02 18:04             ` Stephen Smalley
2006-11-01 17:30       ` Stephen Smalley
2006-11-02 17:16         ` David Howells
2006-11-02 19:49           ` Trond Myklebust
2006-11-02 20:38             ` David Howells
2006-11-02 21:24               ` Trond Myklebust
2006-11-03 10:27                 ` David Howells
2006-11-03 13:41                   ` Trond Myklebust
2006-11-03 15:23                     ` David Howells
2006-11-03 17:30                       ` Trond Myklebust
2006-11-14 19:22                         ` David Howells
2006-11-15 14:05                           ` Trond Myklebust
2006-11-15 15:28                             ` David Howells
2006-11-15 16:41                               ` Trond Myklebust
2006-11-15 18:17                                 ` David Howells
2006-11-03 15:33                     ` David Howells
2006-11-02 20:33           ` Stephen Smalley
2006-11-02 21:05             ` David Howells

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=22702.1161878644@redhat.com \
    --to=dhowells@redhat.com \
    --cc=aviro@redhat.com \
    --cc=chrisw@sous-sol.org \
    --cc=jmorris@namei.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sds@tycho.nsa.gov \
    --cc=selinux@tycho.nsa.gov \
    /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