All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eamon Walsh <ewalsh@tycho.nsa.gov>
To: "Christopher J. PeBenito" <cpebenito@tresys.com>
Cc: selinux@tycho.nsa.gov
Subject: Re: [PATCH] refpolicy: experimental X policy -v2
Date: Wed, 21 Mar 2007 15:58:28 -0400	[thread overview]
Message-ID: <46018E64.2080704@tycho.nsa.gov> (raw)
In-Reply-To: <1174496088.30666.11.camel@sgc>

Christopher J. PeBenito wrote:
> On Tue, 2007-03-20 at 18:27 -0400, Eamon Walsh wrote: 
>> Christopher J. PeBenito wrote:
>>> On Tue, 2007-02-13 at 18:28 -0500, Eamon Walsh wrote:
>>>> This is an experimental policy for use with the X userspace object 
>>>> manager.  It includes both unconfined and strict policy and is 
>>>> controlled by a tunable, xwindows_object_manager.  The labeling conf 
>>>> file in the X.org xserver git (XACE-SELINUX branch) assumes that this 
>>>> policy is loaded, i.e. the types listed in that file are defined in this 
>>>> policy.
>>> Unfortunately I didn't get a chance to look at this until today.  It'll
>>> take some time to fully understand all this, but I have some notes from
>>> my initial review inline:
>>>
>>>>  modules/services/xwindows.fc |   13 +
>>>>  modules/services/xwindows.if |  521 +++++++++++++++++++++++++++++++++++++++++++
>>>>  modules/services/xwindows.te |   65 +++++
>>> Eventually this should probably be merged into the xserver module.
>>> Potentially in a tunable, when that support becomes available.  However,
>>> for the purposes of vetting the design, a separate module is fine.
>> I think it's important to distinguish between the policy that governs 
>> the operation of the X server itself and the policy that governs X 
>> applications.  Putting everything into xserver may blur that distinction.
> 
> These are common rules among X client programs that are tied to how the
> enforcement of the X server works, which is why I think it belongs in
> the xserver module.

Look at the example of the /dev/mem access denial.  This issue was 
reported to me even though it's an X server issue, not an X application 
issue.  If I were in charge of managing X application policy on some 
installation, I wouldn't want the kernel policy for the X server jumbled 
in with it.

Just like how we're separating userspace object manager Flask 
definitions from the kernel ones.  In fact, I had originally created an 
entire separate directory "userspace" to use instead of services/. 
Reconsidered that, but still like the idea of separate modules.

> 
>>>> +template(`xwindows_displaymgr_client',`
>>>> +	gen_require(`
>>>> +		class xextension use;
>>>> +	')
>>>> +	xwindows_basic_client($1,$2,$3,$4)
>>>> +	tunable_policy(`xwindows_object_manager',`
>>>> +		# X Protocol Extensions
>>>> +		allow $3 output_xext_t:xextension use;
>>>> +
>>>> +		# allow server grabs
>>>> +		allow $3 $1_xserver_t:xserver { grab ungrab };
>>>> +		allow $3 $1_xserver_t:xinput { getattr activegrab };
>>>> +
>>>> +		# can move the mouse cursor
>>>> +		allow $3 $1_xserver_t:xinput warppointer;
>>>> +
>>>> +		# can set resource manager properties
>>>> +		allow $3 $2_rm_xproperty_t:property { write free };
>>>> +
>>>> +		# can enumerate windows
>>>> +		allow $3 $1_root_window_t:window enumerate;
>>>> +	')
>>>> +')
>>> I suspect this might work as part of xserver_user_client_template(), but
>>> the derived type for the property is going to be a problem.
>> Why is that?  The derived property types should all be defined in the 
>> same module.
>>
>> In this particular case though it's probably safe to say that $1 and $2 
>> will both be "xdm".
> 
> Ok, we'll leave it for now, though I'm not yet 100% convinced.
> 
>> I think a deeper question somewhat related to this is what the prefix on 
>> the X server's domain should be.  In the policy as written I'm assuming 
>> that the user domain prefix $2 and X server domain prefix $1 are 
>> independent.  This is because 1) the xserver runs as xdm_xserver_t when 
>> started from gdm but user_xserver_t when started by user with startx, 
>> and
> 
> Well thats because with startx the user itself is starting up the
> xserver, whereas with a display manager, you don't know the user until
> after the xserver is already running.

Maybe gdm should restart the X server after the user has logged in, or 
the xserver should change its own context.  Both programs already have 
SELinux patches, adding this functionality could be done.


> 
>>  2) because you might want to allow things like sysadm_xdomain_t
>> programs to work on user_xserver_t X servers.  It would be useful to
>> standardize on either always running the X server under a single
>> domain, or always running it with the user prefixed domain.
> 
> 
>>>> +template(`xwindows_resourcemgr_client',`
>>>> +	gen_require(`
>>>> +		class property all_property_perms;
>>>> +	')
>>>> +	tunable_policy(`xwindows_object_manager',`
>>>> +		# X Properties
>>>> +		# can read and write resource manager settings
>>>> +		allow $3 $2_rm_xproperty_t:property { read write };
>>>> +	')
>>>> +')
>>> Not sure why there is no $1.  Do you anticipate this being used outside
>>> of the one use in the patch?  If not, the rule might as well go in the
>>> caller.
> 
> You missed responding on this.
> 

I guess this one could be inlined in the per_user template for now.

But as far as outside callers, there will be external modules that need 
to call at a minimum the basic X client interface in the future to 
authorize their types for X access.



-- 
Eamon Walsh <ewalsh@tycho.nsa.gov>
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@tycho.nsa.gov with
the words "unsubscribe selinux" without quotes as the message.

  reply	other threads:[~2007-03-21 19:58 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-01-25 23:10 [PATCH] refpolicy: experimental X policy Eamon Walsh
2007-02-02 16:53 ` Ted X Toth
2007-02-13 20:26 ` Xavier Toth
2007-02-13 23:28   ` [PATCH] refpolicy: experimental X policy -v2 Eamon Walsh
2007-02-27 18:53     ` Christopher J. PeBenito
2007-03-20 22:27       ` Eamon Walsh
2007-03-20 22:58         ` Xavier Toth
2007-03-21 16:54         ` Christopher J. PeBenito
2007-03-21 19:58           ` Eamon Walsh [this message]
2007-03-21 20:53             ` Christopher J. PeBenito
2007-03-22  0:29               ` Eamon Walsh
2007-03-22 10:53                 ` Russell Coker

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=46018E64.2080704@tycho.nsa.gov \
    --to=ewalsh@tycho.nsa.gov \
    --cc=cpebenito@tresys.com \
    --cc=selinux@tycho.nsa.gov \
    /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.