###################################### # Attribute declarations # # All types used for devices. # On change, update CHECK_FC_ASSERT_ATTRS # in tools/checkfc.c attribute dev_type; # Attribute for all bpf filesystem subtypes. attribute bpffs_type; # All types used for processes. attribute domain; # All types used for filesystems. # On change, update CHECK_FC_ASSERT_ATTRS # definition in tools/checkfc.c. attribute fs_type; # All types used for context= mounts. attribute contextmount_type; # All types referencing a FUSE filesystem. # When mounting a new FUSE filesystem, the fscontext= option should be used to # set a domain-specific type with this attribute. See app_fusefs for an # example. attribute fusefs_type; # All types used for files that can exist on a labeled fs. # Do not use for pseudo file types. # On change, update CHECK_FC_ASSERT_ATTRS # definition in tools/checkfc.c. attribute file_type; # All types used for domain entry points. attribute exec_type; # All types used for /data files. attribute data_file_type; expandattribute data_file_type false; # All types in /data, not in /data/vendor attribute core_data_file_type; expandattribute core_data_file_type false; # All types used for app private data files in seapp_contexts. # Such types should not be applied to any other files. attribute app_data_file_type; expandattribute app_data_file_type false; # All types in /system attribute system_file_type; # All types in /system_dlkm attribute system_dlkm_file_type; # All types in /vendor attribute vendor_file_type; # All types used for procfs files. attribute proc_type; expandattribute proc_type false; # Types in /proc/net, excluding qtaguid types. # TODO(b/9496886) Lock down access to /proc/net. # This attribute is used to audit access to proc_net. it is temporary and will # be removed. attribute proc_net_type; expandattribute proc_net_type true; # All types used for sysfs files. attribute sysfs_type; # All types use for debugfs files. attribute debugfs_type; # All types used for tracefs files. attribute tracefs_type; # Attribute used for all sdcards attribute sdcard_type; # All types used for nodes/hosts. attribute node_type; # All types used for network interfaces. attribute netif_type; # All types used for network ports. attribute port_type; # All types used for property service # On change, update CHECK_PC_ASSERT_ATTRS # definition in tools/checkfc.c. attribute property_type; # All properties defined in core SELinux policy. Should not be # used by device specific properties attribute core_property_type; # All properties used to configure log filtering. attribute log_property_type; # All properties that are not specific to device but are added from # outside of AOSP. (e.g. OEM-specific properties) # These properties are not accessible from device-specific domains attribute extended_core_property_type; # Properties used for representing ownership. All properties should have one # of: system_property_type, product_property_type, or vendor_property_type. # All properties defined by /system. attribute system_property_type; expandattribute system_property_type false; # All /system-defined properties used only in /system. attribute system_internal_property_type; expandattribute system_internal_property_type false; # All /system-defined properties which can't be written outside /system. attribute system_restricted_property_type; expandattribute system_restricted_property_type false; # All /system-defined properties with no restrictions. attribute system_public_property_type; expandattribute system_public_property_type false; # All keystore2_key labels. attribute keystore2_key_type; # All properties defined by /product. # Currently there are no enforcements between /system and /product, so for now # /product attributes are just replaced to /system attributes. define(`product_property_type', `system_property_type') define(`product_internal_property_type', `system_internal_property_type') define(`product_restricted_property_type', `system_restricted_property_type') define(`product_public_property_type', `system_public_property_type') # All properties defined by /vendor. attribute vendor_property_type; expandattribute vendor_property_type false; # All /vendor-defined properties used only in /vendor. attribute vendor_internal_property_type; expandattribute vendor_internal_property_type false; # All /vendor-defined properties which can't be written outside /vendor. attribute vendor_restricted_property_type; expandattribute vendor_restricted_property_type false; # All /vendor-defined properties with no restrictions. attribute vendor_public_property_type; expandattribute vendor_public_property_type false; # All service_manager types created by system_server attribute system_server_service; # services which should be available to all but isolated apps attribute app_api_service; # services which should be available to all ephemeral apps attribute ephemeral_app_api_service; # services which export only system_api attribute system_api_service; # services which are explicitly disallowed for untrusted apps to access attribute protected_service; # All types used for services managed by servicemanager. # On change, update CHECK_SC_ASSERT_ATTRS # definition in tools/checkfc.c. attribute service_manager_type; # All types used for services managed by hwservicemanager attribute hwservice_manager_type; # All HwBinder services guaranteed to be passthrough. These services always run # in the process of their clients, and thus operate with the same access as # their clients. attribute same_process_hwservice; # All HwBinder services guaranteed to be offered only by core domain components attribute coredomain_hwservice; # All HwBinder services that untrusted apps can't directly access attribute protected_hwservice; # All types used for services managed by vndservicemanager attribute vndservice_manager_type; # All services declared as part of an HAL attribute hal_service_type; # All domains that can override MLS restrictions. # i.e. processes that can read up and write down. attribute mlstrustedsubject; # All types that can override MLS restrictions. # i.e. files that can be read by lower and written by higher attribute mlstrustedobject; # All domains used for apps. attribute appdomain; # All third party apps (except isolated_app and ephemeral_app) attribute untrusted_app_all; # All apps with UID between AID_ISOLATED_START (99000) and AID_ISOLATED_END (99999). attribute isolated_app_all; # All service types that would be allowed for isolated_compute_app. attribute isolated_compute_allowed_service; # All device types that would be allowed for isolated_compute_app. attribute isolated_compute_allowed_device; # All domains used for apps with network access. attribute netdomain; # All domains used for apps with bluetooth access. attribute bluetoothdomain; # Specific domains that expose a binder service. # Deprecated, consider granting the exact permissions required by your service. attribute binderservicedomain; # All domains which have BPF access. attribute bpfdomain; expandattribute bpfdomain false; # update_engine related domains that need to apply an update and run # postinstall. This includes the background daemon and the sideload tool from # recovery for A/B devices. attribute update_engine_common; # All core domains (as opposed to vendor/device-specific domains) attribute coredomain; # All vendor hwservice. attribute vendor_hwservice_type; # All socket devices owned by core domain components attribute coredomain_socket; expandattribute coredomain_socket false; # All vendor domains which violate the requirement of not using sockets for # communicating with core components # TODO(b/36577153): Remove this once there are no violations attribute socket_between_core_and_vendor_violators; expandattribute socket_between_core_and_vendor_violators false; # All vendor domains which violate the requirement of not executing # system processes # TODO(b/36463595) attribute vendor_executes_system_violators; expandattribute vendor_executes_system_violators false; # All domains which violate the requirement of not sharing files by path # between between vendor and core domains. # TODO(b/34980020) attribute data_between_core_and_vendor_violators; expandattribute data_between_core_and_vendor_violators false; # All system domains which violate the requirement of not executing vendor # binaries/libraries. # TODO(b/62041836) attribute system_executes_vendor_violators; expandattribute system_executes_vendor_violators false; # All system domains which violate the requirement of not writing vendor # properties. # TODO(b/78598545): Remove this once there are no violations attribute system_writes_vendor_properties_violators; expandattribute system_writes_vendor_properties_violators false; # All system domains which violate the requirement of not writing to # /mnt/vendor/*. Must not be used on devices launched with P or later. attribute system_writes_mnt_vendor_violators; expandattribute system_writes_mnt_vendor_violators false; # hwservices that are accessible from untrusted applications # WARNING: Use of this attribute should be avoided unless # absolutely necessary. It is a temporary allowance to aid the # transition to treble and will be removed in a future platform # version, requiring all hwservices that are labeled with this # attribute to be submitted to AOSP in order to maintain their # app-visibility. attribute untrusted_app_visible_hwservice_violators; expandattribute untrusted_app_visible_hwservice_violators false; # halserver domains that are accessible to untrusted applications. These # domains are typically those hosting hwservices attributed by the # untrusted_app_visible_hwservice_violators. # WARNING: Use of this attribute should be avoided unless absolutely necessary. # It is a temporary allowance to aid the transition to treble and will be # removed in the future platform version, requiring all halserver domains that # are labeled with this attribute to be submitted to AOSP in order to maintain # their app-visibility. attribute untrusted_app_visible_halserver_violators; expandattribute untrusted_app_visible_halserver_violators false; # PDX services attribute pdx_endpoint_dir_type; attribute pdx_endpoint_socket_type; expandattribute pdx_endpoint_socket_type false; attribute pdx_channel_socket_type; expandattribute pdx_channel_socket_type false; pdx_service_attributes(display_client) pdx_service_attributes(display_manager) pdx_service_attributes(display_screenshot) pdx_service_attributes(display_vsync) pdx_service_attributes(performance_client) pdx_service_attributes(bufferhub_client) # All HAL servers attribute halserverdomain; # All HAL clients attribute halclientdomain; expandattribute halclientdomain true; # Exempt for halserverdomain to access sockets. Only builds for automotive # device types are allowed to use this attribute (enforced by CTS). # Unlike phone, in a car many modules are external from Android perspective and # HALs should be able to communicate with those devices through sockets. attribute hal_automotive_socket_exemption; # HALs hal_attribute(allocator); hal_attribute(atrace); hal_attribute(audio); hal_attribute(audiocontrol); hal_attribute(authgraph); hal_attribute(authsecret); hal_attribute(bluetooth); hal_attribute(bootctl); hal_attribute(broadcastradio); hal_attribute(camera); hal_attribute(can_bus); hal_attribute(can_controller); hal_attribute(cas); hal_attribute(codec2); hal_attribute(configstore); hal_attribute(confirmationui); hal_attribute(contexthub); hal_attribute(drm); hal_attribute(dumpstate); hal_attribute(evs); hal_attribute(face); hal_attribute(fastboot); hal_attribute(fingerprint); hal_attribute(gatekeeper); hal_attribute(gnss); hal_attribute(graphics_allocator); hal_attribute(graphics_composer); hal_attribute(health); hal_attribute(health_storage); hal_attribute(identity); hal_attribute(input_classifier); hal_attribute(input_processor); hal_attribute(ir); hal_attribute(ivn); hal_attribute(keymaster); hal_attribute(keymint); hal_attribute(light); hal_attribute(lowpan); hal_attribute(macsec); hal_attribute(memtrack); hal_attribute(neuralnetworks); hal_attribute(nfc); hal_attribute(nlinterceptor); hal_attribute(oemlock); hal_attribute(omx); hal_attribute(power); hal_attribute(power_stats); hal_attribute(rebootescrow); hal_attribute(remoteaccess); hal_attribute(secretkeeper); hal_attribute(remotelyprovisionedcomponent_avf); hal_attribute(secure_element); hal_attribute(sensors); hal_attribute(telephony); hal_attribute(tetheroffload); hal_attribute(thermal); hal_attribute(threadnetwork); hal_attribute(tv_cec); hal_attribute(tv_hdmi_cec); hal_attribute(tv_hdmi_connection); hal_attribute(tv_hdmi_earc); hal_attribute(tv_input); hal_attribute(tv_tuner); hal_attribute(usb); hal_attribute(usb_gadget); hal_attribute(uwb); # TODO(b/196225233): Remove this attribute and its usages elsewhere # once all chip vendors integrate to the new UWB stack. hal_attribute(uwb_vendor); hal_attribute(vehicle); hal_attribute(vibrator); hal_attribute(vr); hal_attribute(weaver); hal_attribute(wifi); hal_attribute(wifi_hostapd); hal_attribute(wifi_supplicant); # HwBinder services offered across the core-vendor boundary # # We annotate server domains with x_server to loosen the coupling between # system and vendor images. For example, it should be possible to move a service # from one core domain to another, without having to update the vendor image # which contains clients of this service. attribute automotive_display_service_server; attribute camera_service_server; attribute display_service_server; attribute evsmanager_service_server; attribute remote_provisioning_service_server; attribute scheduler_service_server; attribute sensor_service_server; attribute stats_service_server; attribute system_suspend_internal_server; attribute system_suspend_server; attribute wifi_keystore_service_server; # All types used for super partition block devices. attribute super_block_device_type; # All types used for DMA-BUF heaps attribute dmabuf_heap_device_type; expandattribute dmabuf_heap_device_type false; # Types for VM managers attribute vm_manager_device_type; # All types used for DSU metadata files. attribute gsi_metadata_file_type; # Types used for module-specific APEX data directories under # /data/{misc,misc_ce,misc_de}/apexdata. attribute apex_data_file_type; # Domains used for charger. # This is the common type for domains that executes charger's # functionalities, including setting and getting necessary properties, # permissions to maintain the health loop, writing to kernel log, handling # inputs and drawing screens, etc. attribute charger_type; # All types of ART properties. attribute dalvik_config_prop_type;