xref: /aosp_15_r20/system/sepolicy/private/cameraserver.te (revision e4a36f4174b17bbab9dc043f4a65dc8d87377290)
1*e4a36f41SAndroid Build Coastguard Workertypeattribute cameraserver camera_service_server;
2*e4a36f41SAndroid Build Coastguard Workertypeattribute cameraserver coredomain;
3*e4a36f41SAndroid Build Coastguard Worker
4*e4a36f41SAndroid Build Coastguard Workerinit_daemon_domain(cameraserver)
5*e4a36f41SAndroid Build Coastguard Workertmpfs_domain(cameraserver)
6*e4a36f41SAndroid Build Coastguard Worker
7*e4a36f41SAndroid Build Coastguard Workerallow cameraserver gpu_device:chr_file rw_file_perms;
8*e4a36f41SAndroid Build Coastguard Workerallow cameraserver gpu_device:dir r_dir_perms;
9*e4a36f41SAndroid Build Coastguard Workerallow cameraserver virtual_camera:binder call;
10*e4a36f41SAndroid Build Coastguard Worker
11*e4a36f41SAndroid Build Coastguard Workerbinder_use(cameraserver)
12*e4a36f41SAndroid Build Coastguard Workerbinder_call(cameraserver, binderservicedomain)
13*e4a36f41SAndroid Build Coastguard Workerbinder_call(cameraserver, appdomain)
14*e4a36f41SAndroid Build Coastguard Workerbinder_service(cameraserver)
15*e4a36f41SAndroid Build Coastguard Worker
16*e4a36f41SAndroid Build Coastguard Workerhal_client_domain(cameraserver, hal_camera)
17*e4a36f41SAndroid Build Coastguard Workerallow cameraserver hal_camera_server:process signal;
18*e4a36f41SAndroid Build Coastguard Workerhal_client_domain(cameraserver, hal_graphics_allocator)
19*e4a36f41SAndroid Build Coastguard Worker
20*e4a36f41SAndroid Build Coastguard Workerallow cameraserver ion_device:chr_file rw_file_perms;
21*e4a36f41SAndroid Build Coastguard Workerallow cameraserver dmabuf_system_heap_device:chr_file r_file_perms;
22*e4a36f41SAndroid Build Coastguard Worker
23*e4a36f41SAndroid Build Coastguard Worker# Talk with graphics composer fences
24*e4a36f41SAndroid Build Coastguard Workerallow cameraserver hal_graphics_composer:fd use;
25*e4a36f41SAndroid Build Coastguard Worker
26*e4a36f41SAndroid Build Coastguard Workeradd_service(cameraserver, cameraserver_service)
27*e4a36f41SAndroid Build Coastguard Workeradd_service(cameraserver, fwk_camera_service)
28*e4a36f41SAndroid Build Coastguard Workeradd_hwservice(cameraserver, fwk_camera_hwservice)
29*e4a36f41SAndroid Build Coastguard Worker
30*e4a36f41SAndroid Build Coastguard Workerallow cameraserver activity_service:service_manager find;
31*e4a36f41SAndroid Build Coastguard Workerallow cameraserver appops_service:service_manager find;
32*e4a36f41SAndroid Build Coastguard Workerallow cameraserver audioserver_service:service_manager find;
33*e4a36f41SAndroid Build Coastguard Workerallow cameraserver batterystats_service:service_manager find;
34*e4a36f41SAndroid Build Coastguard Workerallow cameraserver cameraproxy_service:service_manager find;
35*e4a36f41SAndroid Build Coastguard Workerallow cameraserver mediaserver_service:service_manager find;
36*e4a36f41SAndroid Build Coastguard Workerallow cameraserver package_native_service:service_manager find;
37*e4a36f41SAndroid Build Coastguard Workerallow cameraserver permission_checker_service:service_manager find;
38*e4a36f41SAndroid Build Coastguard Workerallow cameraserver processinfo_service:service_manager find;
39*e4a36f41SAndroid Build Coastguard Workerallow cameraserver scheduling_policy_service:service_manager find;
40*e4a36f41SAndroid Build Coastguard Workerallow cameraserver sensor_privacy_service:service_manager find;
41*e4a36f41SAndroid Build Coastguard Workerallow cameraserver surfaceflinger_service:service_manager find;
42*e4a36f41SAndroid Build Coastguard Worker
43*e4a36f41SAndroid Build Coastguard Workerallow cameraserver hidl_token_hwservice:hwservice_manager find;
44*e4a36f41SAndroid Build Coastguard Workerallow cameraserver hal_camera_service:service_manager find;
45*e4a36f41SAndroid Build Coastguard Workerallow cameraserver virtual_camera_service:service_manager find;
46*e4a36f41SAndroid Build Coastguard Worker
47*e4a36f41SAndroid Build Coastguard Worker# Allow to talk with surfaceflinger through unix stream socket
48*e4a36f41SAndroid Build Coastguard Workerallow cameraserver surfaceflinger:unix_stream_socket { read write };
49*e4a36f41SAndroid Build Coastguard Worker
50*e4a36f41SAndroid Build Coastguard Worker# Allow shell commands from ADB for CTS testing/dumping
51*e4a36f41SAndroid Build Coastguard Workerallow cameraserver adbd:fd use;
52*e4a36f41SAndroid Build Coastguard Workerallow cameraserver adbd:unix_stream_socket { read write };
53*e4a36f41SAndroid Build Coastguard Workerallow cameraserver shell:fd use;
54*e4a36f41SAndroid Build Coastguard Workerallow cameraserver shell:unix_stream_socket { read write };
55*e4a36f41SAndroid Build Coastguard Workerallow cameraserver shell:fifo_file { read write };
56*e4a36f41SAndroid Build Coastguard Worker
57*e4a36f41SAndroid Build Coastguard Worker# allow self to set SCHED_FIFO
58*e4a36f41SAndroid Build Coastguard Workerallow cameraserver self:global_capability_class_set sys_nice;
59*e4a36f41SAndroid Build Coastguard Worker
60*e4a36f41SAndroid Build Coastguard Worker# Allow to talk with media codec
61*e4a36f41SAndroid Build Coastguard Workerallow cameraserver mediametrics_service:service_manager find;
62*e4a36f41SAndroid Build Coastguard Workerhal_client_domain(cameraserver, hal_codec2)
63*e4a36f41SAndroid Build Coastguard Workerhal_client_domain(cameraserver, hal_omx)
64*e4a36f41SAndroid Build Coastguard Workerhal_client_domain(cameraserver, hal_allocator)
65*e4a36f41SAndroid Build Coastguard Worker
66*e4a36f41SAndroid Build Coastguard Worker# Allow shell commands from ADB for CTS testing/dumping
67*e4a36f41SAndroid Build Coastguard Workeruserdebug_or_eng(`
68*e4a36f41SAndroid Build Coastguard Worker  allow cameraserver su:fd use;
69*e4a36f41SAndroid Build Coastguard Worker  allow cameraserver su:fifo_file { read write };
70*e4a36f41SAndroid Build Coastguard Worker  allow cameraserver su:unix_stream_socket { read write };
71*e4a36f41SAndroid Build Coastguard Worker')
72*e4a36f41SAndroid Build Coastguard Worker
73*e4a36f41SAndroid Build Coastguard Worker###
74*e4a36f41SAndroid Build Coastguard Worker### neverallow rules
75*e4a36f41SAndroid Build Coastguard Worker###
76*e4a36f41SAndroid Build Coastguard Worker
77*e4a36f41SAndroid Build Coastguard Worker# cameraserver should never execute any executable without a
78*e4a36f41SAndroid Build Coastguard Worker# domain transition
79*e4a36f41SAndroid Build Coastguard Workerneverallow cameraserver { file_type fs_type }:file execute_no_trans;
80*e4a36f41SAndroid Build Coastguard Worker
81*e4a36f41SAndroid Build Coastguard Worker# The goal of the mediaserver split is to place media processing code into
82*e4a36f41SAndroid Build Coastguard Worker# restrictive sandboxes with limited responsibilities and thus limited
83*e4a36f41SAndroid Build Coastguard Worker# permissions. Example: Audioserver is only responsible for controlling audio
84*e4a36f41SAndroid Build Coastguard Worker# hardware and processing audio content. Cameraserver does the same for camera
85*e4a36f41SAndroid Build Coastguard Worker# hardware/content. Etc.
86*e4a36f41SAndroid Build Coastguard Worker#
87*e4a36f41SAndroid Build Coastguard Worker# Media processing code is inherently risky and thus should have limited
88*e4a36f41SAndroid Build Coastguard Worker# permissions and be isolated from the rest of the system and network.
89*e4a36f41SAndroid Build Coastguard Worker# Lengthier explanation here:
90*e4a36f41SAndroid Build Coastguard Worker# https://android-developers.googleblog.com/2016/05/hardening-media-stack.html
91*e4a36f41SAndroid Build Coastguard Workerneverallow cameraserver domain:{ udp_socket rawip_socket } *;
92*e4a36f41SAndroid Build Coastguard Workerneverallow cameraserver { domain userdebug_or_eng(`-su') }:tcp_socket *;
93