All of lore.kernel.org
 help / color / mirror / Atom feed
From: Darrel Goeddel <dgoeddel@TrustedCS.com>
To: "Christopher J. PeBenito" <cpebenito@tresys.com>
Cc: vyekkirala@TrustedCS.com,
	"'Karl MacMillan'" <kmacmillan@mentalrootkit.com>,
	"'Joshua Brindle'" <jbrindle@tresys.com>,
	selinux@tycho.nsa.gov, sds@tycho.nsa.gov
Subject: Re: Denials from newest kernel
Date: Tue, 17 Oct 2006 14:23:58 -0500	[thread overview]
Message-ID: <45352DCE.7040605@trustedcs.com> (raw)
In-Reply-To: <1161109338.10392.12.camel@sgc>

Christopher J. PeBenito wrote:
>>>>This relationship is implicit in that a packet from apache_t can only
>>>>use an association labeled apache_t. This would be currently shown in the
>>>>SELinux policy itself as:
>>>>
>>>>allow apache_t apache_t:association { sendto };
>>>>
>>>>We did talk about moving this "implicit" relationship into the kernel itself
>>>>essentially eliminating the association indirection for SAs.
>>>
>>>
>>>Exactly, implicit isn't sufficient, because we won't be able to specify
>>>that http packets can go over the apache association but not dns
>>>packets.
>>
>>Wouldn't the absence of "allow dns_t apache_t:association { sendto };" prevent
>>dns packets using an apache_t association?
> 
> 
> What I'm referring in this case is dns client packets; the ones used
> when a process does a DNS name resolution.  I believe you're confusing
> that with dns server packets which named_t would be sending to answer
> DNS queries.  Apache can do name resolution, so it sends both httpd
> server packets and dns client packets.

Ahh, gotcha...  I think I'll need a little more info on what you're going after
though.  I'll take a stab anyway...

One option is to modify apache to use setsockcreate to indicate different
network usages.  However, I think what you are really wanting lies in the
scope of IPSec SPD definitions, not SELinux policy.  I'm assuming that you
are wanting http traffic to use one SA, and dns requests to use another SA
(If that is not correct, I'll try again).  All traffic generated by apache
will fall within the same equivalence class (apache_t) in the eyes of
SELinun, so further action there is not feasible.  The IPSec
configuration is able to make a distinction based on other properties
such as addresses/ports.  What I think you want to do in this case is to
set up SPD as such (very informal pseudo syntax...):

SPD1 localhost dnsserver:53 ipsec out context=...dns_t...
SPD2 * localhost:80 ipsec in context=...http_t...

you would then allow apache to use both of the SPDs:

allow apache_t { dns_t http_t } association:polmatch;

When apache tries to send dns requests, the polmatch on the SPD1 will
be chosen based on the IPSec selectors and the SELinux policy (polmatch)
The second would have failed due to port specification.  An SA will
be established with the type apache_t (from the socket).

Then when a http request is serviced, SPD2 will be chosen.  A new SA
would be used, also having the type apache_t (from the socket), but
with a different spi because of the differing SPDs.  The SA created
above with apache_t will not be looked at because they will come from
different SPDs.

I think that all seems right.  Does that help at all?  Anyone see where I
may be sniffing glues here (I haven't actually done this lately)?

<snip, hopefully nothing important>

>>I think the analogy between ipsec and files isn't working all that well :)
>>The policy (SELinux policy) must specifically allow for the sock vs SA
>>polmatch to choose the correct SPD and it must specifically allow for
>>the sock vs SA sendto to choose the correct SA.  If a domain such as
>>apache_t is allow to sendto SAs of many types (say http1_t, http2_t, etc.)
>>and SAs already exist for all of those types, it will use the first SA
>>that it can successfully sendto.  This would be analogous to passwd trying
>>/etc/shadow, /etc/shadow1, ... until it could write a shadow file.  In
>>any case, the policy still governs what can happen.  At least this is my
>>current understanding and that is always subject to change ;)
> 
> 
> I'm not trying to argue that polmatch is a bad check; I understand its
> reasons for existing.  I'm just saying its insufficient for checking if
> a packet can go over an association.  The above contrived example shows
> this, since you can't truly tell what you can access without looking at
> the FC.

IIRC, the polmatch check is used only for choosing the SPD, the sendto check
is used in determining the specific SA to use.

I think you can tell with certainty what you *can* access, but not what you
*will* access.  What you can access is based on policy.  What you will access
is based on the order in which the SA are looked at - first "match" wins, but
it still must be allowed via policy.

I should have pointed talked a bit more more about the idea of replacing the
association:sendto check with a straight up context comparison in the kernel
for choosing the SA.  This removes flexibility, but it also removes some
complexity.  In this scenario, the check for choosing the SA would be replaced
with something that actually looks for context equality (this is the exact
behavior that we demonstrated with the constraints u1==u2, r1==r2, etc.).
Explicitly requiring this equality would essentially make the SA a proxy for
the socket, along the lines that the socket was always a proxy for the process
before the likes of setsockcreate.  The association:sendto check could then
be thrown out because the SA context would always equal that of the socket.
The results are the same, but the path is different.  In the current case,
the policy helps determine the match, and analysis can take that into
consideration since it should know about the policy ;).  With the kernel mod,
the kernel will always enforce and exact match and the analysis can work from
that fact.  Would the hardcoded proxy behavior be preferable in your eyes?

