- Oct 29, 2018
-
-
Nick Kralevich authored
untrusted_app: Remove the ability to run execve() on files within an application's home directory. Executing code from a writable /home directory is a W^X violation (https://en.wikipedia.org/wiki/W%5EX). Additionally, loading code from application home directories violates a security requirement that all executable code mapped into memory must come from signed sources, or be derived from signed sources. Note: this change does *not* remove the ability to load executable code through other mechanisms, such as mmap(PROT_EXEC) of a file descriptor from the app's home directory. In particular, functionality like dlopen() on files in an app's home directory continues to work even after this change. untrusted_app_25 and untrusted_app_27: For backwards compatibility, continue to allow these domains to execve() files from the application's home directory. seapp_contexts: Bump the minimum API level required to enter the untrusted_app domain. This will run API level 27-28 processes in the API level 27 sandbox. API level 28 will continue to run with levelFrom=all, and API level 27 will continue to run with levelFrom=user. Bug: 112357170 Test: Device boots and no obvious problems. Test: See CTS test at https://android-review.googlesource.com/c/platform/cts/+/804228 Change-Id: Ief9ae3a227d16ab5792f43bacbb577c1e70185a0
-
- Oct 26, 2018
-
-
Nick Kralevich authored
The current rule is missing mmap. r_file_perm implicitly adds mmap, so we should just use that instead. Test: policy compiles. Change-Id: I4051d1eb4c36a2b6ff2b5f26ce53355287cbe2b4
-
- Sep 28, 2018
-
-
Jeff Vander Stoep authored
This change is for testing potential app-compat issues when removing access to file in /proc/net. See: b/114475727#comment11. Bug: 114475727 Test: build/boot taimen. Test: atest CtsLibcoreOjTestCases Test: FileSystemPermissionTest Test: ListeningPortsTest b/114772424 Change-Id: I1db1c2b41308e47c9ec9db57ea8597a650c8906d (cherry picked from commit 6784f80b)
-
- Aug 13, 2018
-
-
Nick Kralevich authored
There is a problem with on-disk labeling of files created by secondary dex background compilation which is causing unexpected denials to show up. Drop the auditallow rule to avoid logspam. Steps to reproduce: 1) boot android device. 2) adb root 3) Run cmd package compile -r bg-dexopt --secondary-dex com.google.android.gms 4) Examine the files in /data/user_de/0/com.google.android.gms Expected: All files have the label privapp_data_file Actual: The files in /data/user_de/0/com.google.android.gms/app_chimera/m are labeled "app_data_file", not "privapp_data_file". Addresses the following audit logspam: type=1400 audit(0.0:117): avc: granted { execute } for comm=4173796E635461736B202331 path="/data/user_de/0/com.google.android.gms/app_chimera/m/00000002/oat/arm/DynamiteLoader.odex" dev="dm-0" ino=5775 scontext=u:r:untrusted_app:s0:c111,c256,c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file app=com.android.chrome Additionally, this removes auditallow statements for older untrusted apps. Lots of big apps are executing files from their home directory. Additional restrictions in this area will need to be tied to API versions. Addresses the following audit logspam: type=1400 audit(0.0:619): avc: granted { execute } for comm="na:notification" path="/data/data/com.facebook.katana/lib-xzs/libbreakpad.so" dev="dm-3" ino=28333 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file app=com.facebook.katana type=1400 audit(0.0:129): avc: granted { execute } for comm="ticlock" path="/data/data/is.shortcut/files/ticlock/ticlock" dev="dm-3" ino=58614 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file app=is.shortcut type=1400 audit(0.0:1239): avc: granted { execute } for comm="Analytics-Norma" path="/data/data/com.facebook.orca/lib-xzs/libchipsetmerged.so" dev="dm-3" ino=50243 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file app=com.facebook.orca type=1400 audit(0.0:58): avc: granted { execute_no_trans } for comm="sh" path="/data/data/is.shortcut/files/ticlock/ticlock" dev="dm-3" ino=58614 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file app=is.shortcut type=1400 audit(0.0:1948): avc: granted { execute_no_trans } for comm="sh" path="/data/data/com.mxdata.tube.Market/files/osmcore" dev="sda13" ino=2752651 scontext=u:r:untrusted_app_25:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file app=com.mxdata.tube.Market type=1400 audit(0.0:2875): avc: granted { execute_no_trans } for comm="ThreadPoolManag" path="/data/data/com.amazon.kindle/files/hardwareTest" dev="sda13" ino=1935346 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=file app=com.amazon.kindle This reverts commit 4738b93d. Bug: 112357170 Test: policy compiles
-
- Aug 08, 2018
-
-
Nick Kralevich authored
Text relocation support was removed from the linker for apps targeting API >= 23. See https://android.googlesource.com/platform/bionic/+/master/android-changes-for-ndk-developers.md#text-relocations-enforced-for-api-level-23 However, the security policy was not updated to remove the execmod permission at that time, since we didn't have support for targeting SELinux policies to API versions. Remove execmod permissions for apps targeting API 26 or greater. The linker support was removed, so it's pointless to keep around the SELinux permissions. Retain execmod support for apps targeting API 25 or lower. While in theory we could remove support for API 23-25, that would involve the introduction of a new SELinux domain (and the associated rule explosion), which I would prefer to avoid. This change helps protect application executable code from modification, enforcing W^X properties on executable code pages loaded from files. https://en.wikipedia.org/wiki/W%5EX Test: auditallow rules were added and nothing triggered for apps targeting API >= 26. Code compiles and device boots. Bug: 111544476 Change-Id: Iab9a0bd297411e99699e3651c110e57eb02a3a41
-
- Aug 07, 2018
-
-
Nick Kralevich authored
This reverts commit 0f11ffcc. Reason for revert: libmono crashes Bug: 112292089 Bug: 111544476 Test: policy compiles, device boots Change-Id: I064090aa9337cf17b80cd2c9af9342df851a3b27
-
- Aug 06, 2018
-
-
Nick Kralevich authored
Executing files from an application home directory violates W^X (https://en.wikipedia.org/wiki/W%5EX) constraints (loading executable code from a writable file) and is an unsafe application behavior. Test to see if we can get rid of it and establish some baseline metrics. Test: device boots and no obvious problems. Change-Id: I756c281fcbf750821307327642cc0d06605951b0
-
Nick Kralevich authored
As of https://android-review.googlesource.com/c/platform/system/sepolicy/+/536356 , the untrusted_v2_app domain is no longer used. Bug: 112233317 Test: policy compiles, device boots, and no problems Change-Id: I5a47c8305bef374b7fea06cd789e06cd48b847e6
-
- 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
-
Alan Stokes authored
Remove the exemptions for untrusted apps and broaden the neverallow so they can't be reinstated. Modifying executable pages is unsafe. Text relocations are not supported. Bug: 111544476 Test: Builds. Change-Id: Ibff4f34d916e000203e38574bb063513e4428bb7
-
- Jul 20, 2018
-
-
Alan Stokes authored
This is to avoid merge problems if we make any further changes in AOSP. Test: Builds. Change-Id: Ib4193d31c02dda300513f82f6c7426a2e81d8111
-
Alan Stokes authored
This is so we can get data on which apps are actually doing this. Bug: 111544476 Test: Device boots. No audits seen on test device. Change-Id: I5f72200ed8606775904d353c4d3d790373fe7dea
-
- Jun 01, 2018
-
-
Jeff Vander Stoep authored
The recommended solution is to not access encrypted storage until after the ACTION_USER_UNLOCKED intent is delivered. Test: build Fixes: 72811052 Fixes: 72550646 Change-Id: I80eb743e26047b7864de983c5a46c28b6f753a59
-
- May 04, 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 Merged-In: I7e49f796a25cf68bc698c6c9206e24af3ae11457 (cherry picked from commit 08731895)
-
- Apr 03, 2018
-
-
Nathan Harold authored
Because applications should be able to set the receive timeout on UDP encapsulation sockets, we need to allow setsockopt(). getsockopt() is an obvious allowance as well. Bug: 68689438 Test: compilation Merged-In: I2eaf72bcce5695f1aee7a95ec03111eca577651c Change-Id: I2eaf72bcce5695f1aee7a95ec03111eca577651c
-
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)
-
Nathan Harold authored
Because applications should be able to set the receive timeout on UDP encapsulation sockets, we need to allow setsockopt(). getsockopt() is an obvious allowance as well. Bug: 68689438 Test: compilation Change-Id: I2eaf72bcce5695f1aee7a95ec03111eca577651c
-
- Mar 28, 2018
-
-
Joel Galenson authored
These denials occur fairly often, causing some logspam. Bug: 77225170 Test: Boot device. Merged-In: Icd73a992aee44007d0873743f706758f9a19a112 Change-Id: Icd73a992aee44007d0873743f706758f9a19a112 (cherry picked from commit a66d1a45)
-
Joel Galenson authored
These denials occur fairly often, causing some logspam. Bug: 77225170 Test: Boot device. Change-Id: Icd73a992aee44007d0873743f706758f9a19a112
-
- Jan 24, 2018
-
-
Max Bires authored
This change will allow traceur to pass a file descriptor to another app in order to allow that app to process trace data files. E.g. in the use case that someone would like to email the traces they collected and pass the trace data files to gmail, this will now be permitted. Bug:68126425 Test: Traceur can pass fd's to untrusted apps for processing Change-Id: If0507b5d1f06fd8400e04bd60e06a44153dc59b7
-
- 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
-
- 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
-
- Nov 09, 2017
-
-
Jeff Vander Stoep authored
Vendor apps may only use servicemanager provided services marked as app_api_service. surfaceflinger_service should be available to vendor apps, so add this attribute and clean up duplicate grants. Addresses: avc: denied { find } scontext=u:r:qtelephony:s0 tcontext=u:object_r:surfaceflinger_service:s0 tclass=service_manager avc: denied { find } scontext=u:r:ssr_detector:s0 tcontext=u:object_r:surfaceflinger_service:s0 tclass=service_manager avc: denied { find } scontext=u:r:qcneservice:s0 tcontext=u:object_r:surfaceflinger_service:s0 tclass=service_manager Bug: 69064190 Test: build Change-Id: I00fcf43b0a8bde232709aac1040a5d7f4792fa0f
-
- Sep 26, 2017
-
-
Dan Cashman authored
Bug: 37916906 Test: Builds 'n' boots. Change-Id: Ia1d86264446ebecc1ca79f32f11354921bc77668 Merged-In: I208ec6a864127a059fb389417a9c6b259d7474cb
-
- Jul 28, 2017
-
-
Philip P. Moltmann authored
Bug: 37281396 Test: cts-tradefed run cts-dev -m CtsContentTestCases --test=android.content.pm.cts.InstallSessionTransferTest Change-Id: If2094057d1acfbbf007ae108225decd9ad70e459
-
- Jun 16, 2017
-
-
Chong Zhang authored
bug: 22804304 Change-Id: I7162905d698943d127aa52804396e4765498d028
-
- Apr 28, 2017
-
-
Sandeep Patil authored
The typical use case is where vendor apps which run as untrusted apps use libraries that are packaged withing the apk Bug: 37753883 Test: Tested by runnig pre-installed app that packages a library from /vendor/app Change-Id: I445144e37e49e531f4f43b13f34d6f2e78d7a3cf Signed-off-by:
Sandeep Patil <sspatil@google.com>
-
- Apr 26, 2017
-
-
Chad Brubaker authored
Rules defined in utrusted_app_all do not apply to all untrusted apps, update the comments to reflect that. Test: builds Change-Id: I6f064bd93c13d8341128d941be34fdfaa0bec5da
-
- Mar 29, 2017
-
-
Chad Brubaker authored
Test: denials go away Change-Id: I103cf3ad8d86b461bcba8edce02f6202fd2bcbe8
-
- Mar 15, 2017
-
-
Fyodor Kupolov authored
Untrusted apps should only access /data/preloads/media and demo directory. Bug: 36197686 Test: Verified retail mode. Checked non-privileged APK cannot access /data/preloads Change-Id: I8e9c21ff6aba799aa31bf06893cdf60dafc04446
-
- Mar 06, 2017
-
-
Nick Kralevich authored
We need more time to investigate the effect that this change will have on DRM solutions. Until the investigation is done, revert. This reverts commit 38d3eca0. Bug: 30146890 Bug: 20013628 Bug: 35323421 Change-Id: I5ad69ef5ee12081ce7fc0a8440712f7f8f77cf16 Test: policy compiles.
-
- Mar 05, 2017
-
-
Nick Kralevich authored
Drop support for execmod (aka text relocations) for newer API versions. Retain it for older app APIs versions. Bug: 30146890 Bug: 20013628 Bug: 35323421 Test: policy compiles. Change-Id: Ie54fdb385e9c4bb997ad6fcb6cff74f7e32927bb
-
Nick Kralevich authored
This should only be granted to legacy apps, not to newer API versions. Change-Id: Ia4b9b3a3cf33aa31bcad2fe15d8470c50132e2a9 Test: policy compiles.
-
- Feb 28, 2017
-
-
Chong Zhang authored
Also allow media.extractor to use media.cas for descrambling. bug: 22804304 Change-Id: Id283b31badecb11011211a776ba9ff5167a9019d
-
- 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
-