- Nov 01, 2018
-
-
Nick Kralevich authored
Require all SELinux domains which have permission to perform ioctls on /dev/tun explicitly specify what ioctls they perform. Only allow the safe defaults FIOCLEX and FIONCLEX, which are alternate, uncommon ways to set and unset the O_CLOEXEC flag. Remove app's ability to issue *any* ioctls on /dev/tun, period. Add neverallow assertions (compile time assertion + CTS test) to prevent regressions. Limit system_server's ability to perform ioctls on /dev/tun to FIOCLEX, FIONCLEX, TUNGETIFF, and TUNSETIFF. Testing and source code examination shows that only TUNGETIFF and TUNSETIFF are used by system_server. The goal of this change is to put SELinux ioctl controls in place for /dev/tun, so we don't have to maintain the custom kernel patch at https://android.googlesource.com/kernel/common/+/11cee2be0c2062ba88f04eb51196506f870a3b5d%5E%21 Delete the neverallow assertion in isolated_app.te. This is already covered by the assertion present in app_neverallows.te. Test: cts-tradefed run cts -m CtsHostsideNetworkTests -t com.android.cts.net.HostsideVpnTests Test: cts-tradefed run cts -m CtsHostsideNetworkTests Test: cts-tradefed run cts -m CtsNetTestCases Bug: 111560739 Bug: 111560570 Change-Id: Ibe1c3a9e880db0bee438535554abdbc6d84eec45
-
- Oct 31, 2018
-
-
Nick Kralevich authored
Kernel commit 3ba4bf5f1e2c ("selinux: add a map permission check for mmap") added a map permission check on mmap so that we can distinguish memory mapped access (since it has different implications for revocation). system/sepolicy commit 4397f082 introduced the permission to Android and updated common macros. Since then, we've been adding more mmap support where it was accidentally omitted. Add the ability for isolated_apps to mmap() app data files. There's no reason why this should be blocked. Also fixup sdcard access which has similar problems. Bug: 118760652 Bug: https://crbug.com/892014 Test: policy compiles. Change-Id: I3823f313103c9dcedf3b21d081a22f8fbb271c02
-
- Oct 26, 2018
-
-
Tri Vo authored
Remove blanket coredomain access to same_process_hal_file in favor of granular access. This change takes into account audits from go/sedenials (our internal dogfood program) Bug: 37211678 Test: m selinux_policy Change-Id: I5634fb65c72d13007e40c131a600585a05b8c4b5
-
- Oct 13, 2018
-
-
Tri Vo authored
same_process_hal_file is exempted from many Treble neverallows. We want to know which processes access this type to eventually constrain access to it. Bug: 37211678 Test: m selinux_policy Change-Id: I61c0df21250eb1b1ae2d9c5fa9c801a828539813
-
- Oct 03, 2018
-
-
Nick Kralevich authored
Isolated apps provide a very strict security guarantee, including the inability to create networking sockets like TCP / UDP sockets. Add an SELinux neverallow assertion to test for this and prevent regressions. Test: policy compiles. Change-Id: I2618abb17375707eb1048e89faa46f57d33e1df4
-
- Aug 02, 2018
-
-
Nick Kralevich authored
Currently, both untrusted apps and priv-apps use the SELinux file label "app_data_file" for files in their /data/data directory. This is problematic, as we really want different rules for such files. For example, we may want to allow untrusted apps to load executable code from priv-app directories, but disallow untrusted apps from loading executable code from their own home directories. This change adds a new file type "privapp_data_file". For compatibility, we adjust the policy to support access privapp_data_files almost everywhere we were previously granting access to app_data_files (adbd and run-as being exceptions). Additional future tightening is possible here by removing some of these newly added rules. This label will start getting used in a followup change to system/sepolicy/private/seapp_contexts, similar to: -user=_app isPrivApp=true domain=priv_app type=app_data_file levelFrom=user +user=_app isPrivApp=true domain=priv_app type=privapp_data_file levelFrom=user For now, this newly introduced label has no usage, so this change is essentially a no-op. Test: Factory reset and boot - no problems on fresh install. Test: Upgrade to new version and test. No compatibility problems on filesystem upgrade. Change-Id: I9618b7d91d1c2bcb5837cdabc949f0cf741a2837
-
- Feb 23, 2018
-
-
Robert Sesek authored
The webview_zygote is now launched as a child-zygote process from the main zygote process. Bug: 63749735 Test: m Test: Launch "Third-party licenses" activity from Settings, and it renders correctly via the WebView. Merged-In: I9c948b58a969d35d5a5add4b6ab62b8f990645d1 Change-Id: I153476642cf14883b0dfea0d9f5b3b5e30ac1c08
-
- Feb 16, 2018
-
-
Robert Sesek authored
The webview_zygote is now launched as a child-zygote process from the main zygote process. Bug: 63749735 Test: m Test: Launch "Third-party licenses" activity from Settings, and it renders correctly via the WebView. Change-Id: I9c948b58a969d35d5a5add4b6ab62b8f990645d1
-
- Jan 10, 2018
-
-
Primiano Tucci authored
Perfetto is a performance instrumentation and logging framework, living in AOSP's /external/pefetto. Perfetto introduces in the system one binary and two daemons (the binary can specialize in either depending on the cmdline). 1) traced: unprivileged daemon. This is architecturally similar to logd. It exposes two UNIX sockets: - /dev/socket/traced_producer : world-accessible, allows to stream tracing data. A tmpfs file descriptor is sent via SCM_RIGHTS from traced to each client process, which needs to be able to mmap it R/W (but not X) - /dev/socket/traced_consumer : privilege-accessible (only from: shell, statsd). It allows to configure tracing and read the trace buffer. 2) traced_probes: privileged daemon. This needs to: - access tracingfs (/d/tracing) to turn tracing on and off. - exec atrace - connect to traced_producer to stream data to traced. init.rc file: https://android-review.googlesource.com/c/platform/external/perfetto/+/575382/14/perfetto.rc Bug: 70942310 Change-Id: Ia3b5fdacbd5a8e6e23b82f1d6fabfa07e4abc405
-
- Oct 10, 2017
-
-
Nick Kralevich authored
isolated_apps are intended to be strictly limited in the /sys files which can be read. Add a neverallow assertion to guarantee this on all Android compatible devices. Test: policy compiles. Change-Id: I2980291dcf4e74bb12c81199d61c5eb8a182036c
-
- Oct 07, 2017
-
-
Nick Kralevich authored
Bullhead and dragon are broken. Revert until I can fix those builds. Dragon: libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26264 of policy.conf) violated by allow isolated_app sysfs_socinfo:file { ioctl read lock open }; Bullhead: libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26283 of policy.conf) violated by allow isolated_app sysfs_power_management:file { ioctl read lock open }; libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26283 of policy.conf) violated by allow isolated_app sysfs_socinfo:file { ioctl read lock open }; libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26283 of policy.conf) violated by allow isolated_app sysfs_thermal:file { ioctl read lock open }; libsepol.check_assertions: 3 neverallow failures occurred This reverts commit 579366a0. Change-Id: I1ea4824e226c06628769898299f2e322060d0d06 Test: policy compiles.
-
- Oct 05, 2017
-
-
Nick Kralevich authored
isolated_apps are intended to be strictly limited in the /sys files which can be read. Add a neverallow assertion to guarantee this on all Android compatible devices. Test: policy compiles. Change-Id: I47aceefa3f43a7ea9e526f6f0ef377d0b4efbe3a
-
- Oct 04, 2017
-
-
Nick Kralevich authored
This functionality is being used, apparently. Addresses the following auditallow spam: type=1400 audit(0.0:1039): avc: granted { write } for comm="Chrome_ProcessL" path="/storage/emulated/0/Android/data/com.bleacherreport.android.teamstream/cache/.com.google.Chrome.sk5n91" dev="sdcardfs" ino=1877565 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:sdcardfs:s0 tclass=file Test: policy compiles. Bug: 32896414 Change-Id: I627e20c38115f1d579e78ca12abfa717d32a155a
-
- Sep 26, 2017
-
-
Dan Cashman authored
Bug: 37916906 Test: Builds 'n' boots. Change-Id: Ia1d86264446ebecc1ca79f32f11354921bc77668 Merged-In: I208ec6a864127a059fb389417a9c6b259d7474cb
-
- Jul 12, 2017
-
-
Jeff Vander Stoep authored
avc: denied { search } for name="tmp" dev="sda13" ino=1867778 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:shell_data_file:s0 tclass=dir avc: denied { getattr } for path="/mnt/expand" dev="tmpfs" ino=9850 scontext=u:r:webview_zygote:s0 tcontext=u:object_r:mnt_expand_file:s0 tclass=dir Bug: 63631799 Test: build. Denial no longer appears in the logs Change-Id: Ie8a297c73b0f0e9008a7bf24438ef5354bf893df
-
- Apr 22, 2017
-
-
Alex Klyubin authored
* isolated_app is no longer permitted to access /dev/hwbinder -- this was granted by mistake. * There are now neverallows which enforce that isolated_app can't access HwBinder and VendorBinder. * There are now neverallows which enforce that isolated_app can't add Binder and VendorBinder services to servicemanager and vndservicemanager. Test: mmm system/sepolicy Bug: 34454312 Change-Id: I8ba90a0dcb6a9fccd8f50c78cbd2409381376f7a
-
- Mar 24, 2017
-
-
Alex Klyubin authored
On PRODUCT_FULL_TREBLE devices, non-vendor domains (except vendor apps) are not permitted to use Binder. This commit thus: * groups non-vendor domains using the new "coredomain" attribute, * adds neverallow rules restricting Binder use to coredomain and appdomain only, and * temporarily exempts the domains which are currently violating this rule from this restriction. These domains are grouped using the new "binder_in_vendor_violators" attribute. The attribute is needed because the types corresponding to violators are not exposed to the public policy where the neverallow rules are. Test: mmm system/sepolicy Test: Device boots, no new denials Test: In Chrome, navigate to ip6.me, play a YouTube video Test: YouTube: play a video Test: Netflix: play a movie Test: Google Camera: take a photo, take an HDR+ photo, record video with sound, record slow motion video with sound. Confirm videos play back fine and with sound. Bug: 35870313 Change-Id: I0cd1a80b60bcbde358ce0f7a47b90f4435a45c95
-
- Feb 06, 2017
-
-
Chad Brubaker authored
The neverallows in untrusted_app will all apply equally to ephemeral app and any other untrusted app domains we may add, so this moves them to a dedicated separate file. This also removes the duplicate rules from isolated_app.te and ensures that all the untrusted_app neverallows also apply to isolated_app. Test: builds Change-Id: Ib38e136216ccbe5c94daab732b7ee6acfad25d0b
-
- Jan 06, 2017
-
-
Alex Klyubin authored
This leaves only the existence of isolated_app domain as public API. All other rules are implementation details of this domain's policy and are thus now private. Test: No change to policy according to sesearch, except for disappearance of all allow rules from isolated_app_current attribute (as expected). Bug: 31364497 Change-Id: I499a648e515628932b7bcd188ecbfbe4a247f2f3
-
- Dec 08, 2016
-
-
dcashman authored
app_domain was split up in commit: 2e00e637 to enable compilation by hiding type_transition rules from public policy. These rules need to be hidden from public policy because they describe how objects are labeled, of which non-platform should be unaware. Instead of cutting apart the app_domain macro, which non-platform policy may rely on for implementing new app types, move all app_domain calls to private policy. (cherry-pick of commit: 76035ea0) Bug: 33428593 Test: bullhead and sailfish both boot. sediff shows no policy change. Change-Id: I4beead8ccc9b6e13c6348da98bb575756f539665
-
dcashman authored
app_domain was split up in commit: 2e00e637 to enable compilation by hiding type_transition rules from public policy. These rules need to be hidden from public policy because they describe how objects are labeled, of which non-platform should be unaware. Instead of cutting apart the app_domain macro, which non-platform policy may rely on for implementing new app types, move all app_domain calls to private policy. Bug: 33428593 Test: bullhead and sailfish both boot. sediff shows no policy change. Change-Id: I4beead8ccc9b6e13c6348da98bb575756f539665
-
- Dec 06, 2016
-
-
dcashman authored
In order to support platform changes without simultaneous updates from non-platform components, the platform and non-platform policies must be split. In order to provide a guarantee that policy written for non-platform objects continues to provide the same access, all types exposed to non-platform policy are versioned by converting them and the policy using them into attributes. This change performs that split, the subsequent versioning and also generates a mapping file to glue the different policy components together. Test: Device boots and runs. Bug: 31369363 Change-Id: Ibfd3eb077bd9b8e2ff3b2e6a0ca87e44d78b1317
-