From: "Christopher J. PeBenito" <cpebenito@tresys.com>
To: vyekkirala@TrustedCS.com
Cc: "'Karl MacMillan'" <kmacmillan@mentalrootkit.com>,
Venkat Yekkirala <vyekkirala@tcsfw4.tcs-sec.com>,
Joshua Brindle <jbrindle@tresys.com>,
selinux@tycho.nsa.gov
Subject: RE: Denials from newest kernel
Date: Thu, 12 Oct 2006 14:51:18 -0400 [thread overview]
Message-ID: <1160679078.5980.71.camel@sgc> (raw)
In-Reply-To: <000901c6eca6$3b6ddda0$cc0a010a@tcssec.com>
On Tue, 2006-10-10 at 14:56 -0500, Venkat Yekkirala wrote:
> > > My point is that you already were applying constraints to
> > the chaining
> > > of iptabels rules in the current secmark paradigm, which is that the
> > > secmark label on the last rule will prevail. Were you not?
> > >
> >
> > I wouldn't call making the last rule prevail a constraint in the
> > previous model, but yes that is how it worked.
> >
> > To me - and I guess Josh and Chris - it seems natural to
> > allow netfilter
> > to refine the label of a packet as it passes through the process of
> > evaluating the rules without imposing access checks. This is, as you
> > point out, because of the previous idea of secmark as a labeling only.
> >
> > However, in the new paradigm it seems that there is some value to only
> > enforcing access checks after the processing of the mangle
> > rules. Namely
> > it reduces the number of checks performed and allows the secmark rules
> > to be more similar - I think - to other iptables rules.
> >
> > I may be misunderstanding, but essentially I am suggesting
> > that secmark
> > labels the flow point through processing the mangle rules. After that
> > label is determined the flow checks are made against the
> > final label for
> > the flow point.
>
> This is exactly what I had intended to do but couldn't due to
> implementation constraints. James got us the one secmark field
> on the skb with great difficulty, and this secmark initially
> carries the label of the socket (or the security point it entered
> into the system in the forwarding case) it originates from. Now
> when we hit a secmark rule, there's no place to save the secmark
> context for a check later AFTER all the mangle rules have been
> processed for the packet. So, I have had to essentially perform the
> check at the time I hit the secmark rule and again each time
> I hit another applicable rule. If the check succeeds, I replace the
> secmark on the packet with the secmark from the secmark (aks security point)
> rule. I have to do this replacing of the secmark on the packet so that
> a following connsecmark/save would use the context from the secmark
> rule that it follows.
>
> >
> > What advantage do you see to make the check more often?
>
> As described above, we are forced to make the check due to the
> current implementation constraints, but I do see the advantage
> of a policy that isn't arbitrary, but forces the policy writer
> to aknowledge the multiple security points a packet hits by additionally
> having to write allow rules allowing one security point domain
> to flow out a succeeding one. A very useful and perhaps crude way
> to visualize this is to think of smaller pipes entering bigger
> ones, with network_t being the all-encompassing-one/the-network.
>
> Another way to describe this is:
>
> 1. One could define several levels of security check points (one in
> the OUTPUT chain and another in POSTROUTING for example, or
> multiple points in the OUTPUT chain itself for another example).
>
> 2. As a packet passes a security point, it assumes the label of the
> security point for further flow control checks at subsequent security
> points.
I read this email several times, and as a policy writer I repeatedly
came up with this question: what security goals can I express with the
multiple "security points" going though the mangle table? I thought
about this for a couple hours and could not come up with an answer.
I believe that for each direction, the mangle table represents _one
labeling decision_. Its just like the file_contexts: multiple lines may
match and the last one wins. Do we have access checks for each line
matched in the file_contexts? No. The access check is performed after
all of the file context entries have been tested when the file is
relabeled. The intermediate labels are irrelevant; if they were
relevant, setfiles would relabel the file for each matching line in
file_contexts. In the same line of logic, the intermediate labels in
the mangle table are irrelevant.
The arguments for the current implementation (which is not an
implementation of the agreed design) is implementation constraints.
This tells me that if we can't implement our design then we need to make
a new design. I realize thats an inflammatory remark, but I don't think
we're far off. I don't have any problem with label reconciliations or
any of the previously contentious parts, only the access control checks.
So what do I think are the pieces needed to express labeled networking
security goals?
Using a send as an example, and having the assumption that the
association has the label of the domain on the other end:
1. can the domain write to the socket?
2. can the socket send this packet in the basic networking sense
(ip address, port, protocol, etc)?
3. can the domain(socket?) match a particular spd entry?
4. can the domain send to the ipsec association?
5. can the packet flow into the ipsec association?
I don't see how the multiple checks nor all traffic eventually flowing
into network_t addresses anything in the above. My understanding of the
agreed design succeeded in meeting these goals. Coincidentally, the
mainline kernel already does #1-4 for the non labeled networking case.
The last one seems like a nice check, since you can say "only
httpd_client_packet_t and httpd_server_packet_t" can go into a apache_t
association; however, its debatable as to whether or not its strictly
required, if it came down it.
--
Chris PeBenito
Tresys Technology, LLC
(410) 290-1411 x150
--
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:[~2006-10-12 18:50 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 [this message]
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
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=1160679078.5980.71.camel@sgc \
--to=cpebenito@tresys.com \
--cc=jbrindle@tresys.com \
--cc=kmacmillan@mentalrootkit.com \
--cc=selinux@tycho.nsa.gov \
--cc=vyekkirala@TrustedCS.com \
--cc=vyekkirala@tcsfw4.tcs-sec.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.