From: ebiederm@xmission.com (Eric W. Biederman)
To: linux-security-module@vger.kernel.org
Subject: [RFC][PATCH] security: Make the selinux setxattr and removexattr hooks behave
Date: Sun, 01 Oct 2017 22:26:45 -0500 [thread overview]
Message-ID: <87shf2i616.fsf@xmission.com> (raw)
In-Reply-To: <1506688601.5571.1.camel@tycho.nsa.gov> (Stephen Smalley's message of "Fri, 29 Sep 2017 08:36:41 -0400")
Stephen Smalley <sds@tycho.nsa.gov> writes:
> On Thu, 2017-09-28 at 17:34 -0500, Eric W. Biederman wrote:
>> It looks like once upon a time a long time ago selinux copied code
>> from cap_inode_removexattr and cap_inode_setxattr into
>> selinux_inode_setotherxattr.??However the code has now diverged and
>> selinux is implementing a policy that is quite different than
>> cap_inode_setxattr and cap_inode_removexattr especially when it comes
>> to the security.capable xattr.
>>
>> To keep things working and to make the comments in
>> security/security.c
>> correct when the xattr is securit.capable, call cap_inode_setxattr
>> or cap_inode_removexattr as appropriate.
>>
>> I suspect there is a larger conversation to be had here but this
>> is enough to keep selinux from implementing a non-sense hard coded
>> policy that breaks other parts of the kernel.
>
> Originally SELinux called the cap functions directly since there was no
> stacking support in the infrastructure and one had to manually stack a
> secondary module internally. inode_setxattr and inode_removexattr
> however were special cases because the cap functions would check
> CAP_SYS_ADMIN for any non-capability attributes in the security.*
> namespace, and we don't want to impose that requirement on setting
> security.selinux. Thus, we inlined the capabilities logic into the
> selinux hook functions and adapted it appropriately. When the stacking
> support was introduced, it had to also special case these hooks so that
> only the primary module's hook is used for the same reason; otherwise,
> the kernel would end up applying a CAP_SYS_ADMIN check on setting
> security.selinux. Your change below is almost but not quite right
> since it only calls the cap functions when setting the capability
> attribute; the residual problem is that it will then skip the SELinux
> FILE__SETATTR (file setattr) permission check when setting those
> attributes, which we want to retain. So you need to only return early
> if cap_inode_setxattr()/removexattr() return an error; otherwise, you
> need to proceed to the SELinux check, and you can then delete the
> duplicated logic from selinux_inode_setotherxattr(). At which point it
> just becomes a call to dentry_has_perm() and you can just inline that
> into selinux_inode_setxattr() and selinux_inode_removexattr().
I will look at that.
Thank you,
Eric
--
To unsubscribe from this list: send the line "unsubscribe linux-security-module" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2017-10-02 3:26 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-28 22:34 [RFC][PATCH] security: Make the selinux setxattr and removexattr hooks behave Eric W. Biederman
2017-09-29 1:16 ` Casey Schaufler
2017-09-29 14:18 ` Stephen Smalley
[not found] ` <1506694737.5571.9.camel-+05T5uksL2qpZYMLLGbcSA@public.gmane.org>
2017-09-29 15:46 ` Casey Schaufler
2017-09-29 15:46 ` Casey Schaufler
[not found] ` <6f293107-6ff9-c4c7-f682-207a546c5061-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2017-09-30 16:22 ` Eric W. Biederman
2017-09-30 16:22 ` Eric W. Biederman
2017-09-30 17:01 ` Casey Schaufler
2017-09-30 20:40 ` Eric W. Biederman
2017-09-30 23:22 ` Casey Schaufler
2017-10-01 1:02 ` Eric W. Biederman
2017-10-01 18:52 ` Casey Schaufler
2017-10-01 19:54 ` Serge E. Hallyn
2017-10-01 22:11 ` Eric W. Biederman
[not found] ` <bf18e641-91ed-0d75-f514-c059b5dfbb14-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2017-10-01 1:02 ` Eric W. Biederman
[not found] ` <87d167ncms.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2017-09-30 23:22 ` Casey Schaufler
[not found] ` <db1c58f3-5a01-5276-eba7-5aac7cdcbcf5-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2017-09-30 20:40 ` Eric W. Biederman
[not found] ` <1913d5c4-64ef-36c1-e8ad-c779ff5c7995-iSGtlc1asvQWG2LlvL+J4A@public.gmane.org>
2017-09-29 14:18 ` Stephen Smalley
[not found] ` <87tvzmqwoi.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2017-09-29 1:16 ` Casey Schaufler
2017-09-29 12:36 ` Stephen Smalley
2017-09-29 12:36 ` Stephen Smalley
2017-10-02 3:26 ` Eric W. Biederman [this message]
[not found] ` <1506688601.5571.1.camel-+05T5uksL2qpZYMLLGbcSA@public.gmane.org>
2017-10-02 3:26 ` Eric W. Biederman
2017-10-02 14:38 ` [PATCH] selinux: Perform both commoncap and selinux xattr checks Eric W. Biederman
2017-10-02 14:38 ` Eric W. Biederman
2017-10-02 15:52 ` Serge E. Hallyn
[not found] ` <873771ipib.fsf_-_-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2017-10-02 15:52 ` Serge E. Hallyn
2017-10-03 16:24 ` Stephen Smalley
2017-10-03 21:08 ` Paul Moore
2017-10-03 21:08 ` Paul Moore
2017-10-03 21:08 ` Paul Moore
2017-10-03 21:26 ` Eric W. Biederman
2017-10-03 21:26 ` Eric W. Biederman
2017-10-04 14:53 ` Paul Moore
2017-10-04 14:53 ` Paul Moore
[not found] ` <87a8179b3u.fsf-aS9lmoZGLiVWk0Htik3J/w@public.gmane.org>
2017-10-04 14:53 ` Paul Moore
[not found] ` <CAHC9VhTzDKbP-h=GBaCTYOM9Sm=3C=nhNghmPoCRZitCpJj6YA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-10-03 21:26 ` Eric W. Biederman
2017-10-03 16:24 ` Stephen Smalley
-- strict thread matches above, loose matches on Subject: below --
2017-09-28 22:34 [RFC][PATCH] security: Make the selinux setxattr and removexattr hooks behave Eric W. Biederman
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=87shf2i616.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=linux-security-module@vger.kernel.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 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.