WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xense-devel

Re: [Xense-devel] Labeling resources

To: David Palmer <dwpalmer.xense@xxxxxxxxx>
Subject: Re: [Xense-devel] Labeling resources
From: Reiner Sailer <sailer@xxxxxxxxxx>
Date: Sat, 5 Nov 2005 23:53:08 -0500
Cc: xense-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Sun, 06 Nov 2005 04:53:17 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <7d415b280510121105w6161cb0ctc7dfa197f3fbb51c@xxxxxxxxxxxxxx>
List-help: <mailto:xense-devel-request@lists.xensource.com?subject=help>
List-id: "A discussion list for those developing security enhancements for Xen." <xense-devel.lists.xensource.com>
List-post: <mailto:xense-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xense-devel>, <mailto:xense-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xense-devel>, <mailto:xense-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xense-devel-bounces@xxxxxxxxxxxxxxxxxxx
Sensitivity:

Hi David,

I finally get back to a normal working schedule.

xense-devel-bounces@xxxxxxxxxxxxxxxxxxx wrote on 10/12/2005 02:05:26 PM:

> Several times I've sat down to go over your reply only to discover
> that I'm suffering from sleep deprivation.  Fortunately, today I
> think I was able to make some sense of the string of words though
> I'm still confused about a few points.
>
> We seem to agree that we're not interested in this being a good
> solution for application level security assertions.  And the design
> goal of "pay" if and where you need security seems reasonable.  
> Hopefully this means we agree that this should help with system
> level security assertions.
>
> However, you lost me with the following:
>

> If I follow you, then you would like to minimize the trust we put
> into dom_storage. The trade-off seems to be
> a) by-design: minimize dom_storage (don't compile a net-frontend
> into it; dom_storage is not a user domain, it is part of the VMM and
> fully controlled; if it stops doing what it is designed to do, then
> we are in "TCB-trouble" anyway)
> b) by-acm-policy: restrict dom_storage properties through the hypervisor
>
> We are currently betting on a), i.e., we are betting on de-
> aggregation of Dom0 which we consider necessary in any case to
> achieve acceptably small TCB size. Discussions are good and valuable
> here also on xen-devel.

>
> It took me a while, but by VMM I think you mean the hypervisor and
> the collection of driver domains that provide resources.  Here are a
> few thoughts I had concerning what you're saying:

Yes. The reference monitor is in sHype/Xen represented by the hypervisor (ACM module and hooks) and the secure subsystems that virtualize devices outside the hypervisor (MAC domains, e.g., multi-type driver domains).

> * Driver domains are "privileged", but I'm not clear what the
> privileges include and how to decide when a domain is allowed to be
> a driver domain vs. a user domain.  


Driver domains are just domains that can have multiple STE types and have access to real hardware. The hypervisor allows such domains to communicate with any other user VM that has one of these types. Driver domains are a little more privileged by being allowed to call the ACM interface to discover the STE type of the "other side" or to retrieve access control decisions from the ACM. They also need priviledges to directly access the hardware. They are trusted to keep their types isolated inside their domain (there is no sharing of information inside driver domains; just sharing of hardware).

> * I can certainly see assigning a dedicated hard disk and network
> card to a "user domain" that runs a commodity OS and forgo resource
> sharing and the related overhead.  Must this then be a "privileged"
> driver domain in order to access the hardware directly, and thus is
> it part of the VMM and TCB?


Driver domains that allow access to hardware only to one type of user domains (i.e., this driver domain is single-typed) are nothing else than a normal user domain for us. Such a domain does not need any security privilege (it needs priviledge to access the hardware though) and must not be trusted (from a MAC point of view).

> * You state driver domains are "fully controlled" in option (a), but by what?
> * Certainly an exploit of a driver domain can interrupt what that
> domain was doing.  But it shouldn't be allowed to disrupt other
> domains outside their dependency upon the exploited domain.  How is
> that controlled if not by option (b)?


We constrain driver domains to the types they are assigned (assigning those types is an admin procedure; using setlabel script). All domains are subject to MAC hypervisor control and can only share (communicate) with domains with which they share a color.

> * I don't know what an "acceptably small TCB size" actually is
> beyond hand waving, "we couldn't make it any smaller and still have
> it work."   It can still have hard to detect vulnerabilities that
> allow malicious code to take control of the domain.

It is certainly smaller than the current dom0. But acceptably small means that the user is "happy" (if aware) of the trade-off between minimal TCB and the other system parameters (non-intrusive; off-the-shelf; inexpensive; runs anywhere; runs fast...). The sHype design for Xen aims at offering a flexible approach.

> There doesn't appear to be any access controls for these system-
> level domains.  For how you're suggesting STE is used, all system
> level domains have access to every other domain without restriction
> by the ACM.  


The assumptions are: the hypervisor and MAC domains form the reference monitor and are trusted. Following the principle of least privilege, we assign types to MAC domains so that they can only share with domains they actually serve. If they are broken, then only those types are affected that are assigned to the broken domain. We follow the minimal code principle by minimizing the TCB by minimizing MAC domains (well, once they exist :_).

> This creates two problems 1) without intense code
> reviews, it's not clear that there aren't extra dependencies between
> those domains, and 2) if one domain is compromised, the exploit can
> use otherwise unneeded functionality to attack other domains.  I'm
> assuming, however, that domains of the same type will be allowed to
> create connections between each other (which last I heard wasn't
> implemented yet).

I assume that you speak about direct event channels between user domains. The MAC is implemented. Today, all relevant communication (device related) still goes through Dom0.

> I expect you're already planning this, but it seems to me that the
> privilege bit on domains should be replaced by system-level access
> controls, thus eliminating the distinction between driver and user
> domains.


