blob: e4315a2008c68ebe8b60fde1ca218cbc7afa00b9 [file] [log] [blame]
# microdroid_payload is an attribute for microdroid payload processes.
# Domains should have microdroid_payload to be run from microdroid_manager.
# Allow to communicate use, read and write over the adb connection.
allow microdroid_payload adbd:fd use;
allow microdroid_payload adbd:unix_stream_socket { read write };
# microdroid_launcher is launched by microdroid_manager with fork/execvp.
allow microdroid_payload microdroid_manager:fd use;
# Allow to use terminal
allow microdroid_payload devpts:chr_file rw_file_perms;
# Allow to set debug prop
set_prop(microdroid_payload, debug_prop)
# Allow microdroid_payload to use vsock inherited from microdroid_manager
allow microdroid_payload microdroid_manager:vsock_socket { read write };
# Write to /dev/kmsg.
allow microdroid_payload kmsg_device:chr_file rw_file_perms;
# Read from console. Note that both /dev/kmsg and /dev/console are backed
# by the same file in the host.
allow microdroid_payload console_device:chr_file r_file_perms;
# Allow microdroid_payload to host binder servers via vsock. Listening
# for connections from the host is permitted, but connecting out to
# the host is not. Inbound connections are mediated by
# virtualiationservice which ensures a process can only connect to a
# VM that it owns.
allow microdroid_payload self:vsock_socket {
create listen accept read getattr write setattr lock append bind
getopt setopt shutdown map
};
# Payload can read extra apks
r_dir_file(microdroid_payload, extra_apk_file)
# Payload can read /proc/meminfo.
allow microdroid_payload proc_meminfo:file r_file_perms;
# Allow payload to communicate with authfs_service
unix_socket_connect(microdroid_payload, authfs_service, authfs_service)
# Allow locating the authfs mount directory.
allow microdroid_payload authfs_data_file:dir search;
# Read and write files authfs-proxied files.
allow microdroid_payload authfs_fuse:dir rw_dir_perms;
allow microdroid_payload authfs_fuse:file create_file_perms;
# Allow payload to communicate with microdroid manager
unix_socket_connect(microdroid_payload, vm_payload_service, microdroid_manager)
# Payload can read, write into encrypted storage directory
allow microdroid_payload encryptedstore_file:dir create_dir_perms;
allow microdroid_payload encryptedstore_file:file create_file_perms;
# Payload can access devices labeled as payload accessible.
allow microdroid_payload payload_accessible_device:chr_file rw_file_perms;
# Never allow microdroid_payload to connect to vsock
neverallow microdroid_payload self:vsock_socket connect;
# Nothing else should be accessing the payload's storage
neverallow { domain
-microdroid_payload
-microdroid_manager
-encryptedstore
-init
-vendor_init
} encryptedstore_file:dir { read write };
neverallow { domain
-microdroid_payload
-microdroid_manager
-init
-vendor_init
} encryptedstore_file:file no_rw_file_perms;