Re: README in libselinux

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

 



Eamon Walsh wrote:
> Stephen Smalley wrote:
>   
>> On Thu, 2008-10-30 at 13:16 +0900, KaiGai Kohei wrote:
>>   
>>     
>>> Hi,
>>>
>>> I got a question on the secure os users mailing-list in Japan.
>>> He said that he is interested in sVirt patches but not good at the way
>>> to apply the security policy of SELinux on userspace object manager, so
>>> it makes him hesitate to comment for the patches.
>>>
>>> We know great manpages are provided yet, but a structured documentation
>>> to implement SELinux aware userspace object managers is not well known.
>>> It is not unclear whether it should be included within README, or not.
>>>
>>> However, an official guidance for developers should be considered.
>>>
>>> Any comment?
>>>     
>>>       
>> The intent was that these papers would serve as such a reference,
>> although they don't necessarily go into the level of detail an
>> implementer might want and the interfaces have of course changed over
>> time:
>> http://www.nsa.gov/selinux/papers/gconf07-abs.cfm
>> http://www.nsa.gov/selinux/papers/xorg07-abs.cfm
>> http://www.nsa.gov/selinux/papers/radac07-abs.cfm
>>
>>   
>>     
>
> I started work on such a paper last year but it fell by the wayside. 
> Here's a summary of it:
>
> How to Write a Userspace Object Manager
>
> 1. Decide what classes and permissions your object manager will be
> enforcing control over.  These could already exist in policy, or if your
> object manager provides its own service a new set of classes and
> permissions will be needed.  This is a difficult step because trade-offs
> can be made:  two "different" actions on an object could be represented
> by different security classes for the two objects, different permissions
> on the same object type, or different types on the same object with the
> same permission.  Choose a set of object classses and permissions and be
> prepared for changes as you go.
>
> 2. Figure out how your objects will be labeled.  Who are the subjects? 
> What type transitions will be made to label each object?  Will some
> objects be lableled directly (not through a type transition)?  Are some
> objects lableled by name?  Will some objects be polyinstantiated?  Each
> object needs to be labeled, so there either needs to be space inside the
> object to store the label (via some opaque security field or user data
> field) or the SELinux code will need to store and manage labels itself.
>
> 3. Hook the SELinux code into the object manager so that it will gain
> control when:
>   a) The program starts up, so the AVC can be initialized.  You'll need
> to set selinux callbacks with selinux_set_callback(3), establish a
> mapping from names to numbers for your security classes and permissions
> with selinux_set_mapping(3), initialize the AVC with avc_open(3) and a
> label handle with selabel_open(3) if you're using the file contexts or a
> similar string-to-name mapping, look up the "unlabeled" context with
> security_get_initial_context(3), and anything else that needs to be done
> to get the userspace object manager set up and running.
>   b)  Objects are created and destroyed, so the object can be labeled
> properly.  There are compute_create() and compute_member() functions
> that mirror the kernel interfaces and which work on both SID's --
> avc_compute_create(3), avc_compute_member(3)  or security context
> strings directly  -- security_compute_create(3),
> security_compute_member(3).  A name lookup can be performed with
> selabel_lookup(3).  SID's (security_id_t pointers) are reference counted
> and need to be managed with sidput() and sidget() to prevent memory leaks.
>   c) Security decisions are made, so the policy can be queried. 
> avc_compute_create(3) and security_compute_av(3) are the key functions here.
>   

Whoops, avc_has_perm(3) is the key security decision function, not
avc_compute_create(3).

> 4. Figure out how the SELinux code will be configured.  If you have a
> mapping from names to contexts this can be either kept in a
> configuration file or a new backend for it could be added to
> libselinux.  There are various ancillary options such as permissive
> mode, and handle_unknown behavior which can be configured in the
> userspace AVC; this could be exposed to the user through conf file
> options or command line parameters.
>
>
>
>   


-- 
Eamon Walsh <ewalsh@xxxxxxxxxxxxx>
National Security Agency


--
This message was distributed to subscribers of the selinux mailing list.
If you no longer wish to subscribe, send mail to majordomo@xxxxxxxxxxxxx with
the words "unsubscribe selinux" without quotes as the message.

[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux