All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: David Howells <dhowells@redhat.com>
To: linux-unionfs@vger.kernel.org, selinux@tycho.nsa.gov
Cc: dhowells@redhat.com, linux-fsdevel@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH 7/7] SELinux: Check against union and lower labels for file ops on lower files
Date: Wed, 05 Nov 2014 15:43:29 +0000	[thread overview]
Message-ID: <20141105154328.2555.98013.stgit@warthog.procyon.org.uk> (raw)
In-Reply-To: <20141105154217.2555.578.stgit@warthog.procyon.org.uk>

File operations (eg. read, write) issued against a file that is attached to
the lower layer of a union file needs to be checked against the union-layer
label as well as the lower-layer label.

Signed-off-by: David Howells <dhowells@redhat.com>
---

 security/selinux/hooks.c |   14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 57f9c641779f..7084ccb1321c 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -1673,6 +1673,7 @@ static int file_has_perm(const struct cred *cred,
 			 struct file *file,
 			 u32 av)
 {
+	struct inode_security_struct *isec;
 	struct file_security_struct *fsec = file->f_security;
 	struct inode *inode = file_inode(file);
 	struct common_audit_data ad;
@@ -1681,7 +1682,7 @@ static int file_has_perm(const struct cred *cred,
 
 	ad.type = LSM_AUDIT_DATA_PATH;
 	ad.u.path = file->f_path;
-
+	
 	if (sid != fsec->sid) {
 		rc = avc_has_perm(sid, fsec->sid,
 				  SECCLASS_FD,
@@ -1693,8 +1694,15 @@ static int file_has_perm(const struct cred *cred,
 
 	/* av is zero if only checking access to the descriptor. */
 	rc = 0;
-	if (av)
-		rc = inode_has_perm(cred, inode, av, &ad);
+	if (av && likely(!IS_PRIVATE(inode))) {
+		if (fsec->union_isid) {
+			isec = inode->i_security;
+			rc = avc_has_perm(sid, fsec->union_isid, isec->sclass,
+					  av, &ad);
+		}
+		if (!rc)
+			rc = inode_has_perm(cred, inode, av, &ad);
+	}
 
 out:
 	return rc;


  parent reply	other threads:[~2014-11-05 15:43 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-05 15:42 [PATCH 0/7] Security: Provide unioned file support David Howells
2014-11-05 15:42 ` [PATCH 1/7] Security: Provide copy-up security hooks for unioned files David Howells
2014-11-06 17:46   ` Casey Schaufler
2014-11-07 14:49   ` David Howells
2014-11-07 14:49     ` David Howells
2014-11-07 21:22   ` Paul Moore
2014-11-07 21:22     ` Paul Moore
2014-11-07 22:10   ` David Howells
2014-11-07 22:10     ` David Howells
2014-11-10 15:28     ` Paul Moore
2014-11-10 15:28       ` Paul Moore
2014-11-05 15:42 ` [PATCH 2/7] Overlayfs: Use copy-up security hooks David Howells
2014-11-07 21:39   ` Paul Moore
2014-11-07 21:39     ` Paul Moore
2014-11-07 22:05   ` David Howells
2014-11-07 22:05     ` David Howells
2014-11-10 15:45     ` Paul Moore
2014-11-10 15:45       ` Paul Moore
2014-11-05 15:42 ` [PATCH 3/7] SELinux: Stub in copy-up handling David Howells
2014-11-07 21:44   ` Paul Moore
2014-11-07 21:44     ` Paul Moore
2014-11-07 22:08   ` David Howells
2014-11-07 22:08     ` David Howells
2014-11-10 15:47     ` Paul Moore
2014-11-10 15:47       ` Paul Moore
2014-11-05 15:42 ` [PATCH 4/7] Security: Pass the union-layer file path into security_file_open() David Howells
2014-11-05 15:43 ` [PATCH 5/7] SELinux: Handle opening of a unioned file David Howells
2014-11-05 16:35   ` Stephen Smalley
2014-11-06 12:03   ` David Howells
2014-11-06 12:03     ` David Howells
2014-11-06 13:13     ` Stephen Smalley
2014-11-06 13:13       ` Stephen Smalley
2014-11-06 13:34     ` David Howells
2014-11-06 13:34       ` David Howells
2014-11-27 14:15     ` David Howells
2014-11-27 14:15       ` David Howells
2014-11-06 12:27   ` David Howells
2014-11-06 12:27     ` David Howells
2014-11-06 12:27     ` David Howells
2014-11-27 17:25   ` David Howells
2014-11-27 17:25     ` David Howells
2015-06-12 15:30   ` David Howells
2015-06-12 15:30     ` David Howells
2015-06-15 12:57     ` Stephen Smalley
2015-06-15 12:57       ` Stephen Smalley
2015-06-16  9:41     ` David Howells
2015-06-16  9:41       ` David Howells
2015-06-16 16:49     ` David Howells
2015-06-16 16:49       ` David Howells
2015-06-16 17:20       ` Stephen Smalley
2015-06-16 17:20         ` Stephen Smalley
2015-06-16 21:34       ` David Howells
2015-06-16 21:34         ` David Howells
2015-06-17 14:44         ` Stephen Smalley
2015-06-17 14:44           ` Stephen Smalley
2015-06-18 10:15         ` David Howells
2015-06-18 10:15           ` David Howells
2015-06-18 12:48           ` Stephen Smalley
2015-06-18 12:48             ` Stephen Smalley
2015-06-18 15:26           ` David Howells
2015-06-18 15:26             ` David Howells
2015-06-18 10:32       ` David Howells
2015-06-18 10:32         ` David Howells
2015-06-18 12:16         ` Stephen Smalley
2015-06-18 12:16           ` Stephen Smalley
2014-11-05 15:43 ` [PATCH 6/7] SELinux: The copy-up operation must have read permission on the lower file David Howells
2014-11-05 16:43   ` Stephen Smalley
2014-11-05 17:54     ` Stephen Smalley
2014-11-06 13:39       ` Stephen Smalley
2014-11-27 14:17     ` David Howells
2014-11-27 14:17       ` David Howells
2014-11-27 14:21     ` David Howells
2014-11-27 14:21       ` David Howells
2014-11-27 14:21       ` David Howells
2014-11-05 15:43 ` David Howells [this message]
2014-11-06 17:35 ` [PATCH 0/7] Security: Provide unioned file support Casey Schaufler
2014-11-06 17:35   ` Casey Schaufler
2014-11-06 17:58 ` David Howells
2014-11-06 17:58   ` David Howells
2014-11-06 18:40   ` Casey Schaufler
2014-11-06 18:40     ` Casey Schaufler
2014-11-07 15:21   ` David Howells
2014-11-07 15:21     ` David Howells
2014-11-07 18:54     ` Daniel J Walsh
2014-11-07 18:54       ` Daniel J Walsh
2014-11-09  1:31       ` Casey Schaufler
2014-11-09  1:31         ` Casey Schaufler
2014-11-10 13:59         ` Daniel J Walsh
2014-11-10 13:59           ` Daniel J Walsh

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=20141105154328.2555.98013.stgit@warthog.procyon.org.uk \
    --to=dhowells@redhat.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=linux-unionfs@vger.kernel.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.