From: Casey Schaufler <casey@schaufler-ca.com>
To: "Christopher J. PeBenito" <cpebenito@tresys.com>
Cc: Paul Moore <paul@paul-moore.com>, SELinux@tycho.nsa.gov
Subject: Re: [PATCH 1/2] Add SELinux policy capability for always checking packet class.
Date: Fri, 08 Jun 2012 12:33:33 -0700 [thread overview]
Message-ID: <4FD2538D.4030707@schaufler-ca.com> (raw)
In-Reply-To: <4FD2445C.3070704@tresys.com>
On 6/8/2012 11:28 AM, Christopher J. PeBenito wrote:
> On 06/08/12 13:36, Paul Moore wrote:
>> On Thursday, June 07, 2012 02:28:01 PM Chris PeBenito wrote:
>>> Currently the packet class in SELinux is not checked if there are no
>>> SECMARK rules in the security or mangle netfilter tables. Some systems
>>> prefer that packets are always checked, for example, to protect the system
>>> should the netfilter rules fail to load or if the nefilter rules
>>> were maliciously flushed.
>>>
>>> Add the always_check_network policy capability which, when enabled, treats
>>> SECMARK as enabled, even if there are no netfilter SECMARK rules.
>>>
>>> Signed-off-by: Chris PeBenito <cpebenito@tresys.com>
>> ...
>>
>>> diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
>>> index 372ec65..ec7151b 100644
>>> --- a/security/selinux/hooks.c
>>> +++ b/security/selinux/hooks.c
>> ...
>>
>>> static int selinux_secmark_enabled(void)
>>> {
>>> - return (atomic_read(&selinux_secmark_refcount) > 0);
>>> + if (selinux_policycap_alwaysnetwork)
>>> + return 1;
>>> + else
>>> + return (atomic_read(&selinux_secmark_refcount) > 0);
>>> }
>> Nit picky, but why not simply:
>>
>> return (selinux_policycap_alwaysnetwork || atomic_read( ...
> Sure it can be done that way, but I'd argue that the intent is clearer the way its implemented in the patch.
Oh come on, no one does
if (...)
return x;
else
return y;
Much better to do
if (...)
return x;
return y;
The else is unnecessary.
>
>
>>> /*
>>> diff --git a/security/selinux/include/security.h
>>> b/security/selinux/include/security.h index dde2005..981c4ac 100644
>>> --- a/security/selinux/include/security.h
>>> +++ b/security/selinux/include/security.h
>>> @@ -68,12 +68,14 @@ extern int selinux_enabled;
>>> enum {
>>> POLICYDB_CAPABILITY_NETPEER,
>>> POLICYDB_CAPABILITY_OPENPERM,
>>> + POLICYDB_CAPABILITY_ALWAYSNETWORK,
>>> __POLICYDB_CAPABILITY_MAX
>>> };
>>> #define POLICYDB_CAPABILITY_MAX (__POLICYDB_CAPABILITY_MAX - 1)
>>>
>>> extern int selinux_policycap_netpeer;
>>> extern int selinux_policycap_openperm;
>>> +extern int selinux_policycap_alwaysnetwork;
>> Also nit picky, but it would seem like "selinux_policycap_netalways" is a bit
>> more consistent with the other variables.
> This response stems on what you wrote on a later cunch about the capability name, so you should probably read below first.
>
> I don't agree. If you go by current capabilities names/variables, based on the ordering of the words in the capability name, the words in the variable are in the same order. e.g.
>
> NETwork_PEER_controls -> selinux_policycap_netpeer
> OPEN_PERMs -> selinux_policycap_openperm
>
> hence
>
> ALWAYS_check_NETWORK -> selinux_policycap_alwaysnetwork
>
>>> diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
>>> index 3ad2902..cb893f9 100644
>>> --- a/security/selinux/selinuxfs.c
>>> +++ b/security/selinux/selinuxfs.c
>>> @@ -44,7 +44,8 @@
>>> /* Policy capability filenames */
>>> static char *policycap_names[] = {
>>> "network_peer_controls",
>>> - "open_perms"
>>> + "open_perms",
>>> + "always_check_network"
>>> };
>> Similarly, I think "network_always" is more consistent.
> Earlier discussions concluded with this capability name. (to be specific the discussion resolved with always_check_packets, but that was before the peer class was included)
>
>
--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.
next prev parent reply other threads:[~2012-06-08 19:33 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-07 18:28 [PATCH 1/2] Add SELinux policy capability for always checking packet class Chris PeBenito
2012-06-07 18:28 ` [PATCH 2/2] Update SELinux policy capability to always check peer class Chris PeBenito
2012-06-08 17:36 ` Paul Moore
2012-06-08 18:29 ` Christopher J. PeBenito
2012-06-08 17:36 ` [PATCH 1/2] Add SELinux policy capability for always checking packet class Paul Moore
2012-06-08 18:28 ` Christopher J. PeBenito
2012-06-08 18:55 ` Paul Moore
2012-06-08 19:43 ` Christopher J. PeBenito
2012-06-08 19:33 ` Casey Schaufler [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-06-06 17:28 Chris PeBenito
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=4FD2538D.4030707@schaufler-ca.com \
--to=casey@schaufler-ca.com \
--cc=SELinux@tycho.nsa.gov \
--cc=cpebenito@tresys.com \
--cc=paul@paul-moore.com \
/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.