Changeset 2706

Show
Ignore:
Timestamp:
05/30/08 10:05:17 (6 months ago)
Author:
pebenito
Message:

rbacsep: first steps in collapsing xserver.

Files:

Legend:

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

    r2675 r2706  
    5454type focus_xevent_t, xevent_type; 
    5555 
     56type iceauth_t; 
    5657type iceauth_exec_t; 
    57 application_executable_file(iceauth_exec_t) 
     58application_domain(iceauth_t, iceauth_exec_t) 
     59 
     60type iceauth_home_t; 
     61files_poly_member(iceauth_home_t) 
     62userdom_user_home_content($1,iceauth_home_t) 
    5863 
    5964type info_xproperty_t, xproperty_type; 
     
    6974type video_xext_t, xextension_type; 
    7075type unknown_xevent_t, xevent_type; 
     76 
     77type user_fonts_t; 
     78userdom_user_home_content($1,user_fonts_t) 
     79 
     80type user_fonts_cache_t, fonts_cache_type; 
     81userdom_user_home_content($1,user_fonts_cache_t) 
     82 
     83type user_fonts_config_t, fonts_config_type; 
     84userdom_user_home_content($1,user_fonts_cache_t) 
     85 
    7186type xevent_t alias default_xevent_t, xevent_type; 
    7287type xext_t alias unknown_xext_t, xextension_type; 
     
    7489type xselection_t alias default_xselection_t, xselection_type; 
    7590 
     91type xauth_t; 
    7692type xauth_exec_t; 
    77 application_executable_file(xauth_exec_t) 
     93application_domain(xauth_t, xauth_exec_t) 
     94 
     95type xauth_home_t; 
     96files_poly_member(xauth_home_t) 
     97userdom_user_home_content($1,xauth_home_t) 
     98 
     99type xauth_tmp_t; 
     100files_tmp_file(xauth_tmp_t) 
    78101 
    79102# this is not actually a device, its a pipe 
     
    113136 
    114137# Type for the executable used to start the X server, e.g. Xwrapper. 
     138type xserver_t, x_server_domain; 
    115139type xserver_exec_t; 
    116 corecmd_executable_file(xserver_exec_t) 
     140domain_type(xserver_t) 
     141domain_entry_file(xserver_t, xserver_exec_t) 
     142 
     143type xserver_tmp_t; 
     144files_tmp_file(xserver_tmp_t) 
     145 
     146type xserver_tmpfs_t; 
     147files_tmpfs_file(xserver_tmpfs_t) 
    117148 
    118149type xsession_exec_t; 
     
    134165optional_policy(` 
    135166        prelink_object_file(xkb_var_lib_t) 
     167') 
     168 
     169######################################## 
     170# 
     171# Iceauth local policy 
     172# 
     173 
     174domtrans_pattern($2, iceauth_exec_t, iceauth_t) 
     175 
     176allow iceauth_t iceauth_home_t:file manage_file_perms; 
     177userdom_user_home_dir_filetrans($1,iceauth_t,iceauth_home_t,file) 
     178 
     179# allow ps to show iceauth 
     180ps_process_pattern($2, iceauth_t) 
     181 
     182allow $2 iceauth_home_t:file manage_file_perms; 
     183allow $2 iceauth_home_t:file { relabelfrom relabelto }; 
     184 
     185allow xdm_t iceauth_home_t:file read_file_perms; 
     186 
     187fs_search_auto_mountpoints(iceauth_t) 
     188 
     189libs_use_ld_so(iceauth_t) 
     190libs_use_shared_libs(iceauth_t) 
     191 
     192userdom_use_user_terminals($1, iceauth_t) 
     193 
     194tunable_policy(`use_nfs_home_dirs',` 
     195        fs_manage_nfs_files(iceauth_t) 
     196') 
     197 
     198tunable_policy(`use_samba_home_dirs',` 
     199        fs_manage_cifs_files(iceauth_t) 
     200') 
     201 
     202######################################## 
     203# 
     204# Xauth local policy 
     205# 
     206 
     207allow xauth_t self:process signal; 
     208allow xauth_t self:unix_stream_socket create_stream_socket_perms; 
     209 
     210allow xauth_t xauth_home_t:file manage_file_perms; 
     211userdom_user_home_dir_filetrans($1,xauth_t,xauth_home_t,file) 
     212 
     213manage_dirs_pattern(xauth_t, xauth_tmp_t, xauth_tmp_t) 
     214manage_files_pattern(xauth_t, xauth_tmp_t, xauth_tmp_t) 
     215files_tmp_filetrans(xauth_t, xauth_tmp_t, { file dir }) 
     216 
     217domtrans_pattern($2, xauth_exec_t, xauth_t) 
     218 
     219allow $2 xauth_t:process signal; 
     220 
     221# allow ps to show xauth 
     222ps_process_pattern($2,xauth_t) 
     223 
     224allow $2 xauth_home_t:file manage_file_perms; 
     225allow $2 xauth_home_t:file { relabelfrom relabelto }; 
     226 
     227allow xdm_t xauth_home_t:file manage_file_perms; 
     228userdom_user_home_dir_filetrans($1,xdm_t,xauth_home_t,file) 
     229 
     230domain_use_interactive_fds(xauth_t) 
     231 
     232files_read_etc_files(xauth_t) 
     233files_search_pids(xauth_t) 
     234 
     235fs_getattr_xattr_fs(xauth_t) 
     236fs_search_auto_mountpoints(xauth_t) 
     237 
     238# cjp: why? 
     239term_use_ptmx(xauth_t) 
     240 
     241auth_use_nsswitch(xauth_t) 
     242 
     243libs_use_ld_so(xauth_t) 
     244libs_use_shared_libs(xauth_t) 
     245 
     246userdom_use_user_terminals($1,xauth_t) 
     247userdom_read_user_tmp_files($1,xauth_t) 
     248 
     249xserver_rw_xdm_tmp_files(xauth_t) 
     250 
     251tunable_policy(`use_nfs_home_dirs',` 
     252        fs_manage_nfs_files(xauth_t) 
     253') 
     254 
     255tunable_policy(`use_samba_home_dirs',` 
     256        fs_manage_cifs_files(xauth_t) 
     257') 
     258 
     259optional_policy(` 
     260        ssh_sigchld(xauth_t) 
     261        ssh_read_pipes(xauth_t) 
     262        ssh_dontaudit_rw_tcp_sockets(xauth_t) 
    136263') 
    137264 
     
    489616') 
    490617 
     618        attribute $1_x_domain; 
     619        attribute $1_input_xevent_type; 
     620 
     621        type $1_rootwindow_t, rootwindow_type; 
     622 
     623######################################## 
     624# 
     625# X server local policy 
     626# 
     627 
     628# setuid/setgid for the wrapper program to change UID 
     629# sys_rawio is for iopl access - should not be needed for frame-buffer 
     630# sys_admin, locking shared mem?  chowning IPC message queues or semaphores? 
     631# admin of APM bios? 
     632# sys_nice is so that the X server can set a negative nice value 
     633# execheap needed until the X module loader is fixed. 
     634# NVIDIA Needs execstack 
     635 
     636allow xserver_t self:capability { dac_override fowner fsetid setgid setuid ipc_owner sys_rawio sys_admin sys_nice sys_tty_config mknod net_bind_service }; 
     637dontaudit xserver_t self:capability chown; 
     638allow xserver_t self:process ~{ ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap }; 
     639allow xserver_t self:memprotect mmap_zero; 
     640allow xserver_t self:fd use; 
     641allow xserver_t self:fifo_file rw_fifo_file_perms; 
     642allow xserver_t self:sock_file read_sock_file_perms; 
     643allow xserver_t self:shm create_shm_perms; 
     644allow xserver_t self:sem create_sem_perms; 
     645allow xserver_t self:msgq create_msgq_perms; 
     646allow xserver_t self:msg { send receive }; 
     647allow xserver_t self:unix_dgram_socket { create_socket_perms sendto }; 
     648allow xserver_t self:unix_stream_socket { create_stream_socket_perms connectto }; 
     649allow xserver_t self:tcp_socket create_stream_socket_perms; 
     650allow xserver_t self:udp_socket create_socket_perms; 
     651 
     652manage_dirs_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) 
     653manage_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) 
     654manage_sock_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) 
     655files_tmp_filetrans(xserver_t, xserver_tmp_t, { file dir sock_file }) 
     656 
     657filetrans_pattern(xserver_t, xdm_xserver_tmp_t, xserver_tmp_t,sock_file) 
     658 
     659manage_dirs_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t) 
     660manage_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t) 
     661manage_lnk_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t) 
     662manage_fifo_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t) 
     663manage_sock_files_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t) 
     664fs_tmpfs_filetrans(xserver_t, xserver_tmpfs_t, { dir file lnk_file sock_file fifo_file }) 
     665 
     666manage_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t) 
     667manage_lnk_files_pattern(xserver_t, xkb_var_lib_t, xkb_var_lib_t) 
     668files_search_var_lib(xserver_t) 
     669 
     670# Create files in /var/log with the xserver_log_t type. 
     671manage_files_pattern(xserver_t, xserver_log_t, xserver_log_t) 
     672logging_log_filetrans(xserver_t, xserver_log_t,file) 
     673 
     674        # Labeling rules for default windows and colormaps 
     675        type_transition xserver_t xserver_t:{ x_drawable x_colormap } $1_rootwindow_t; 
     676 
     677kernel_read_system_state(xserver_t) 
     678kernel_read_device_sysctls(xserver_t) 
     679kernel_read_modprobe_sysctls(xserver_t) 
     680# Xorg wants to check if kernel is tainted 
     681kernel_read_kernel_sysctls(xserver_t) 
     682kernel_write_proc_files(xserver_t) 
     683 
     684# Run helper programs in xserver_t. 
     685corecmd_exec_bin(xserver_t) 
     686corecmd_exec_shell(xserver_t) 
     687 
     688corenet_all_recvfrom_unlabeled(xserver_t) 
     689corenet_all_recvfrom_netlabel(xserver_t) 
     690corenet_tcp_sendrecv_generic_if(xserver_t) 
     691corenet_udp_sendrecv_generic_if(xserver_t) 
     692corenet_tcp_sendrecv_all_nodes(xserver_t) 
     693corenet_udp_sendrecv_all_nodes(xserver_t) 
     694corenet_tcp_sendrecv_all_ports(xserver_t) 
     695corenet_udp_sendrecv_all_ports(xserver_t) 
     696corenet_tcp_bind_all_nodes(xserver_t) 
     697corenet_tcp_bind_xserver_port(xserver_t) 
     698corenet_tcp_connect_all_ports(xserver_t) 
     699corenet_sendrecv_xserver_server_packets(xserver_t) 
     700corenet_sendrecv_all_client_packets(xserver_t) 
     701 
     702dev_rw_sysfs(xserver_t) 
     703dev_rw_mouse(xserver_t) 
     704dev_rw_mtrr(xserver_t) 
     705dev_rw_apm_bios(xserver_t) 
     706dev_rw_agp(xserver_t) 
     707dev_rw_framebuffer(xserver_t) 
     708dev_manage_dri_dev(xserver_t) 
     709dev_create_generic_dirs(xserver_t) 
     710dev_setattr_generic_dirs(xserver_t) 
     711# raw memory access is needed if not using the frame buffer 
     712dev_read_raw_memory(xserver_t) 
     713dev_wx_raw_memory(xserver_t) 
     714# for other device nodes such as the NVidia binary-only driver 
     715dev_rw_xserver_misc(xserver_t) 
     716# read events - the synaptics touchpad driver reads raw events 
     717dev_rw_input_dev(xserver_t) 
     718dev_rwx_zero(xserver_t) 
     719 
     720domain_mmap_low(xserver_t) 
     721 
     722files_read_etc_files(xserver_t) 
     723files_read_etc_runtime_files(xserver_t) 
     724files_read_usr_files(xserver_t) 
     725 
     726# brought on by rhgb 
     727files_search_mnt(xserver_t) 
     728# for nscd 
     729files_dontaudit_search_pids(xserver_t) 
     730 
     731fs_getattr_xattr_fs(xserver_t) 
     732fs_search_nfs(xserver_t) 
     733fs_search_auto_mountpoints(xserver_t) 
     734fs_search_ramfs(xserver_t) 
     735 
     736mls_xwin_read_to_clearance(xserver_t) 
     737 
     738selinux_validate_context(xserver_t) 
     739selinux_compute_access_vector(xserver_t) 
     740selinux_compute_create_context(xserver_t) 
     741 
     742auth_use_nsswitch(xserver_t) 
     743 
     744init_getpgid(xserver_t) 
     745 
     746term_setattr_unallocated_ttys(xserver_t) 
     747term_use_unallocated_ttys(xserver_t) 
     748 
     749getty_use_fds(xserver_t) 
     750 
     751libs_use_ld_so(xserver_t) 
     752libs_use_shared_libs(xserver_t) 
     753 
     754locallogin_use_fds(xserver_t) 
     755 
     756logging_send_syslog_msg(xserver_t) 
     757logging_send_audit_msgs(xserver_t) 
     758 
     759miscfiles_read_localization(xserver_t) 
     760miscfiles_read_fonts(xserver_t) 
     761 
     762modutils_domtrans_insmod(xserver_t) 
     763 
     764# read x_contexts 
     765seutil_read_default_contexts(xserver_t) 
     766 
     767ifndef(`distro_redhat',` 
     768        allow xserver_t self:process { execmem execheap execstack }; 
     769') 
     770 
     771ifdef(`distro_rhel4',` 
     772        allow xserver_t self:process { execmem execheap execstack }; 
     773') 
     774 
     775        tunable_policy(`!xserver_object_manager',` 
     776                # should be xserver_unconfined(xserver_t), 
     777                # but typeattribute doesnt work in conditionals 
     778                gen_require(` 
     779                        attribute x_server_domain, x_domain; 
     780                        attribute xproperty_type, xselection_type; 
     781                        attribute xextension_type, xevent_type; 
     782                        attribute rootwindow_type; 
     783 
     784                        type remote_xclient_t; 
     785                ') 
     786                allow xserver_t x_server_domain:x_server *; 
     787                allow xserver_t { x_domain rootwindow_type }:x_drawable *; 
     788                allow xserver_t x_server_domain:x_screen *; 
     789                allow xserver_t x_domain:x_gc *; 
     790                allow xserver_t { x_domain rootwindow_type }:x_colormap *; 
     791                allow xserver_t xproperty_type:x_property *; 
     792                allow xserver_t xselection_type:x_selection *; 
     793                allow xserver_t x_domain:x_cursor *; 
     794                allow xserver_t { x_domain remote_xclient_t }:x_client *; 
     795                allow xserver_t { x_domain x_server_domain }:x_device *; 
     796                allow xserver_t xextension_type:x_extension *; 
     797                allow xserver_t { x_domain x_server_domain }:x_resource *; 
     798                allow xserver_t xevent_type:{ x_event x_synthetic_event } *; 
     799        ') 
     800 
     801optional_policy(` 
     802        apm_stream_connect(xserver_t) 
     803') 
     804 
     805optional_policy(` 
     806        auth_search_pam_console_data(xserver_t) 
     807') 
     808 
     809optional_policy(` 
     810        rhgb_getpgid(xserver_t) 
     811        rhgb_signal(xserver_t) 
     812') 
     813 
     814optional_policy(` 
     815        xfs_stream_connect(xserver_t) 
     816') 
     817 
     818        ############################## 
     819        # 
     820        # $1_xserver_t Local policy 
     821        # 
     822 
     823        domtrans_pattern(xserver_t, xauth_exec_t, xauth_t) 
     824 
     825        allow xserver_t xauth_home_t:file { getattr read }; 
     826 
     827        domtrans_pattern($2, xserver_exec_t, xserver_t) 
     828        allow xserver_t $2:process signal; 
     829 
     830        allow xserver_t $2:shm rw_shm_perms; 
     831 
     832        manage_dirs_pattern($2, user_fonts_t, user_fonts_t) 
     833        manage_files_pattern($2, user_fonts_t, user_fonts_t) 
     834        relabel_dirs_pattern($2, user_fonts_t, user_fonts_t) 
     835        relabel_files_pattern($2, user_fonts_t, user_fonts_t) 
     836 
     837        manage_dirs_pattern($2, user_fonts_config_t, user_fonts_config_t) 
     838        manage_files_pattern($2, user_fonts_config_t, user_fonts_config_t) 
     839        relabel_files_pattern($2, user_fonts_config_t, user_fonts_config_t) 
     840 
     841        # For startup relabel 
     842        allow $2 user_fonts_cache_t:{ dir file } { relabelto relabelfrom }; 
     843 
     844        stream_connect_pattern($2, $1_xserver_tmp_t, $1_xserver_tmp_t, $1_xserver_t) 
     845 
     846        allow $2 $1_xserver_tmpfs_t:file rw_file_perms; 
     847 
     848        # Communicate via System V shared memory. 
     849        allow $1_xserver_t $2:shm rw_shm_perms; 
     850        allow $2 $1_xserver_t:shm rw_shm_perms; 
     851 
     852        userdom_search_user_home_dirs($1,$1_xserver_t) 
     853        userdom_use_user_ttys($1,$1_xserver_t) 
     854        userdom_setattr_user_ttys($1,$1_xserver_t) 
     855        userdom_rw_user_tmpfs_files($1,$1_xserver_t) 
     856 
     857        xserver_use_user_fonts($1,$1_xserver_t) 
     858 
     859        optional_policy(` 
     860                userhelper_search_config($1_xserver_t) 
     861        ') 
     862 
     863        ############################## 
     864        # 
     865        # User X object manager local policy 
     866        # 
     867 
     868        # Device rules 
     869        allow $1_x_domain xserver_t:x_device { read getattr use setattr setfocus grab bell }; 
     870 
     871        allow $1_xserver_t { input_xevent_t $1_input_xevent_type }:x_event send; 
     872        allow $1_xserver_t { $1_rootwindow_t $1_x_domain }:x_drawable send; 
     873 
     874        # manage: xhost X11:ChangeHosts 
     875        # freeze: metacity X11:GrabKey 
     876        # force_cursor: metacity X11:GrabPointer 
     877        allow $2 xserver_t:x_device { manage freeze force_cursor }; 
     878 
     879        # gnome-settings-daemon XKEYBOARD:SetControls 
     880        allow $2 xserver_t:x_server manage; 
     881 
     882        # gnome-settings-daemon RANDR:SelectInput 
     883        allow $2 xserver_t:x_resource write; 
     884 
     885        # metacity X11:InstallColormap X11:UninstallColormap 
     886        allow $2 $1_rootwindow_t:x_colormap { install uninstall }; 
     887 
     888        # read: gnome-settings-daemon RANDR:GetScreenSizeRange 
     889        # write: gnome-settings-daemon RANDR:SelectInput 
     890        # setattr: gnome-settings-daemon X11:GrabKey 
     891        # manage: metacity X11:ChangeWindowAttributes 
     892        allow $2 $1_rootwindow_t:x_drawable { read write manage setattr }; 
     893 
     894        # setattr: metacity X11:InstallColormap 
     895        allow $2 xserver_t:x_screen { saver_setattr saver_getattr setattr }; 
     896 
     897        # xrdb X11:ChangeProperty prop=RESOURCE_MANAGER 
     898        allow $2 info_xproperty_t:x_property { create write append }; 
     899 
     900        xserver_common_x_domain_template($1,$1,$2) 
     901') 
     902 
    491903######################################## 
    492904#