Changeset 2723

Show
Ignore:
Timestamp:
06/19/08 12:49:08 (2 months ago)
Author:
cpebenito
Message:

rbacsep: massive surgery on xserver to get it collapsed.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/rbacsep/policy/modules/services/xserver.if

    r2710 r2723  
    505505 
    506506interface(`xserver_role',` 
     507        typeattribute $2 x_userdomain; 
     508 
    507509        domtrans_pattern($2, xserver_exec_t, xserver_t) 
    508510        allow xserver_t $2:process signal; 
     
    586588####################################### 
    587589## <summary> 
    588 ##      Template for creating sessions on a 
    589 ##      prefix X server, with read-only 
     590##      Create sessions on the X server, with read-only 
    590591##      access to the X server shared 
    591592##      memory segments. 
    592593## </summary> 
    593 ## <param name="prefix"> 
    594 ##      <summary> 
    595 ##      The prefix of the domain (e.g., user 
    596 ##      is the prefix for user_t). 
    597 ##      </summary> 
    598 ## </param> 
    599594## <param name="domain"> 
    600595##      <summary> 
     
    608603## </param> 
    609604# 
    610 template(`xserver_ro_session_template',` 
    611         gen_require(` 
    612                 type $1_xserver_t, $1_xserver_tmp_t, $1_xserver_tmpfs_t; 
     605interface(`xserver_ro_session',` 
     606        gen_require(` 
     607                type xserver_t, xserver_tmp_t, xserver_tmpfs_t; 
    613608        ') 
    614609 
    615610        # Xserver read/write client shm 
    616         allow $1_xserver_t $2:fd use; 
    617         allow $1_xserver_t $2:shm rw_shm_perms; 
    618         allow $1_xserver_t $3:file rw_file_perms; 
     611        allow xserver_t $1:fd use; 
     612        allow xserver_t $1:shm rw_shm_perms; 
     613        allow xserver_t $2:file rw_file_perms; 
    619614 
    620615        # Connect to xserver 
    621         allow $2 $1_xserver_t:unix_stream_socket connectto; 
    622         allow $2 $1_xserver_t:process signal; 
     616        allow $1 xserver_t:unix_stream_socket connectto; 
     617        allow $1 xserver_t:process signal; 
    623618 
    624619        # Read /tmp/.X0-lock 
    625         allow $2 $1_xserver_tmp_t:file { getattr read }; 
     620        allow $1 xserver_tmp_t:file { getattr read }; 
    626621 
    627622        # Client read xserver shm 
    628         allow $2 $1_xserver_t:fd use; 
    629         allow $2 $1_xserver_t:shm r_shm_perms; 
    630         allow $2 $1_xserver_tmpfs_t:file read_file_perms; 
     623        allow $1 xserver_t:fd use; 
     624        allow $1 xserver_t:shm r_shm_perms; 
     625        allow $1 xserver_tmpfs_t:file read_file_perms; 
    631626') 
    632627 
    633628####################################### 
    634629## <summary> 
    635 ##      Template for creating sessions on a 
    636 ##      prefix X server, with read and write 
     630##      Create sessions on the X server, with read and write 
    637631##      access to the X server shared 
    638632##      memory segments. 
    639633## </summary> 
    640 ## <param name="prefix"> 
    641 ##      <summary> 
    642 ##      The prefix of the domain (e.g., user 
    643 ##      is the prefix for user_t). 
    644 ##      </summary> 
    645 ## </param> 
    646634## <param name="domain"> 
    647635##      <summary> 
     
    655643## </param> 
    656644# 
    657 template(`xserver_rw_session_template',` 
    658         gen_require(` 
    659                 type $1_xserver_t, $1_xserver_tmpfs_t; 
    660         ') 
    661  
    662         xserver_ro_session_template($1,$2,$3
    663         allow $2 $1_xserver_t:shm rw_shm_perms; 
    664         allow $2 $1_xserver_tmpfs_t:file rw_file_perms; 
     645interface(`xserver_rw_session',` 
     646        gen_require(` 
     647                type xserver_t, xserver_tmpfs_t; 
     648        ') 
     649 
     650        xserver_ro_session($1,$2
     651        allow $1 xserver_t:shm rw_shm_perms; 
     652        allow $1 xserver_tmpfs_t:file rw_file_perms; 
    665653') 
    666654 
    667655####################################### 
    668656## <summary> 
    669 ##      Template for creating full client sessions 
     657##      Create full client sessions 
    670658##      on a user X server. 
    671659## </summary> 
    672 ## <param name="prefix"> 
    673 ##      <summary> 
    674 ##      The prefix of the domain (e.g., user 
    675 ##      is the prefix for user_t). 
    676 ##      </summary> 
    677 ## </param> 
    678660## <param name="domain"> 
    679661##      <summary> 
     
    687669## </param> 
    688670# 
    689 template(`xserver_user_client_template',` 
     671interface(`xserver_user_client',` 
    690672#       refpolicywarn(`$0() has been deprecated, please use xserver_user_x_domain_template instead.') 
    691673        gen_require(` 
    692674                type xdm_t, xdm_tmp_t; 
    693                 type $1_xauth_home_t, $1_iceauth_home_t, $1_xserver_t, $1_xserver_tmpfs_t; 
    694         ') 
    695  
    696         allow $2 self:shm create_shm_perms; 
    697         allow $2 self:unix_dgram_socket create_socket_perms; 
    698         allow $2 self:unix_stream_socket { connectto create_stream_socket_perms }; 
     675                type xauth_home_t, iceauth_home_t, xserver_t, xserver_tmpfs_t; 
     676        ') 
     677 
     678        allow $1 self:shm create_shm_perms; 
     679        allow $1 self:unix_dgram_socket create_socket_perms; 
     680        allow $1 self:unix_stream_socket { connectto create_stream_socket_perms }; 
    699681 
    700682        # Read .Xauthority file 
    701         allow $2 $1_xauth_home_t:file { getattr read }; 
    702         allow $2 $1_iceauth_home_t:file { getattr read }; 
     683        allow $1 xauth_home_t:file { getattr read }; 
     684        allow $1 iceauth_home_t:file { getattr read }; 
    703685 
    704686        # for when /tmp/.X11-unix is created by the system 
    705         allow $2 xdm_t:fd use; 
    706         allow $2 xdm_t:fifo_file { getattr read write ioctl }; 
    707         allow $2 xdm_tmp_t:dir search; 
    708         allow $2 xdm_tmp_t:sock_file { read write }; 
    709         dontaudit $2 xdm_t:tcp_socket { read write }; 
     687        allow $1 xdm_t:fd use; 
     688        allow $1 xdm_t:fifo_file { getattr read write ioctl }; 
     689        allow $1 xdm_tmp_t:dir search; 
     690        allow $1 xdm_tmp_t:sock_file { read write }; 
     691        dontaudit $1 xdm_t:tcp_socket { read write }; 
    710692 
    711693        # Allow connections to X server. 
    712         files_search_tmp($2
    713  
    714         miscfiles_read_fonts($2
    715  
    716         userdom_search_user_home_dirs($1,$2
     694        files_search_tmp($1
     695 
     696        miscfiles_read_fonts($1
     697 
     698        userdom_search_user_home_dirs($1
    717699        # for .xsession-errors 
    718         userdom_dontaudit_write_user_home_content_files($1,$2) 
    719  
    720         xserver_ro_session_template(xdm,$2,$3) 
    721         xserver_rw_session_template($1,$2,$3) 
    722         xserver_use_user_fonts($1,$2) 
    723  
    724         xserver_read_xdm_tmp_files($2) 
     700        userdom_dontaudit_write_user_home_content_files($1) 
     701 
     702        xserver_ro_session($1,$2) 
     703        xserver_use_user_fonts($1) 
     704 
     705        xserver_read_xdm_tmp_files($1) 
    725706 
    726707        # Client write xserver shm 
    727708        tunable_policy(`allow_write_xshm',` 
    728                 allow $2 $1_xserver_t:shm rw_shm_perms; 
    729                 allow $2 $1_xserver_tmpfs_t:file rw_file_perms; 
     709                allow $1 xserver_t:shm rw_shm_perms; 
     710                allow $1 xserver_tmpfs_t:file rw_file_perms; 
    730711        ') 
    731712') 
     
    737718##      X client application. 
    738719## </summary> 
    739 ## <param name="user"> 
    740 ##      <summary> 
    741 ##      The prefix of the X server domain (e.g., user 
    742 ##      is the prefix for user_t). 
    743 ##      </summary> 
    744 ## </param> 
    745720## <param name="prefix"> 
    746721##      <summary> 
     
    757732template(`xserver_common_x_domain_template',` 
    758733        gen_require(` 
    759                 type $1_rootwindow_t, std_xext_t, shmem_xext_t; 
     734                type rootwindow_t, std_xext_t, shmem_xext_t; 
    760735                type xproperty_t, info_xproperty_t, clipboard_xproperty_t; 
    761736                type input_xevent_t, focus_xevent_t, property_xevent_t, manage_xevent_t; 
     
    766741                attribute xproperty_type; 
    767742                attribute xevent_type, xextension_type; 
    768                 attribute $1_x_domain, $1_input_xevent_type; 
     743                attribute input_xevent_type; 
    769744 
    770745                class x_drawable all_x_drawable_perms; 
     
    791766 
    792767        # Type attributes 
    793         typeattribute $3 $1_x_domain, x_domain; 
     768        typeattribute $2 x_domain; 
    794769 
    795770        # Types for properties 
    796         type $2_xproperty_t alias $2_default_xproperty_t, xproperty_type; 
     771        type $1_xproperty_t alias $1_default_xproperty_t, xproperty_type; 
    797772 
    798773        # Types for events 
    799         type $2_input_xevent_t, $1_input_xevent_type, xevent_type; 
    800         type $2_property_xevent_t, xevent_type; 
    801         type $2_focus_xevent_t, xevent_type; 
    802         type $2_manage_xevent_t, xevent_type; 
    803         type $2_default_xevent_t, xevent_type; 
    804         type $2_client_xevent_t, xevent_type; 
     774        type $1_input_xevent_t, input_xevent_type, xevent_type; 
     775        type $1_property_xevent_t, xevent_type; 
     776        type $1_focus_xevent_t, xevent_type; 
     777        type $1_manage_xevent_t, xevent_type; 
     778        type $1_default_xevent_t, xevent_type; 
     779        type $1_client_xevent_t, xevent_type; 
    805780 
    806781        ############################## 
     
    812787        # everyone can get the input focus of everyone else 
    813788        # this is a fundamental brokenness in the X protocol 
    814         allow $3 { x_domain x_server_domain }:x_device getfocus; 
     789        allow $2 { x_domain x_server_domain }:x_device getfocus; 
    815790        # everyone can grab the server 
    816791        # everyone does it, it is basically a free DOS attack 
    817         allow $3 x_server_domain:x_server grab; 
     792        allow $2 x_server_domain:x_server grab; 
    818793        # everyone can get the font path, etc. 
    819794        # this could leak out sensitive information 
    820         allow $3 x_server_domain:x_server getattr; 
     795        allow $2 x_server_domain:x_server getattr; 
    821796        # everyone can do override-redirect windows. 
    822797        # this could be used to spoof labels 
    823         allow $3 self:x_drawable override; 
     798        allow $2 self:x_drawable override; 
    824799        # everyone can receive management events on the root window 
    825800        # allows to know when new windows appear, among other things 
    826         allow $3 manage_xevent_t:x_event receive; 
     801        allow $2 manage_xevent_t:x_event receive; 
    827802 
    828803        # X Server 
    829804        # can read server-owned resources 
    830         allow $3 x_server_domain:x_resource read; 
     805        allow $2 x_server_domain:x_resource read; 
    831806        # can mess with own clients 
    832         allow $3 self:x_client { manage destroy }; 
     807        allow $2 self:x_client { manage destroy }; 
    833808 
    834809        # X Protocol Extensions 
    835         allow $3 std_xext_t:x_extension { query use }; 
    836         allow $3 shmem_xext_t:x_extension { query use }; 
    837         dontaudit $3 xextension_type:x_extension { query use }; 
     810        allow $2 std_xext_t:x_extension { query use }; 
     811        allow $2 shmem_xext_t:x_extension { query use }; 
     812        dontaudit $2 xextension_type:x_extension { query use }; 
    838813 
    839814        # X Properties 
    840815        # can read and write client properties 
    841         allow $3 $2_xproperty_t:x_property { create destroy read write append }; 
     816        allow $2 $1_xproperty_t:x_property { create destroy read write append }; 
    842817        type_transition $3 xproperty_t:x_property $2_xproperty_t; 
    843818        # can read and write cut buffers 
    844         allow $3 clipboard_xproperty_t:x_property { create read write append }; 
     819        allow $2 clipboard_xproperty_t:x_property { create read write append }; 
    845820        # can read info properties 
    846         allow $3 info_xproperty_t:x_property read; 
     821        allow $2 info_xproperty_t:x_property read; 
    847822        # can change properties of root window 
    848         allow $3 $1_rootwindow_t:x_drawable { list_property get_property set_property }; 
     823        allow $2 rootwindow_t:x_drawable { list_property get_property set_property }; 
    849824        # can change properties of own windows 
    850         allow $3 self:x_drawable { list_property get_property set_property }; 
     825        allow $2 self:x_drawable { list_property get_property set_property }; 
    851826 
    852827        # X Windows 
    853828        # operations allowed on root windows 
    854         allow $3 $1_rootwindow_t:x_drawable { getattr list_child add_child remove_child send receive }; 
     829        allow $2 rootwindow_t:x_drawable { getattr list_child add_child remove_child send receive }; 
    855830        # operations allowed on my windows 
    856         allow $3 self:x_drawable { create destroy getattr setattr read write show hide list_child add_child remove_child manage send receive }; 
    857         type_transition $3 $1_rootwindow_t:x_drawable $3
     831        allow $2 self:x_drawable { create destroy getattr setattr read write show hide list_child add_child remove_child manage send receive }; 
     832        type_transition $2 rootwindow_t:x_drawable $2
    858833 
    859834        # X Colormaps 
    860835        # can use the default colormap 
    861         allow $3 $1_rootwindow_t:x_colormap { read use add_color }; 
     836        allow $2 rootwindow_t:x_colormap { read use add_color }; 
    862837 
    863838        # X Input 
    864839        # can receive own events 
    865         allow $3 $2_input_xevent_t:{ x_event x_synthetic_event } receive; 
    866         allow $3 $2_property_xevent_t:{ x_event x_synthetic_event } receive; 
    867         allow $3 $2_focus_xevent_t:{ x_event x_synthetic_event } receive; 
    868         allow $3 $2_manage_xevent_t:{ x_event x_synthetic_event } receive; 
    869         allow $3 $2_default_xevent_t:{ x_event x_synthetic_event } receive; 
    870         allow $3 $2_client_xevent_t:{ x_event x_synthetic_event } receive; 
    871         type_transition $3 input_xevent_t:x_event $2_input_xevent_t; 
    872         type_transition $3 property_xevent_t:x_event $2_property_xevent_t; 
    873         type_transition $3 focus_xevent_t:x_event $2_focus_xevent_t; 
    874         type_transition $3 manage_xevent_t:x_event $2_manage_xevent_t; 
    875         type_transition $3 client_xevent_t:x_event $2_client_xevent_t; 
    876         type_transition $3 xevent_t:x_event $2_default_xevent_t; 
     840        allow $2 $1_input_xevent_t:{ x_event x_synthetic_event } receive; 
     841        allow $2 $1_property_xevent_t:{ x_event x_synthetic_event } receive; 
     842        allow $2 $1_focus_xevent_t:{ x_event x_synthetic_event } receive; 
     843        allow $2 $1_manage_xevent_t:{ x_event x_synthetic_event } receive; 
     844        allow $2 $1_default_xevent_t:{ x_event x_synthetic_event } receive; 
     845        allow $2 $1_client_xevent_t:{ x_event x_synthetic_event } receive; 
     846        type_transition $2 input_xevent_t:x_event $1_input_xevent_t; 
     847        type_transition $2 property_xevent_t:x_event $1_property_xevent_t; 
     848        type_transition $2 focus_xevent_t:x_event $1_focus_xevent_t; 
     849        type_transition $2 manage_xevent_t:x_event $1_manage_xevent_t; 
     850        type_transition $2 client_xevent_t:x_event $1_client_xevent_t; 
     851        type_transition $2 xevent_t:x_event $1_default_xevent_t; 
    877852        # can receive certain root window events 
    878         allow $3 focus_xevent_t:x_event receive; 
    879         allow $3 property_xevent_t:x_event receive; 
    880         allow $3 client_xevent_t:x_synthetic_event receive; 
    881         allow $3 manage_xevent_t:x_synthetic_event receive; 
     853        allow $2 focus_xevent_t:x_event receive; 
     854        allow $2 property_xevent_t:x_event receive; 
     855        allow $2 client_xevent_t:x_synthetic_event receive; 
     856        allow $2 manage_xevent_t:x_synthetic_event receive; 
    882857        # can send ICCCM events to myself 
    883         allow $3 $2_manage_xevent_t:x_synthetic_event send; 
     858        allow $2 $1_manage_xevent_t:x_synthetic_event send; 
    884859        # can send ICCCM events to the root window 
    885         allow $3 manage_xevent_t:x_synthetic_event send; 
    886         allow $3 client_xevent_t:x_synthetic_event send; 
     860        allow $2 manage_xevent_t:x_synthetic_event send; 
     861        allow $2 client_xevent_t:x_synthetic_event send; 
    887862 
    888863        # X Selections 
    889864        # can use the clipboard 
    890         allow $3 clipboard_xselection_t:x_selection { getattr setattr read }; 
     865        allow $2 clipboard_xselection_t:x_selection { getattr setattr read }; 
    891866        # can query all other selections 
    892         allow $3 xselection_t:x_selection { getattr read }; 
     867        allow $2 xselection_t:x_selection { getattr read }; 
    893868 
    894869        # Other X Objects 
    895870        # can create and use cursors 
    896         allow $3 self:x_cursor *; 
     871        allow $2 self:x_cursor *; 
    897872        # can create and use graphics contexts 
    898         allow $3 self:x_gc *; 
     873        allow $2 self:x_gc *; 
    899874        # can create and use colormaps 
    900         allow $3 self:x_colormap *; 
     875        allow $2 self:x_colormap *; 
    901876        # can read and write own objects 
    902         allow $3 self:x_resource { read write }; 
     877        allow $2 self:x_resource { read write }; 
    903878 
    904879        tunable_policy(`! xserver_object_manager',` 
    905                 # should be xserver_unconfined($3), 
     880                # should be xserver_unconfined($2), 
    906881                # but typeattribute doesnt work in conditionals 
    907882                gen_require(` 
    908                         attribute x_server_domain, x_domain; 
     883                        attribute x_domain; 
    909884                        attribute xproperty_type, xselection_type; 
    910885                        attribute xextension_type, xevent_type; 
    911                         attribute rootwindow_type; 
    912  
    913                         type remote_xclient_t; 
     886 
     887                        type xserver_t, rootwindow_t, remote_xclient_t; 
    914888                ') 
    915                 allow $3 x_server_domain:x_server *; 
    916                 allow $3 { x_domain rootwindow_type }:x_drawable *; 
    917                 allow $3 x_server_domain:x_screen *; 
    918                 allow $3 x_domain:x_gc *; 
    919                 allow $3 { x_domain rootwindow_type }:x_colormap *; 
    920                 allow $3 xproperty_type:x_property *; 
    921                 allow $3 xselection_type:x_selection *; 
    922                 allow $3 x_domain:x_cursor *; 
    923                 allow $3 { x_domain remote_xclient_t }:x_client *; 
    924                 allow $3 { x_domain x_server_domain }:x_device *; 
    925                 allow $3 xextension_type:x_extension *; 
    926                 allow $3 { x_domain x_server_domain }:x_resource *; 
    927                 allow $3 xevent_type:{ x_event x_synthetic_event } *; 
     889 
     890                allow $2 xserver_t:x_server *; 
     891                allow $2 { x_domain rootwindow_t }:x_drawable *; 
     892                allow $2 xserver_t:x_screen *; 
     893                allow $2 x_domain:x_gc *; 
     894                allow $2 { x_domain rootwindow_t }:x_colormap *; 
     895                allow $2 xproperty_type:x_property *; 
     896                allow $2 xselection_type:x_selection *; 
     897                allow $2 x_domain:x_cursor *; 
     898                allow $2 { x_domain remote_xclient_t }:x_client *; 
     899                allow $2 { x_domain xserver_t }:x_device *; 
     900                allow $2 xextension_type:x_extension *; 
     901                allow $2 { x_domain xserver_t }:x_resource *; 
     902                allow $2 xevent_type:{ x_event x_synthetic_event } *; 
    928903        ') 
    929904') 
     
    935910##      X client application. 
    936911## </summary> 
    937 ## <param name="user"> 
    938 ##      <summary> 
    939 ##      The prefix of the X server domain (e.g., user 
    940 ##      is the prefix for user_t). 
    941 ##      </summary> 
    942 ## </param> 
    943912## <param name="prefix"> 
    944913##      <summary> 
     
    961930        gen_require(` 
    962931                type xdm_t, xdm_tmp_t; 
    963                 type $1_xauth_home_t, $1_iceauth_home_t, $1_xserver_t, $1_xserver_tmpfs_t; 
    964         ') 
    965  
    966         allow $3 self:shm create_shm_perms; 
    967         allow $3 self:unix_dgram_socket create_socket_perms; 
    968         allow $3 self:unix_stream_socket { connectto create_stream_socket_perms }; 
     932                type xauth_home_t, iceauth_home_t, xserver_t, xserver_tmpfs_t; 
     933        ') 
     934 
     935        allow $2 self:shm create_shm_perms; 
     936        allow $2 self:unix_dgram_socket create_socket_perms; 
     937        allow $2 self:unix_stream_socket { connectto create_stream_socket_perms }; 
    969938 
    970939        # Read .Xauthority file 
    971         allow $3 $1_xauth_home_t:file { getattr read }; 
    972         allow $3 $1_iceauth_home_t:file { getattr read }; 
     940        allow $2 xauth_home_t:file { getattr read }; 
     941        allow $2 iceauth_home_t:file { getattr read }; 
    973942 
    974943        # for when /tmp/.X11-unix is created by the system 
    975         allow $3 xdm_t:fd use; 
    976         allow $3 xdm_t:fifo_file { getattr read write ioctl }; 
    977         allow $3 xdm_tmp_t:dir search; 
    978         allow $3 xdm_tmp_t:sock_file { read write }; 
    979         dontaudit $3 xdm_t:tcp_socket { read write }; 
     944        allow $2 xdm_t:fd use; 
     945        allow $2 xdm_t:fifo_file { getattr read write ioctl }; 
     946        allow $2 xdm_tmp_t:dir search; 
     947        allow $2 xdm_tmp_t:sock_file { read write }; 
     948        dontaudit $2 xdm_t:tcp_socket { read write }; 
    980949 
    981950        # Allow connections to X server. 
    982         files_search_tmp($3
    983  
    984         miscfiles_read_fonts($3
    985  
    986         userdom_search_user_home_dirs($1,$3
     951        files_search_tmp($2
     952 
     953        miscfiles_read_fonts($2
     954 
     955        userdom_search_user_home_dirs($2
    987956        # for .xsession-errors 
    988         userdom_dontaudit_write_user_home_content_files($1,$3) 
    989  
    990         xserver_ro_session_template(xdm,$3,$4) 
    991         xserver_rw_session_template($1,$3,$4) 
    992         xserver_use_user_fonts($1,$3) 
    993  
    994         xserver_read_xdm_tmp_files($3) 
     957        userdom_dontaudit_write_user_home_content_files($2) 
     958 
     959        xserver_ro_session($2,$3) 
     960        xserver_use_user_fonts($2) 
     961 
     962        xserver_read_xdm_tmp_files($2) 
    995963 
    996964        # X object manager 
    997         xserver_common_x_domain_template($1,$2,$3
     965        xserver_common_x_domain_template($1,$2
    998966 
    999967        # Client write xserver shm 
    1000968        tunable_policy(`allow_write_xshm',` 
    1001                 allow $3 $1_xserver_t:shm rw_shm_perms; 
    1002                 allow $3 $1_xserver_tmpfs_t:file rw_file_perms; 
     969                allow $2 xserver_t:shm rw_shm_perms; 
     970                allow $2 xserver_tmpfs_t:file rw_file_perms; 
    1003971        ') 
    1004972') 
     
    1019987##      </p> 
    1020988## </desc> 
    1021 ## <param name="userdomain_prefix"> 
    1022 ##      <summary> 
    1023 ##      The prefix of the user domain (e.g., user 
    1024 ##      is the prefix for user_t). 
    1025 ##      </summary> 
    1026 ## </param> 
    1027 ## <param name="domain"> 
    1028 ##      <summary> 
    1029 ##      Domain allowed access. 
    1030 ##      </summary> 
    1031 ## </param> 
    1032 
    1033 template(`xserver_use_user_fonts',` 
    1034         gen_require(` 
    1035                 type $1_fonts_t, $1_fonts_cache_t, $1_fonts_config_t; 
     989## <param name="domain"> 
     990##      <summary> 
     991##      Domain allowed access. 
     992##      </summary> 
     993## </param> 
     994
     995interface(`xserver_use_user_fonts',` 
     996        gen_require(` 
     997                type user_fonts_t, user_fonts_cache_t, user_fonts_config_t; 
    1036998        ') 
    1037999 
    10381000        # Read per user fonts 
    1039         allow $2 $1_fonts_t:dir list_dir_perms; 
    1040         allow $2 $1_fonts_t:file read_file_perms; 
     1001        allow $1 user_fonts_t:dir list_dir_perms; 
     1002        allow $1 user_fonts_t:file read_file_perms; 
    10411003 
    10421004        # Manipulate the global font cache 
    1043         manage_dirs_pattern($2,$1_fonts_cache_t,$1_fonts_cache_t) 
    1044         manage_files_pattern($2,$1_fonts_cache_t,$1_fonts_cache_t) 
     1005        manage_dirs_pattern($1, user_fonts_cache_t, user_fonts_cache_t) 
     1006        manage_files_pattern($1, user_fonts_cache_t, user_fonts_cache_t) 
    10451007 
    10461008        # Read per user font config 
    1047         allow $2 $1_fonts_config_t:dir list_dir_perms; 
    1048         allow $2 $1_fonts_config_t:file read_file_perms; 
    1049  
    1050         userdom_search_user_home_dirs($1,$2) 
    1051 ') 
    1052  
    1053 ######################################## 
    1054 ## <summary> 
    1055 ##      Transition to a user Xauthority domain. 
    1056 ## </summary> 
    1057 ## <desc> 
    1058 ##      <p> 
    1059 ##      Transition to a user Xauthority domain. 
    1060 ##      </p> 
    1061 ##      <p> 
    1062 ##      This is a templated interface, and should only 
    1063 ##      be called from a per-userdomain template. 
    1064 ##      </p> 
    1065 ## </desc> 
    1066 ## <param name="userdomain_prefix"> 
    1067 ##      <summary> 
    1068 ##      The prefix of the user domain (e.g., user 
    1069 ##      is the prefix for user_t). 
    1070 ##      </summary> 
    1071 ## </param> 
    1072 ## <param name="domain"> 
    1073 ##      <summary> 
    1074 ##      Domain allowed access. 
    1075 ##      </summary> 
    1076 ## </param> 
    1077 
    1078 template(`xserver_domtrans_user_xauth',` 
    1079         gen_require(` 
    1080                 type $1_xauth_t, xauth_exec_t; 
    1081         ') 
    1082  
    1083         domtrans_pattern($2, xauth_exec_t, $1_xauth_t) 
    1084 ') 
    1085  
    1086 ######################################## 
    1087 ## <summary> 
    1088 ##      Transition to a user Xauthority domain. 
    1089 ## </summary> 
    1090 ## <desc> 
    1091 ##      <p> 
    1092 ##      Transition to a user Xauthority domain. 
    1093 ##      </p> 
    1094 ##      <p> 
    1095 ##      This is a templated interface, and should only 
    1096 ##      be called from a per-userdomain template. 
    1097 ##      </p> 
    1098 ## </desc> 
    1099 ## <param name="userdomain_prefix"> 
    1100 ##      <summary> 
    1101 ##      The prefix of the user domain (e.g., user 
    1102 ##      is the prefix for user_t). 
    1103 ##      </summary> 
    1104 ## </param> 
    1105 ## <param name="domain"> 
    1106 ##      <summary> 
    1107 ##      Domain allowed access. 
    1108 ##      </summary> 
    1109 ## </param> 
    1110 
    1111 template(`xserver_user_home_dir_filetrans_user_xauth',` 
    1112         gen_require(` 
    1113                 type $1_xauth_home_t; 
    1114         ') 
    1115  
    1116         userdom_user_home_dir_filetrans($1, $2, $1_xauth_home_t, file) 
     1009        allow $1 user_fonts_config_t:dir list_dir_perms; 
     1010        allow $1 user_fonts_config_t:file read_file_perms; 
     1011 
     1012        userdom_search_user_home_dirs($1) 
     1013') 
     1014 
     1015######################################## 
     1016## <summary> 
     1017##      Transition to the Xauthority domain. 
     1018## </summary> 
     1019## <param name="domain"> 
     1020##      <summary> 
     1021##      Domain allowed access. 
     1022##      </summary> 
     1023## </param> 
     1024
     1025interface(`xserver_domtrans_xauth',` 
     1026        gen_require(` 
     1027                type xauth_t, xauth_exec_t; 
     1028        ') 
     1029 
     1030        domtrans_pattern($1, xauth_exec_t, xauth_t) 
     1031') 
     1032 
     1033######################################## 
     1034## <summary> 
     1035##      Create a Xauthority file in the user home directory. 
     1036## </summary> 
     1037## <param name="domain"> 
     1038##      <summary> 
     1039##      Domain allowed access. 
     1040##      </summary> 
     1041## </param> 
     1042
     1043interface(`xserver_user_home_dir_filetrans_user_xauth',` 
     1044        gen_require(` 
     1045                type xauth_home_t; 
     1046        ') 
     1047 
     1048        userdom_user_home_dir_filetrans($1, xauth_home_t, file) 
    11171049') 
    11181050 
     
    11291061# 
    11301062interface(`xserver_use_all_users_fonts',` 
    1131         gen_require(` 
    1132                 attribute fonts_type, fonts_cache_type, fonts_config_type; 
    1133         ') 
    1134  
    1135         # Read per user fonts 
    1136         allow $1 fonts_type:dir list_dir_perms; 
    1137         allow $1 fonts_type:file read_file_perms; 
    1138  
    1139         # Manipulate the global font cache 
    1140         manage_dirs_pattern($1,fonts_cache_type,fonts_cache_type) 
    1141         manage_files_pattern($1,fonts_cache_type,fonts_cache_type) 
    1142  
    1143         # Read per user font config 
    1144         allow $1 fonts_config_type:dir list_dir_perms; 
    1145         allow $1 fonts_config_type:file read_file_perms; 
    1146  
    1147         userdom_search_all_users_home_dirs($1) 
     1063        refpolicywarn(`$0() has been deprecated, please use xserver_use_user_fonts.') 
     1064        xserver_use_user_fonts($1) 
    11481065') 
    11491066 
     
    11591076# 
    11601077interface(`xserver_read_all_users_xauth',` 
    1161         gen_require(` 
    1162                 attribute xauth_home_type; 
    1163         ') 
    1164  
    1165         allow $1 xauth_home_type:file read_file_perms; 
    1166         userdom_search_all_users_home_dirs($1) 
     1078        refpolicywarn(`$0() and/or $1 needs to be exempt on files.') 
     1079        gen_require(` 
     1080                type xauth_home_t; 
     1081        ') 
     1082 
     1083        allow $1 xauth_home_t:file read_file_perms; 
     1084        userdom_search_user_home_dirs($1) 
    11671085') 
    11681086 
     
    13911309 
    13921310        allow $1 xdm_var_lib_t:file { getattr read }; 
    1393 ') 
    1394  
    1395 ######################################## 
    1396 ## <summary> 
    1397 ##      Execute the X server in the XDM X server domain. 
    1398 ## </summary> 
    1399 ## <param name="domain"> 
    1400 ##      <summary> 
    1401 ##      Domain allowed access. 
    1402 ##      </summary> 
    1403 ## </param> 
    1404 # 
    1405 interface(`xserver_domtrans_xdm_xserver',` 
    1406         gen_require(` 
    1407                 type xdm_xserver_t, xserver_exec_t; 
    1408         ') 
    1409  
    1410         allow $1 xdm_xserver_t:process siginh; 
    1411         domtrans_pattern($1,xserver_exec_t,xdm_xserver_t) 
    14121311') 
    14131312 
     
    15581457## </param> 
    15591458# 
    1560 interface(`xserver_read_xdm_xserver_tmp_files',` 
    1561         gen_require(` 
    1562                 type xdm_xserver_tmp_t; 
    1563         ') 
    1564  
    1565         allow $1 xdm_xserver_tmp_t:file { getattr read }; 
    1566 ') 
    1567  
    1568 ######################################## 
    1569 ## <summary> 
    1570 ##      Read xdm temporary files. 
    1571 ## </summary> 
    1572 ## <param name="domain"> 
    1573 ##      <summary> 
    1574 ##      Domain to not audit 
    1575 ##      </summary> 
    1576 ## </param> 
    1577 # 
    15781459interface(`xserver_read_xdm_tmp_files',` 
    15791460        gen_require(` 
     
    16611542######################################## 
    16621543## <summary> 
    1663 ##      Signal XDM X servers 
     1544##      Execute the X server in the X server domain. 
     1545## </summary> 
     1546## <param name="domain"> 
     1547##      <summary> 
     1548##      Domain allowed access. 
     1549##      </summary> 
     1550## </param> 
     1551
     1552interface(`xserver_domtrans',` 
     1553        gen_require(` 
     1554                type xserver_t, xserver_exec_t; 
     1555        ') 
     1556 
     1557        allow $1 xserver_t:process siginh; 
     1558        domtrans_pattern($1, xserver_exec_t, xserver_t) 
     1559') 
     1560 
     1561######################################## 
     1562## <summary> 
     1563##      Signal X servers 
    16641564## </summary> 
    16651565## <param name="domain"> 
     
    16691569## </param> 
    16701570# 
    1671 interface(`xserver_signal_xdm_xserver',` 
    1672         gen_require(` 
    1673                 type xdm_xserver_t; 
    1674         ') 
    1675  
    1676         allow $1 xdm_xserver_t:process signal; 
    1677 ') 
    1678  
    1679 ######################################## 
    1680 ## <summary> 
    1681 ##      Kill XDM X servers 
     1571interface(`xserver_signal',` 
     1572        gen_require(` 
     1573                type xserver_t; 
     1574        ') 
     1575 
     1576        allow $1 xserver_t:process signal; 
     1577') 
     1578 
     1579######################################## 
     1580## <summary> 
     1581##      Kill X servers 
    16821582## </summary> 
    16831583## <param name="domain"> 
     
    16871587## </param> 
    16881588# 
    1689 interface(`xserver_kill_xdm_xserver',` 
    1690         gen_require(` 
    1691                 type xdm_xserver_t; 
    1692         ') 
    1693  
    1694         allow $1 xdm_xserver_t:process sigkill; 
     1589interface(`xserver_kill',` 
     1590        gen_require(` 
     1591                type xserver_t; 
     1592        ') 
     1593 
     1594        allow $1 xserver_t:process sigkill; 
    16951595') 
    16961596 
     
    16981598## <summary> 
    16991599##      Do not audit attempts to read and write to 
    1700 ##      a XDM X server socket
     1600##      X server sockets
    17011601## </summary> 
    17021602## <param name="domain"> 
     
    17061606## </param> 
    17071607# 
    1708 interface(`xserver_dontaudit_rw_xdm_xserver_tcp_sockets',` 
    1709         gen_require(` 
    1710                 type xdm_xserver_t; 
    1711         ') 
    1712  
    1713         dontaudit $1 xdm_xserver_t:tcp_socket { read write }; 
    1714 ') 
    1715  
    1716 ######################################## 
    1717 ## <summary> 
    1718 ##      Do not audit attempts to read and write xdm_xserver 
     1608interface(`xserver_dontaudit_rw_tcp_sockets',` 
     1609        gen_require(` 
     1610                type xserver_t; 
     1611        ') 
     1612 
     1613        dontaudit $1 xserver_t:tcp_socket { read write }; 
     1614') 
     1615 
     1616######################################## 
     1617## <summary> 
     1618##      Do not audit attempts to read and write X server 
    17191619##      unix domain stream sockets. 
    17201620## </summary> 
     
    17251625## </param> 
    17261626# 
    1727 interface(`xserver_dontaudit_rw_xdm_stream_sockets',` 
    1728         gen_require(` 
    1729                 type xdm_xserver_t; 
    1730         ') 
    1731  
    1732         dontaudit $1 xdm_xserver_t:unix_stream_socket { read write }; 
    1733 ') 
    1734  
    1735 ######################################## 
    1736 ## <summary> 
    1737 ##      Connect to xdm_xserver over a unix domain 
     1627interface(`xserver_dontaudit_rw_stream_sockets',` 
     1628        gen_require(` 
     1629                type xserver_t; 
     1630        ') 
     1631 
     1632        dontaudit $1 xserver_t:unix_stream_socket { read write }; 
     1633') 
     1634 
     1635######################################## 
     1636## <summary> 
     1637##      Connect to the X server over a unix domain 
    17381638##      stream socket. 
    17391639## </summary> 
     
    17441644## </param> 
    17451645# 
    1746 interface(`xserver_stream_connect_xdm_xserver',` 
    1747         gen_require(` 
    1748                 type xdm_xserver_t, xdm_xserver_tmp_t; 
     1646interface(`xserver_stream_connect',` 
     1647        gen_require(` 
     1648                type xserver_t, xserver_tmp_t; 
    17491649        ') 
    17501650 
    17511651        files_search_tmp($1) 
    1752         stream_connect_pattern($1,xdm_xserver_tmp_t,xdm_xserver_tmp_t,xdm_xserver_t) 
     1652        stream_connect_pattern($1, xserver_tmp_t, xserver_tmp_t, xserver_t) 
     1653') 
     1654 
     1655######################################## 
     1656## <summary> 
     1657##      Read X server temporary files. 
     1658## </summary> 
     1659## <param name="domain"> 
     1660##      <summary> 
     1661##      Domain to not audit 
     1662##      </summary> 
     1663## </param> 
     1664
     1665interface(`xserver_read_xserver_tmp_files',` 
     1666        gen_require(` 
     1667                type xserver_tmp_t; 
     1668        ') 
     1669 
     1670        allow $1 xserver_tmp_t:file { getattr read }; 
     1671        files_search_tmp($1) 
    17531672') 
    17541673 
  • branches/rbacsep/policy/modules/services/xserver.te

    r2720 r2723  
    2929gen_tunable(xserver_object_manager,false) 
    3030 
    31 attribute fonts_type; 
    32 attribute fonts_cache_type; 
    33 attribute fonts_config_type; 
    34 attribute xauth_home_type; 
    35  
    36 # Domains 
     31attribute input_xevent_type; 
    3732attribute xserver_unconfined_type; 
    38 attribute x_server_domain; 
    39  
    40 # Per-object attributes 
    41 attribute rootwindow_type; 
    4233attribute x_domain; 
     34attribute x_userdomain 
    4335attribute xproperty_type; 
    4436attribute xselection_type; 
     
    137129 
    138130# Type for the executable used to start the X server, e.g. Xwrapper. 
    139 type xserver_t, x_server_domain
     131type xserver_t
    140132type xserver_exec_t; 
    141133xserver_common_x_domain_template(xdm,xdm,xdm_t) 
     
    154146type xserver_log_t; 
    155147logging_log_file(xserver_log_t) 
     148 
     149# basic object manager rules for user domains 
     150xserver_common_x_domain_template(user, x_userdomain) 
    156151 
    157152ifdef(`enable_mcs',` 
     
    555550allow xserver_t self:udp_socket create_socket_perms; 
    556551 
     552# Device rules 
     553allow x_domain xserver_t:x_device { read getattr use setattr setfocus grab bell }; 
     554 
     555allow xserver_t { input_xevent_t input_xevent_type }:x_event send; 
     556 
    557557domtrans_pattern(xserver_t, xauth_exec_t, xauth_t) 
    558558 
     
    792792') 
    793793 
    794         ############################## 
    795         # 
    796         # User X object manager local policy 
    797         # 
    798         attribute $1_input_xevent_type; 
    799  
    800         # Device rules 
    801         allow x_domain xserver_t:x_device { read getattr use setattr setfocus grab bell }; 
    802  
    803         allow xserver_t { input_xevent_t $1_input_xevent_type }:x_event send; 
    804  
    805         xserver_common_x_domain_template($1,$1,$2) 
    806 ') 
    807  
    808794######################################## 
    809795# 
     
    811797# 
    812798 
    813 allow xserver_unconfined_type x_server_domain:x_server *; 
    814 allow xserver_unconfined_type { x_domain rootwindow_type }:x_drawable *; 
    815 allow xserver_unconfined_type x_server_domain:x_screen *; 
     799allow xserver_unconfined_type xserver_t:x_server *; 
     800allow xserver_unconfined_type { x_domain rootwindow_t }:x_drawable *; 
     801allow xserver_unconfined_type xserver_t:x_screen *; 
    816802allow xserver_unconfined_type x_domain:x_gc *; 
    817 allow xserver_unconfined_type { x_domain rootwindow_type }:x_colormap *; 
     803allow xserver_unconfined_type { x_domain rootwindow_t }:x_colormap *; 
    818804allow xserver_unconfined_type xproperty_type:x_property *; 
    819805allow xserver_unconfined_type xselection_type:x_selection *; 
    820806allow xserver_unconfined_type x_domain:x_cursor *; 
    821807allow xserver_unconfined_type { x_domain remote_xclient_t }:x_client *; 
    822 allow xserver_unconfined_type { x_domain x_server_domain }:x_device *; 
     808allow xserver_unconfined_type { x_domain xserver_t }:x_device *; 
    823809allow xserver_unconfined_type xextension_type:x_extension *; 
    824 allow xserver_unconfined_type { x_domain x_server_domain }:x_resource *; 
     810allow xserver_unconfined_type { x_domain xserver_t }:x_resource *; 
    825811allow xserver_unconfined_type xevent_type:{ x_event x_synthetic_event } *; 
    826812