-- 

Darrel

--
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.

  reply	other threads:[~2006-10-17 19:23 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-10-10 14:42 Denials from newest kernel Venkat Yekkirala
2006-10-10 18:33 ` Christopher J. PeBenito
2006-10-10 19:15   ` Venkat Yekkirala
2006-10-10 19:35     ` Karl MacMillan
2006-10-10 19:56       ` Venkat Yekkirala
2006-10-12 18:51         ` Christopher J. PeBenito
2006-10-12 20:06           ` Venkat Yekkirala
2006-10-13 15:06             ` Christopher J. PeBenito
2006-10-13 21:52               ` Venkat Yekkirala
2006-10-16 12:31                 ` Christopher J. PeBenito
2006-10-16 13:45                   ` Venkat Yekkirala
2006-10-16 13:53                     ` Christopher J. PeBenito
2006-10-16 14:16                       ` Venkat Yekkirala
2006-10-16 17:26                         ` Christopher J. PeBenito
2006-10-16 18:29                           ` Venkat Yekkirala
2006-10-16 18:53                             ` Paul Moore
2006-10-17 13:56                             ` Christopher J. PeBenito
2006-10-17 17:58                               ` Darrel Goeddel
2006-10-17 18:22                                 ` Christopher J. PeBenito
2006-10-17 19:23                                   ` Darrel Goeddel [this message]
2006-10-18 13:45                                     ` Christopher J. PeBenito
2006-10-19 15:57                                       ` Venkat Yekkirala
2006-10-20 12:41                                         ` Christopher J. PeBenito
2006-10-23 17:42                                           ` Venkat Yekkirala
2006-10-24  0:44                                             ` Christopher J. PeBenito
2006-10-13 22:42             ` Paul Moore
2006-10-14  1:00               ` Venkat Yekkirala
2006-10-14 12:13                 ` Paul Moore
2006-10-14 19:50                   ` Venkat Yekkirala
2006-10-14 20:41                     ` Paul Moore
2006-10-14 20:58                     ` James Morris
2006-10-14 23:01                       ` Venkat Yekkirala
2006-10-16 13:16                         ` Christopher J. PeBenito
2006-10-16 14:11                           ` Venkat Yekkirala
2006-10-14  7:36               ` James Morris
2006-10-14 12:18                 ` Paul Moore
2006-10-14 20:10                 ` Venkat Yekkirala
2006-10-10 20:05     ` Christopher J. PeBenito
2006-10-11 14:04       ` Venkat Yekkirala
2006-10-12  7:19         ` James Morris
  -- strict thread matches above, loose matches on Subject: below --
2006-10-10 16:28 Venkat Yekkirala
2006-10-10 15:45 Venkat Yekkirala
2006-10-10 14:18 Venkat Yekkirala
2006-10-10 14:42 ` Christopher J. PeBenito
2006-10-09 23:40 Venkat Yekkirala
2006-10-10  0:10 ` Joshua Brindle
2006-10-10 14:07 ` Christopher J. PeBenito
2006-10-10 15:55   ` Joshua Brindle
2006-10-06 21:34 Venkat Yekkirala
2006-10-06 21:17 Venkat Yekkirala
2006-10-09 14:03 ` Joshua Brindle
2006-10-06 21:15 Venkat Yekkirala
2006-10-06 21:31 ` Paul Moore
2006-10-06 20:05 Venkat Yekkirala
2006-10-06 19:43 Venkat Yekkirala
2006-10-06 15:11 Venkat Yekkirala
2006-10-06 15:17 ` Joshua Brindle
2006-10-06 16:25   ` Stephen Smalley
2006-10-06 15:21 ` Stephen Smalley
2006-10-06 15:44   ` Joshua Brindle
2006-10-06 15:56     ` Stephen Smalley
2006-10-06 16:59       ` Karl MacMillan
2006-10-06 18:31   ` Joshua Brindle
2006-10-06 19:04     ` Joshua Brindle
2006-10-06 14:23 Venkat Yekkirala
2006-10-06 14:50 ` Joshua Brindle
2006-10-06 13:45 Venkat Yekkirala
2006-10-06 13:55 ` Joshua Brindle
2006-10-06 14:39 ` Paul Moore
2006-10-06 13:31 Joshua Brindle
2006-10-06 17:32 ` James Morris
2006-10-06 18:41   ` Steve G
2006-10-06 19:50     ` James Morris
2006-10-06 19:56       ` Joshua Brindle
2006-10-06 20:13         ` Christopher J. PeBenito
2006-10-06 19:02 ` Paul Moore

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=45352DCE.7040605@trustedcs.com \
    --to=dgoeddel@trustedcs.com \
    --cc=cpebenito@tresys.com \
    --cc=jbrindle@tresys.com \
    --cc=kmacmillan@mentalrootkit.com \
    --cc=sds@tycho.nsa.gov \
    --cc=selinux@tycho.nsa.gov \
    --cc=vyekkirala@TrustedCS.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.