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

Re: [PATCH v13] xsm/flask: correcting initial sid assignment on context allocation



On Thu, Sep 8, 2022 at 9:26 PM Daniel P. Smith
<dpsmith@xxxxxxxxxxxxxxxxxxxx> wrote:
>
> The current flow for initial SID assignment is that the function
> flask_domain_alloc_security() allocates the security context and assigns an
> initial SID based on the limited state information it can access. Specifically
> the initial SID is determined by the domid of the domain, where it would 
> assign
> the label for one of the domains the hypervisor constructed with the exception
> of initial domain (dom0). In the case of the initial domain and all other
> domains it would use the unlabeled_t SID.
>
> When it came to the SID for the initial domain, its assignment was managed by
> flask_domain_create() where it would be switched from unlabeled_t to dom0_t.
> This logic worked under the assumption that the first call to
> flask_domain_create() would be the hypervisor constructing the initial domain.
> After which it would be the toolstack constructing the domain, for which it is
> expected to provide an appropriate SID or else unlabeled_t would be used.
>
> The issue is that the assumptions upon which the current flow is built were
> weak and are invalid for PV shim and dom0less. Under the current flow even
> though the initial domain for PV shim is not set as privileged, flask would
> label the domain as dom0_t. For dom0less, the situation is two-fold. First is
> that every domain after the first domain creation will fail as they will be
> labeled as unlabeled_t. The second is that if the dom0less configuration does
> not include a "dom0", the first domain created would be labeled as dom0_t.
>
> This commit only seeks to address the situation for PV shim, by including a
> check for xenboot_t context in flask_domain_alloc_security() to determine if
> the domain is being constructed at system boot. Then a check for is_privilged
> and pv_shim is added to differentiate between a "dom0" initial domain and a PV
> shim initial domain.
>
> The logic for flask_domain_create() was altered to allow the incoming SID to
> override the initial label. This allows a domain builder, whether it is a
> toolstack, dom0less, or hyperlaunch, to provide the correct label for the
> domain at construction.
>
> The base policy was adjusted to allow the idle domain under the xenboot_t
> context the ability to construct domains of both types, dom0_t and domu_t.
> This will enable a hypervisor resident domain builder to construct domains
> beyond the initial domain,
>
> Signed-off-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>

Reviewed-by: Jason Andryuk <jandryuk@xxxxxxxxx>

Thanks,
Jason



 


Rackspace

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