blob: aa18c0b099df5f221d634d09da059287aa214e42 [file] [log] [blame]
# ==============================================
# Policy File of /system/bin/epdg_wod Executable File
# ==============================================
# Type Declaration
# ==============================================
type epdg_wod_exec, exec_type, file_type, vendor_file_type;
type epdg_wod, domain, mtkimsmddomain;
#20141222 Add EPDG socket usage
type wod_ipsec_conf_file, file_type, data_file_type;
type wod_apn_conf_file, file_type, data_file_type;
type wod_action_socket, file_type;
type wod_sim_socket, file_type;
type wod_ipsec_socket, file_type;
type wod_dns_socket, file_type;
# ==============================================
# Common SEPolicy Rule
# ==============================================
init_daemon_domain(epdg_wod)
net_domain(epdg_wod)
domain_auto_trans(epdg_wod, starter_exec, ipsec)
domain_auto_trans(epdg_wod, charon_exec, ipsec)
domain_auto_trans(epdg_wod, starter_exec, ipsec)
domain_auto_trans(epdg_wod, stroke_exec, ipsec)
# Date: WK14.52
# Operation : Feature for ePDG
# Purpose : handle tunnel interface
allow epdg_wod self:tun_socket { relabelfrom relabelto create };
allow epdg_wod tun_device:chr_file { read write ioctl open getattr };
allow epdg_wod self:netlink_route_socket { setopt nlmsg_write read bind create nlmsg_read write getattr };
allow epdg_wod self:capability { net_admin kill };
# Purpose : update ipsec deamon
allow epdg_wod ipsec_exec:file { read getattr open execute execute_no_trans lock};
# Purpose : send signal to process (ipsec/charon)
allow epdg_wod ipsec:process { signal sigkill signull };
# Purpose : set property for debug messages
set_prop(epdg_wod, vendor_mtk_wod_prop)
set_prop(epdg_wod, vendor_mtk_persist_wod_prop)
# Purpose : create strongswan config file for IKEv2 Tunnel
allow epdg_wod wod_apn_conf_file:dir { write read open add_name remove_name search };
allow epdg_wod wod_apn_conf_file:file { write read create unlink open getattr };
allow epdg_wod wod_ipsec_conf_file:file { write read create unlink open getattr };
allow epdg_wod wod_ipsec_conf_file:dir { write read open add_name remove_name search };
# tear_xfrm_policy
allow epdg_wod self:netlink_xfrm_socket { write getattr setopt nlmsg_write read bind create };
# Purpose : check tun device is ready
allow epdg_wod self:udp_socket { create ioctl };
allow epdg_wod self:capability sys_module;
# Purpose: Kill Process, removed these permissions as security concerns
#allow epdg_wod system_server:process { signal signull };
#allow epdg_wod kernel:process signal;
# Purpose: access iptables for mss
allow epdg_wod self:capability net_raw;
allow epdg_wod self:rawip_socket { getopt create setopt };
# Purpose: communicate with NETD
unix_socket_connect(epdg_wod,netd,netd);
allow netd epdg_wod:fd use;
allow netd epdg_wod:tcp_socket { read write setopt getopt };
allow netd epdg_wod:udp_socket {read write setopt getopt};
# Purpose: use netutils-wrapper
domain_auto_trans(epdg_wod, netutils_wrapper_exec, netutils_wrapper)
allow netutils_wrapper epdg_wod:fd use;
allow netutils_wrapper epdg_wod:unix_stream_socket { read write };
#Purpose: use ccci device
allow epdg_wod ccci_device:chr_file {open read write ioctl};
# Purpose : starter daemon charon
allow epdg_wod starter_exec:file { read getattr open execute execute_no_trans lock};
# Purpose : stroke daemon charon
allow epdg_wod stroke_exec:file { read getattr open execute execute_no_trans lock};
# Purpose : starter invoke charon
allow epdg_wod charon_exec:file { read getattr open execute execute_no_trans lock};