[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel][Xense-devel][PATCH][XSM][1/4] Xen Security Modules Patch

On Thu, 2007-03-08 at 16:21 +0000, Keir Fraser wrote:
> On 8/3/07 15:28, "George S. Coker, II" <gscoker@xxxxxxxxxxxxxx> wrote:
> > The hooks implemented by this patch provide a framework for security
> > modules to interpose and complement the existing privileged hypercall
> > operationsin xen as well as interpose on the discretionary operations
> > between domains.
> I guess the primary question here is whether the set of hooks is reasonable.
> The approach here seems to be comprehensive, to say the least.
> For example, do we envisage policies where it is not only desirable to
> interpose at event-channel binding time (particularly for interdomain
> channels) but also on every send? 

The check on send, enables for the flask module the creation of a one-
way event channel.  Flask can check whether A can send to B, but this
does not imply that B can send to A.  The primary value for this check
is in the construction of one-way information flows.

> Do you need to interpose on all types of
> bindings? Interposing on interdomain bindings is obviously required, but
> virq/pirq/ipi seem pretty dubious to me: virq/ipi bindings have only
> local-domain scope, and protection of physical resources (like pirqs) is
> already done via io capabilities.

The pirq bindings are meant to protect the hypervisor against abuse by
the control-plane, thereby ensuring that the control-plane cannot setup
resource bindings that are prohibited by the policy.  The control-plane
in this argument is decomposed or deprivileged by the running policy
such that it is unable to cause a policy reload and circumvent these

While the virq/ipi have local-domain scope, it is in the interest of
comprehensiveness that this hooks exists.  For a domain running a
general purpose OS, this hook has little value since anything checked
here will always likely need to be granted.  However, light-weight
domains for which the enforced policy could be justifiably more
restrictive, would benefit from this hook.  I admit the value is
unproven for Xen today. ;)

> Picking another example, is it useful to distinguish between the different
> ways that a domain can act on the visible state of an HVM guest. For
> example, you have hooks for setting pci link routes, and changing isa and
> pci intx interrupt levels (as separate hooks!): it seems to me that some
> more abstract capability could cover all these cases without loss of useful
> generality.
Separate hooks does not necessarily mean separate permissions - the
breakdown of permissions is module dependent.  Separate hooks allows for
a narrower per-hook interface (ensuring that the hooks are unlikely to
be abused for non-security purposes) and makes it unlikely that a given
hook will be separated from or lose context with the critical code path.

> As for the rest of the patches, I suspect they'll be largely okay. We should
> refactor all the security code in Xen to sit under xen/security or xen/xsm.
> In particular, flask/ and acm/ would be relocated under here. When you add
> hook code to existing files, please format the code to that file's
> conventions (which are typically not k&r or linux style!). 


> The flask_op()
> hypercall interface is rather opaque -- shouldn't you have a public header
> file to define what that interface is? Having the command enumeration
> directly above the hypercall implementation (and so private to Xen) seems
> odd. And I'm not sure about the Plan9-style sscanf-of-strings interface
> either. It should at least be documented. :-)
Fair enough.  Up to this point, I've been trying to reduce the amount of
code deposited and made public across the Xen tree.  It was not my
intention to hide the flask_op hypercall command structure.
Documentation will be forth coming after we straighten out any other
issues wrt XSM.

>  -- Keir
George S. Coker, II <gscoker@xxxxxxxxxxxxxx> 443-479-6944

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.