Yes, we are planning. But we won't act until there are actually driver domains other than dom0 with access to hardware. At this point, the privileges seem to require changes anyway.

> Special hypervisor calls for accessing hardware should be
> granted in the policy on an as-needed basis.  The TCB for a domain
> is then the list of domains it depends upon, the hardware the
> domains rely upon, and the hypervisor.  With sufficient hardware,
> different collections of domains will have different, although
> overlapping, TCB's.

You are right, since driver domains have multiple (but usually not all the types), the TCB regarding different types can differ. Right now, only dom0 has multiple types (and all of them); therefore we only have a single TCB even from this perspective. From a viewpoint of the VMM MAC there will only be one TCB, which includes all multi-type domains and the hypervisor (and a secure boot-process and policy mgmt not to forget).

> You made some good points about what you're trying to accomplish with STE:

> Our ACM policy does not aim at controling individual "wires" but the
> sharing capabilities of VM coalitions as a whole (note: the ACM
> mediation hooks do control individual wires but those don't relate
> back to individual policy statements).

>
> Followed by:

> The value of the STE hypervisor policy is to confine failures in
> user domains and to control the assignment of resources to domains
> (control it by formal policies rather than by ad-hoc administrator
> decisions). Failures in single-typed (general) domains are confined
> within one color, failures in multi-color domains (MAC domains) are
> confined to the sum of their colors (figuratively speaking, when
> failing, a MAC domain creates one new mixed color into which all the
> participating colors flow together).

>
> I see two claims that are being made:
> 1. If domain A and domain B do not share a color, then a failure in
> one cannot disrupt the operation of the other domain
> 2. All other useful security policies can be built within the
> constraints of the STE policy
>
> I currently don't believe claim 1 is true, because of the following comment:

> Sharing of information (not hardware devices) among two domains of
> different color is consequently forced to go through a domain that
> has the colors of both of those domains that need to share.


This multi-color domain is trusted (assuming TCB not compromised) and is assumed to keep the virtual domains --which are single typed-- strictly apart (isolated from each other).

> Thus domain C can provide a communication channel between A and B.  
> A dependency between them can be created through this channel even
> though they have different colors.  This effectively undermines the
> value you claimed for having STE as it does not prevent unwanted
> dependencies to limit the TCB.

The idea is that domain C is necessary and trusted. Using STE, you focus the trust into this domain.

> To relate this to Rusbhy's work, I think the colors either need to
> be defined as wires or regimes.  Trying to say it's both is only
> causing problems as wires and regimes have opposing requirements.
>
> If color's represent a regime, then I may believe your claim that
> the value for STE is in its ability to limit dependencies.  In which
> case any domain that is assigned multiple colors is responsible for
> maintaining separation between the different colored domains it
> communicates with, or it should fail to accept the policy if it
> cannot do this.  The assertion is that any two domains without a
> shared color cannot communicate other than through allowed
> communication with the outside world.  The exception is a possible
> trouble spot to be watched for and minimized, but is unavoidable.

This is the idea. I need to read a definition for "regime".

> Once we have separation, then it is interesting to consider
> independent policies for the colored regimes as a natural way to
> create a layer on top of STE.  For example, each color may be given
> a security server and policy file.  The driver domains would look up
> the shared color of the subject domain, then consult the color's
> security server to make policy decisions.  A means for resolving
> color ambiguity is needed though.  Without separation, this wouldn't
> work as there may be channels enabled by STE through another domain
> that is not controlled by the second layer policy.

This is a very good idea and seems to coincide with the layering of policies that we would like to experiment with. Let me try to describe the separation/sharing objectives in layers:

The lowest layer is the hypervisor. It isolates domains against each other by default and leaves only two doors open through which domains can communicate (ignoring all side/covert channels): event channels and shared memory.  Lowest layer means sharing of basic system hardware resources.

The "next" level are the ACM/hooks that guard these doors and allow domains to communicate through them only if they share at least a color. Assuming we trust all multi-color domains, then the ACM/hooks inside the hypervisor isolate sets of domains with the same type. The multi-color driver domains are trusted to isolate the virtual resources that they create and to enforce the STE policy (e.g., asking a decision from the ACM) between those single-color virtual resources and the single-color user domains trying to access them.

Up to this level (VMM), there is no information sharing between colors. The only sharing is regarding physical hardware resources but in a way that the separation of types is preserved withing the driver domains.

In a third level (which is outside the VMM scope but within our experimentation scope), there will be need to allow information sharing between different types since this is how real-world applications operate. This sharing is the most critical part because this sharing operates on fine-grained objects (files) and subjects (processes). It will likely require a MAC/MLS system configured to the application needs to get this right.

Only on this third level is actual sharing of information between domains.

> So far this seems reasonable for setting policies on domains that
> are outside the VMM.  What it lacks is the ability to set policy for
> driver domains inside the VMM.
>
> BTW, thanks for the references.

> Some of my favorite papers: Rushby & Randell: A distributed secure
> system; and J P Anderson: Computer security technology planning
> study. I was able to retrieve many interesting seminal security papers from
> http://seclab.cs.ucdavis.edu/projects/history/seminal.html .
> However, this web site seemed a little neglected when I last visited
> it (icons don't show).

>
> I had already printed and read the J.P. Anderson paper some time
> ago.  Long read.  I've had no luck getting the Distributed Secure
> System paper, but I put in a request at the library.
>
> Dave

>
Regards
Reiner

> _______________________________________________
> Xense-devel mailing list
> Xense-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xense-devel
_______________________________________________
Xense-devel mailing list
Xense-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xense-devel
<Prev in Thread] Current Thread [Next in Thread>