Hi Everyone,<br><br>I created this firefox policy; it is probably allowing too many unecessary things. If anyone could comment on it, I'd appreciate it. <br>The matter is, someone was able to break out to unconfined and disable a 000 ACL on /bin/su. This is a surf machine, with no listening daemons, postfix is blocked by firewall and unconfigured, not even cups is running. So I think the hole must be through firefox. 
<br><br>------------------------------------------------------------<br><br>policy_module(foxpol,1.0.5)<br><br>########################################<br>#<br># Declarations<br>#<br>require { <br>          type fonts_t;<br>
      type inotifyfs_t;<br>          type proc_net_t;<br>      type proc_t;<br>      type urandom_device_t;<br>      type user_home_dir_t;<br>      type user_home_t;<br>      type xdm_t;<br>      type sysctl_kernel_t;<br>
      type sysctl_net_t;<br>      type sysctl_t;<br>      type home_root_t;<br>      type fs_t;<br>      type autofs_t;<br>         type unconfined_execmem_t;<br>        };<br><br>type foxpol_t;<br>type foxpol_exec_t;<br>
domain_type(foxpol_t)<br>init_daemon_domain(foxpol_t, foxpol_exec_t)<br><br># log files<br>type foxpol_var_log_t;<br>logging_log_file(foxpol_var_log_t)<br><br># download dir, which firefox has write access to<br>type foxpol_down_t;
<br><br># private_t dir - a labled dir which fox cannot read, made because<br>#             - fox has read access to home dir<br>type private_t;<br><br>########################################<br>#<br># foxpol local policy
<br>#<br># Check in /etc/selinux/refpolicy/include for macros to use instead of allow rules.<br><br># Some common macros (you might be able to remove some)<br>files_read_etc_files(foxpol_t)<br>libs_use_ld_so(foxpol_t)<br>
libs_use_shared_libs(foxpol_t)<br>miscfiles_read_localization(foxpol_t)<br>## internal communication is often done using fifo and unix sockets.<br>allow foxpol_t self:fifo_file { read write };<br>allow foxpol_t self:unix_stream_socket create_stream_socket_perms;
<br><br># log files<br>allow foxpol_t foxpol_var_log_t:file create_file_perms;<br>allow foxpol_t foxpol_var_log_t:sock_file create_file_perms;<br>allow foxpol_t foxpol_var_log_t:dir { rw_dir_perms setattr };<br>logging_log_filetrans(foxpol_t,foxpol_var_log_t,{ sock_file file dir })
<br><br>## Networking basics (adjust to your needs!)<br>sysnet_dns_name_resolve(foxpol_t)<br>corenet_tcp_sendrecv_all_if(foxpol_t)<br>corenet_tcp_sendrecv_all_nodes(foxpol_t)<br>corenet_tcp_sendrecv_all_ports(foxpol_t)<br>
corenet_non_ipsec_sendrecv(foxpol_t)<br>corenet_tcp_connect_http_port(foxpol_t)<br>#corenet_tcp_connect_all_ports(foxpol_t)<br>## if it is a network daemon, consider these:<br>#corenet_tcp_bind_all_ports(foxpol_t)<br>#corenet_tcp_bind_all_nodes(foxpol_t)
<br>allow foxpol_t self:tcp_socket { listen accept };<br><br># Init script handling<br>init_use_fds(foxpol_t)<br>init_use_script_ptys(foxpol_t)<br>domain_use_interactive_fds(foxpol_t)<br><br># ok copy files to download dir
<br>allow unconfined_t foxpol_down_t:dir { add_name getattr setattr read relabelto remove_name search write rmdir };<br>allow unconfined_t foxpol_down_t:file { execute create getattr setattr read write append rename link unlink ioctl lock };
<br><br># ok unconfined processes to open files in download dir<br>allow unconfined_execmem_t foxpol_down_t:dir { create getattr setattr read write link unlink rename search add_name remove_name reparent rmdir lock ioctl } ;
<br>allow unconfined_execmem_t foxpol_down_t:file { create getattr setattr read write append rename link unlink ioctl lock };<br><br># ok fox to write to download dir<br>allow foxpol_t foxpol_down_t:dir { add_name create getattr read search write remove_name };
<br>allow foxpol_t foxpol_down_t:file { create setattr getattr read write rename unlink append };<br><br># ok unconfined process to open files in private dir<br>allow unconfined_execmem_t private_t:dir { create getattr setattr read write link unlink rename search add_name remove_name reparent rmdir lock ioctl };
<br>allow unconfined_execmem_t private_t:file { create getattr setattr read write append rename link unlink ioctl lock };<br>allow unconfined_t private_t:dir { create getattr setattr read write link unlink rename search add_name remove_name reparent relabelfrom relabelto rmdir lock ioctl };
<br>allow unconfined_t private_t:file {  relabelto create getattr setattr read write append rename link unlink ioctl lock };<br>allow private_t fs_t:filesystem associate;<br><br># ok fox to create new stuff in .mozilla<br>
allow foxpol_t foxpol_var_log_t:dir create;<br><br><br><br>#<br># audit2allow says it wants all the stuff below,  it also wanted exec rights to bin_t which I removed<br>#<br>allow foxpol_down_t fs_t:filesystem associate;<br>
allow foxpol_t autofs_t:dir getattr;<br>allow foxpol_t fonts_t:dir { getattr read search };<br>allow foxpol_t fonts_t:file { getattr read };<br>allow foxpol_t foxpol_down_t:dir { add_name create getattr read search write };
<br>allow foxpol_t foxpol_down_t:file { create getattr write };<br>allow foxpol_t self:fifo_file getattr;<br>allow foxpol_t self:netlink_route_socket { bind create getattr nlmsg_read read write };<br>allow foxpol_t self:process { getsched setsched signal };
<br>allow foxpol_t self:shm { create destroy read unix_read unix_write write };<br>allow foxpol_t self:unix_dgram_socket create;<br>allow foxpol_t foxpol_var_log_t:lnk_file { create unlink };<br>allow foxpol_t home_root_t:dir { getattr read search };
<br>allow foxpol_t inotifyfs_t:dir { getattr read };<br>allow foxpol_t proc_net_t:dir { read search };<br>allow foxpol_t proc_net_t:file { getattr read };<br>allow foxpol_t proc_t:file { getattr read };<br>allow foxpol_t sysctl_kernel_t:dir search;
<br>allow foxpol_t sysctl_kernel_t:file read;<br>allow foxpol_t sysctl_net_t:dir search;<br>allow foxpol_t sysctl_t:dir search;<br>allow foxpol_t tmp_t:dir { add_name getattr read remove_name search setattr write };<br>allow foxpol_t tmp_t:file { create getattr lock read unlink write };
<br>allow foxpol_t tmp_t:sock_file { create unlink write };<br>allow foxpol_t tmpfs_t:file { read write };<br># allow foxpol_t unconfined_t:unix_stream_socket connectto;<br>allow foxpol_t urandom_device_t:chr_file { getattr ioctl read };
<br>allow foxpol_t user_home_dir_t:dir { getattr read search };<br>allow foxpol_t user_home_t:dir { getattr read search };<br>allow foxpol_t user_home_t:file { getattr read };<br>allow foxpol_t usr_t:file { getattr read };
<br>allow foxpol_t usr_t:lnk_file read;<br>allow foxpol_t xdm_t:unix_stream_socket connectto;<br><br>