| ###################################### |
| # 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; |
| |
| # All domains used for binder service domains. |
| 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; |
| |
| # All system domains which are assignable with vendor's seapp_contexts files. |
| # TODO(b/280547417): Remove this once there are no violations |
| attribute vendor_seapp_assigns_coredomain_violators; |
| expandattribute vendor_seapp_assigns_coredomain_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(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(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(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; |