- Apr 10, 2018
-
-
Jeff Vander Stoep authored
Files in /proc/net leak information. This change is the first step in determining which files apps may use, whitelisting benign access, and otherwise removing access while providing safe alternative APIs. To that end, this change: * Introduces the proc_net_type attribute which will assigned to any new SELinux types in /proc/net to avoid removing access to privileged processes. These processes may be evaluated later, but are lower priority than apps. * Labels /proc/net/{tcp,tcp6,udp,udp6} as proc_net_vpn due to existing use by VPN apps. This may be replaced by an alternative API. * Audits all other proc/net access for apps. * Audits proc/net access for other processes which are currently granted broad read access to /proc/net but should not be including storaged, zygote, clatd, logd, preopt2cachename and vold. Bug: 9496886 Bug: 68016944 Test: Boot Taimen-userdebug. On both wifi and cellular: stream youtube navigate maps, send text message, make voice call, make video call. Verify no avc "granted" messages in the logs. Test: A few VPN apps including "VPN Monster", "Turbo VPN", and "Freighter". Verify no logspam with the current setup. Test: atest CtsNativeNetTestCases Test: atest netd_integration_test Test: atest QtaguidPermissionTest Test: atest FileSystemPermissionTest Change-Id: I7e49f796a25cf68bc698c6c9206e24af3ae11457
-
- Apr 03, 2018
-
-
Jeff Vander Stoep authored
This is a partial cherry pick of commit 6231b4d9 'Enforce per-app data protections for targetSdk 28+'. Untrusted_app_27 remains unreachable, but it's existence prevents future merge conflicts. Bug: 63897054 Test: build/boot aosp_walleye-userdebug Change-Id: I64b013874fe87b55f47e817a1279e76ecf86b7c0 Merged-In: I64b013874fe87b55f47e817a1279e76ecf86b7c0 (cherry picked from commit 6231b4d9)
-
- Jan 18, 2018
-
-
Jeff Vander Stoep authored
Adds per-app categories to untrusted app domains and their app data types. Per-app categories are in addition to the existing per-user categories. Apps targeting sdk version 28+ will now have the following characteristics: Domain: u:r:untrusted_app:s0:c[0-9]+,c[0-9]+,c[0-9],c[0-9] Data context: u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+,c[0-9],c[0-9] Whereas apps targeting 27- will look like: Domain: u:r:untrusted_app_27:s0:c[0-9]+,c[0-9]+ Data context: u:object_r:app_data_file:s0:c[0-9]+,c[0-9]+ To ensure backwards compatibility with previous SDK versions, the levelFrom=all now enforces categories by dominance instead of equality. Apps with per-app and per-user categories will continue to have selinux permissions (but not necessarily unix permissions) to access app data with only per-user categories, but apps with only per-user categories will not be able to access the data of apps with both per-app and per-user categories. Bug: 63897054 Test: Boot sailfish, run apps, verify no new selinux denials. Test: cts-tradefed run cts -m CtsSelinuxTargetSdkCurrentTestCases Test: cts-tradefed run cts -m CtsSelinuxTargetSdk27TestCases Test: cts-tradefed run cts -m CtsSelinuxTargetSdk25TestCases Test: adb sideload an OTA and verify that files are correctly labeled. Change-Id: I64b013874fe87b55f47e817a1279e76ecf86b7c0
-
- Jan 15, 2018
-
-
Nathan Harold authored
This gives the privilege to system apps, platform apps, ephemeral apps, and privileged apps to receive a UDP socket from the system server. This is being added for supporting UDP Encapsulation sockets for IPsec, which must be provided by the system. This is an analogous change to a previous change that permitted these sockets for untrusted_apps: 0f75a62e Bug: 70389346 Test: IpSecManagerTest, System app verified with SL4A Change-Id: Iec07e97012e0eab92a95fae9818f80f183325c31
-
- Apr 12, 2017
-
-
Nathan Harold authored
These permissions allow the system server to create and bind a UDP socket such that it gains the SOCK_BINDPORT_LOCK. (ref: af_inet.c - inet_bind()) This prevents the user from disconnecting the socket, which would create a security vulnerability. The user may then use the provided socket, which is always IPv4/UDP, for IKE negotiation. Thus, an un-trusted user app must be able to use the socket for communication. -ALLOW: read, write, connect, sendto, and recvfrom. -NEVERALLOW: anything else Bug: 30984788 Test: CTS tested via IpSecManagerTest:testUdpEncapsulationSocket Change-Id: I045ba941797ac12fd14a0cce42efdd2abc4d67e0
-
- 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 22, 2017
-
-
Jeff Vander Stoep authored
Bug: 35632346 Test: build and boot aosp_marlin Change-Id: Ia2d019b0160e9b512f3e3a70ded70504fe4fea0c
-
- Feb 14, 2017
-
-
Jeff Vander Stoep authored
Motivation: Provide the ability to phase in new security policies by applying them to apps with a minimum targetSdkVersion. Place untrusted apps with targetSdkVersion<=25 into the untrustd_app_25 domain. Apps with targetSdkVersion>=26 are placed into the untrusted_app domain. Common rules are included in the untrusted_app_all attribute. Apps with a more recent targetSdkVersion are granted fewer permissions. Test: Marlin builds and boots. Apps targeting targetSdkVersion<=25 run in untrusted_app_25 domain. Apps targeting the current development build >=26 run in the untrusted_app domain with fewer permissions. No new denials observed during testing. Bug: 34115651 Bug: 35323421 Change-Id: Ie6a015566fac07c44ea06c963c40793fcdc9a083
-
- Feb 11, 2017
-
-
Craig Donner authored
There is only a single systemapi at the moment that is callable, and it is protected by a signature/preinstalled permission. (cherry picked from commit I778864afc9d02f8b2bfcf6b92a9f975ee87c4724) Bug: 35059826,33297721 Test: manually on a marlin Change-Id: I3789ce8238f5a52ead8f466dfa3045fbcef1958e
-
- Feb 10, 2017
-
-
Nick Kralevich authored
Move net.dns* from net_radio_prop to the newly created label net_dns_prop. This allows finer grain control over this specific property. Prior to this change, this property was readable to all SELinux domains, and writable by the following SELinux domains: * system_server * system_app (apps which run as UID=system) * netmgrd * radio This change: 1) Removes read access to this property to everyone EXCEPT untrusted_app and system_server. 2) Limit write access to system_server. In particular, this change removes read access to priv_apps. Any priv_app which ships with the system should not be reading this property. Bug: 34115651 Test: Device boots, wifi turns on, no problems browsing the internet Change-Id: I8a32e98c4f573d634485c4feac91baa35d021d38
-
- Feb 07, 2017
-
-
Craig Donner authored
There is only a single systemapi at the moment that is callable, and it is protected by a signature/preinstalled permission. Bug: 35059826,33297721 Test: manually on a marlin Change-Id: I778864afc9d02f8b2bfcf6b92a9f975ee87c4724
-
- 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 25, 2017
-
-
Ray Essick authored
reflect the change from "mediaanalytics" to "mediametrics" Also incorporates a broader access to the service -- e.g. anyone. This reflects that a number of metrics submissions come from application space and not only from our controlled, trusted media related processes. The metrics service (in another commit) checks on the source of any incoming metrics data and limits what is allowed from unprivileged clients. Bug: 34615027 Test: clean build, service running and accessible Change-Id: I657c343ea1faed536c3ee1940f1e7a178e813a42
-
- Jan 05, 2017
-
-
Alex Klyubin authored
This leaves only the existence of untrusted_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 untrusted_domain_current attribute (as expected). Bug: 31364497 Change-Id: Ief71fa16cfc38437cbe5c58100bba48b9a497c92
-
- 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
-