Jayant Chowdhary | fe0af51 | 2019-02-27 10:41:07 -0800 | [diff] [blame] | 1 | typeattribute cameraserver camera_service_server; |
Inseob Kim | 75806ef | 2024-03-27 17:18:41 +0900 | [diff] [blame] | 2 | typeattribute cameraserver coredomain; |
Jayant Chowdhary | fe0af51 | 2019-02-27 10:41:07 -0800 | [diff] [blame] | 3 | |
dcashman | cc39f63 | 2016-07-22 13:13:11 -0700 | [diff] [blame] | 4 | init_daemon_domain(cameraserver) |
Shuzhen Wang | 2486333 | 2019-01-28 17:13:57 -0800 | [diff] [blame] | 5 | tmpfs_domain(cameraserver) |
Jason Macnak | a933980 | 2022-02-24 18:32:16 +0000 | [diff] [blame] | 6 | |
| 7 | allow cameraserver gpu_device:chr_file rw_file_perms; |
| 8 | allow cameraserver gpu_device:dir r_dir_perms; |
Vadim Caen | f6e88ec | 2023-09-29 16:15:23 +0200 | [diff] [blame] | 9 | allow cameraserver virtual_camera:binder call; |
Inseob Kim | 75806ef | 2024-03-27 17:18:41 +0900 | [diff] [blame] | 10 | |
| 11 | binder_use(cameraserver) |
| 12 | binder_call(cameraserver, binderservicedomain) |
| 13 | binder_call(cameraserver, appdomain) |
| 14 | binder_service(cameraserver) |
| 15 | |
| 16 | hal_client_domain(cameraserver, hal_camera) |
| 17 | |
| 18 | hal_client_domain(cameraserver, hal_graphics_allocator) |
| 19 | |
| 20 | allow cameraserver ion_device:chr_file rw_file_perms; |
| 21 | allow cameraserver dmabuf_system_heap_device:chr_file r_file_perms; |
| 22 | |
| 23 | # Talk with graphics composer fences |
| 24 | allow cameraserver hal_graphics_composer:fd use; |
| 25 | |
| 26 | add_service(cameraserver, cameraserver_service) |
| 27 | add_service(cameraserver, fwk_camera_service) |
| 28 | add_hwservice(cameraserver, fwk_camera_hwservice) |
| 29 | |
| 30 | allow cameraserver activity_service:service_manager find; |
| 31 | allow cameraserver appops_service:service_manager find; |
| 32 | allow cameraserver audioserver_service:service_manager find; |
| 33 | allow cameraserver batterystats_service:service_manager find; |
| 34 | allow cameraserver cameraproxy_service:service_manager find; |
| 35 | allow cameraserver mediaserver_service:service_manager find; |
| 36 | allow cameraserver package_native_service:service_manager find; |
| 37 | allow cameraserver permission_checker_service:service_manager find; |
| 38 | allow cameraserver processinfo_service:service_manager find; |
| 39 | allow cameraserver scheduling_policy_service:service_manager find; |
| 40 | allow cameraserver sensor_privacy_service:service_manager find; |
| 41 | allow cameraserver surfaceflinger_service:service_manager find; |
| 42 | |
| 43 | allow cameraserver hidl_token_hwservice:hwservice_manager find; |
| 44 | allow cameraserver hal_camera_service:service_manager find; |
| 45 | allow cameraserver virtual_camera_service:service_manager find; |
| 46 | |
| 47 | # Allow to talk with surfaceflinger through unix stream socket |
| 48 | allow cameraserver surfaceflinger:unix_stream_socket { read write }; |
| 49 | |
| 50 | # Allow shell commands from ADB for CTS testing/dumping |
| 51 | allow cameraserver adbd:fd use; |
| 52 | allow cameraserver adbd:unix_stream_socket { read write }; |
| 53 | allow cameraserver shell:fd use; |
| 54 | allow cameraserver shell:unix_stream_socket { read write }; |
| 55 | allow cameraserver shell:fifo_file { read write }; |
| 56 | |
| 57 | # allow self to set SCHED_FIFO |
| 58 | allow cameraserver self:global_capability_class_set sys_nice; |
| 59 | |
| 60 | # Allow to talk with media codec |
| 61 | allow cameraserver mediametrics_service:service_manager find; |
| 62 | hal_client_domain(cameraserver, hal_codec2) |
| 63 | hal_client_domain(cameraserver, hal_omx) |
| 64 | hal_client_domain(cameraserver, hal_allocator) |
| 65 | |
| 66 | # Allow shell commands from ADB for CTS testing/dumping |
| 67 | userdebug_or_eng(` |
| 68 | allow cameraserver su:fd use; |
| 69 | allow cameraserver su:fifo_file { read write }; |
| 70 | allow cameraserver su:unix_stream_socket { read write }; |
| 71 | ') |
| 72 | |
| 73 | ### |
| 74 | ### neverallow rules |
| 75 | ### |
| 76 | |
| 77 | # cameraserver should never execute any executable without a |
| 78 | # domain transition |
| 79 | neverallow cameraserver { file_type fs_type }:file execute_no_trans; |
| 80 | |
| 81 | # The goal of the mediaserver split is to place media processing code into |
| 82 | # restrictive sandboxes with limited responsibilities and thus limited |
| 83 | # permissions. Example: Audioserver is only responsible for controlling audio |
| 84 | # hardware and processing audio content. Cameraserver does the same for camera |
| 85 | # hardware/content. Etc. |
| 86 | # |
| 87 | # Media processing code is inherently risky and thus should have limited |
| 88 | # permissions and be isolated from the rest of the system and network. |
| 89 | # Lengthier explanation here: |
| 90 | # https://android-developers.googleblog.com/2016/05/hardening-media-stack.html |
| 91 | neverallow cameraserver domain:{ udp_socket rawip_socket } *; |
| 92 | neverallow cameraserver { domain userdebug_or_eng(`-su') }:tcp_socket *; |