- Sep 26, 2014
-
-
Nick Kralevich authored
Android's native bridge functionality allows an Android native app written on one CPU architecture to run on a different architecture. For example, Android ARM apps may run on an x86 CPU. To support this, the native bridge functionality needs to replace /proc/cpuinfo with the version from /system/lib/<ISA>/cpuinfo using a bind mount. See commit ab0da5a9a6860046619629b8e6b83692d35dff86 in system/core. This change: 1) Creates a new label proc_cpuinfo, and assigns /proc/cpuinfo that label. 2) Grants read-only access to all SELinux domains, to avoid breaking pre-existing apps. 3) Grants zygote mounton capabilities for that file, so zygote can replace the file as necessary. Addresses the following denial: avc: denied { mounton } for path="/proc/cpuinfo" dev="proc" ino=4026532012 scontext=u:r:zygote:s0 tcontext=u:object_r:proc:s0 tclass=file Bug: 17671501 Change-Id: Ib70624fba2baeccafbc0a41369833f76b976ee20
-
- Sep 25, 2014
-
-
Nick Kralevich authored
Apps should be able to read the contents of mounted OBBs. Steps to reproduce: 1) Install com.namcobandaigames.soulcaliburgp (SoulCalibur) 2) Attempt to run the app. Expected: App runs successfully. Actual: App crashes. See denials below. This can also be reproduced by running the newly introduced CTS test in I2018b63b0236ce6b5aee4094e40473315b1948c3 Addresses the following denials: avc: denied { read } for pid=4133 comm="roidJUnitRunner" name="test1.txt" dev="loop0" ino=23 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=file avc: denied { open } for pid=4133 comm="roidJUnitRunner" name="test1.txt" dev="loop0" ino=23 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=file avc: denied { getattr } for pid=4133 comm="roidJUnitRunner" path="/mnt/obb/f73da56689d166b5389d49ad31ecbadb/test1.txt" dev="loop0" ino=23 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=file avc: denied { search } for name="/" dev="loop0" ino=1 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:vfat:s0 tclass=dir permissive=0 (cherrypick of commit 62083414) Bug: 17633509 Change-Id: I49b722b24c1c7d9ab084ebee7c1e349d8d660ffa
-
- Sep 23, 2014
-
-
Nick Kralevich authored
-
Nick Kralevich authored
Otherwise the following denial occurs when I3972f846ff5e7363799ba521f1258d662b18d64e is present and "adb root" is run. <6>[ 64.507223] type=1400 audit(1411432079.100:471): avc: denied { connectto } for pid=717 comm="JDWP" path=006A6477702D636F6E74726F6C scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:r:su:s0 tclass=unix_stream_socket permissive=1 <6>[ 64.507617] type=1400 audit(1411432079.100:472): avc: denied { connectto } for pid=1659 comm="JDWP" path=006A6477702D636F6E74726F6C scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:su:s0 tclass=unix_stream_socket permissive=1 Change-Id: I1772912b2ca1446b822303ad6ea3154427f8331f
-
Stephen Smalley authored
Add levelFrom=user to the entries for apps other than those that run in the predefined platform UIDs (e.g. system, nfc, radio, ...). This causes libselinux to assign a per-user category set computed from the user ID portion of the Linux UID to each app process and its /data/data/<pkgdir> or /data/user/N/<pkgdir> directory. These per-user category sets can be seen in the last field of ps -Z output for apps and ls -Z /data/data or /data/user/N output for the package directories. With this applied, apps running on behalf of one user cannot read or write files created by apps running on behalf of another user, even if the file is world-readable or -writable. Similar isolation is enforced over process interactions (including /proc/pid file access), local socket communications, and System V IPC, as expressed in the set of constraints defined in the mls configuration. At present, Binder IPC is not restricted by the mls configuration; if desired, there is a constraint in the configuration that can be uncommented to also apply isolation on direct binder IPC, although communication will still be possible indirectly via the system_server. Bug: 13507660 Change-Id: I3972f846ff5e7363799ba521f1258d662b18d64e Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
- Sep 22, 2014
-
-
Nick Kralevich authored
During factory provisioning, some manufacturers may need to pull files from /factory (label efs_file and bluetooth_efs_file) to collect device specific identifiers such as the mac address, using commands similar to the following: adb shell cat /factory/ssn adb shell cat /factory/bt/bd_addr.conf adb shell cat /factory/wifi/mac.txt adb shell cat /factory/60isn read-only access to these files is currently disallowed by a neverallow rule. Relax the rules to allow read-only access to the shell user if desired. No new SELinux rules are added or deleted by this change. This is only a relaxation in what's allowed for vendor specific policy. Bug: 17600278 Change-Id: I13f33f996c077918dce70a5cff31a87eac436678
-
Nick Kralevich authored
Netlink uevent sockets are used by the kernel to inform userspace when certain events occur, for example, when new hardware is added or removed. This allows userspace to take some action based on those messages. Relax the neverallow rule for NETLINK_KOBJECT_UEVENT sockets. Certain device specific app domains, such as system_app, may have a need to receive messages from this socket type. Continue to neverallow NETLINK_KOBJECT_UEVENT sockets for untrusted_app. These sockets have been the source of rooting attacks in Android in the past, and it doesn't make sense to expose this to untrusted_apps. No new SELinux rules are introduced by this change. This is an adjustment of compile time assertions only. Bug: 17525863 Change-Id: I3e538dc8096dc23b9678bcd20e3c1e742c21c967
-
- Sep 20, 2014
-
-
Stephen Smalley authored
Introduce separate types for the userdata and cache block devices so that we can assign them and allow access to them in device-specific policy without allowing access to any other block device (e.g. system). These types will only be used if assigned to device node paths in the device-specific file_contexts configuration. Otherwise, this change will have no impact - the userdata and cache block devices will continue to default to block_device type. To avoid breakage when these new types are assigned to the userdata block device, allow access by vold and uncrypt, but auditallow these accesses to confirm that these are required. Change-Id: I99d24f06506f51ebf1d186d9c393b3cad60e98d7 Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
dcashman authored
Address the following denials: <12>[ 417.732129] type=1400 audit(365340.189:47): avc: denied { read } for pid=1737 comm="Binder_2" name="mmcblk0p18" dev="tmpfs" ino=12406 scontext=u:r:system_server:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0 <12>[ 417.882126] type=1400 audit(365340.339:48): avc: denied { read } for pid=1737 comm="Binder_2" name="mmcblk0p18" dev="tmpfs" ino=12406 scontext=u:r:system_server:s0 tcontext=u:object_r:block_device:s0 tclass=blk_file permissive=0 (cherrypick of commit 47bd7300) Bug: 16710840 Change-Id: I8cb5b4b17dffe14f0bf05d63eb8f6ab8d5c09f53
-
Nick Kralevich authored
-
Nick Kralevich authored
-
- Sep 18, 2014
-
-
Nick Kralevich authored
The kernel driver has been deprecated by the new userspace driver. Don't continue to allow access to the old driver. Maintain the labeling on /dev/log/* for now, just in case. Bug: 13505761 Change-Id: Ibf8ef3af6274ede4262aada9222eaf63f63307b4
-
- Sep 15, 2014
-
-
Stephen Smalley authored
Enable labeling apps differently depending on whether they are running for the primary user / owner or for a secondary user. Change-Id: I37aa5b183a7a617cce68ccf14510c31dfee4e04d Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
Stephen Smalley authored
dumpstate and lmkd need to act on apps running at any level. Various file types need to be writable by apps running at any level. Change-Id: Idf574d96ba961cc110a48d0a00d30807df6777ba Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
- Sep 13, 2014
-
-
Christopher Ferris authored
On 64 bit systems, it's necessary to read the /system/bin executables elf header to determine if it's a 32 bit or 64 bit executable to contact the correct debuggerd service. Bug: 17487122 (cherry picked from commit 04f3d790) Change-Id: Ib7835ffac1811a5aef54a250689287c1666720ef
-
- Sep 11, 2014
-
-
Robert Sesek authored
Bug: 17471434 Change-Id: I6fd1079be29a454f46ab84f0c43fcf816e679c98
- Sep 08, 2014
-
-
Stephen Smalley authored
When using MLS (i.e. enabling levelFrom= in seapp_contexts), certain domains and types must be exempted from the normal constraints defined in the mls file. Beyond the current set, adbd, logd, mdnsd, netd, and servicemanager need to be able to read/write to any level in order to communicate with apps running with any level, and the logdr and logdw sockets need to be writable by apps running with any level. This change has no impact unless levelFrom= is specified in seapp_contexts, so by itself it is a no-op. Change-Id: I36ed382b04a60a472e245a77055db294d3e708c3 Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
- Sep 04, 2014
-
-
Nick Kralevich authored
If the sdcard daemon is restarted (crash or otherwise), one of the first things it attempts to do is umount the previously mounted /mnt/shell/emulated fuse filesystem, which is denied by SELinux with the following denial: sdcard : type=1400 audit(0.0:6997): avc: denied { unmount } for scontext=u:r:sdcardd:s0 tcontext=u:object_r:fuse:s0 tclass=filesystem permissive=0 Allow the operation. Steps to reproduce: 1) adb shell into the device and su to root 2) run "kill -9 [PID OF SDCARD] Expected: sdcard daemon successfully restarts without error message. Actual: SELinux denial above, plus attempts to mount a new filesystem on top of the existing filesystem. (cherrypicked from commit abfd427a) Bug: 17383009 Change-Id: I386bfc98e2b5b32b1d11408f7cfbd6e3c1af68f4
-
- Sep 02, 2014
-
-
Stephen Smalley authored
Change-Id: Id669fa1850edf2adee230e71bca2278f215e39f4 Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
- Sep 01, 2014
-
-
Mark Salyzyn authored
I/auditd(19949): type=1400 audit(0.0:71): avc: denied { write } for comm="logcat" name="logd" dev="tmpfs" ino=5924 scontext=u:r:untrusted_app:s0 tcontext=u:object_r:logd_socket:s0 tclass=sock_file Bug: 17323719 Change-Id: Id8399195196ffad884eef98030d544c68ed0596f
-
- Aug 29, 2014
-
-
Brian Carlstrom authored
Bug: 16875245 (cherry picked from commit 372d0df7) Change-Id: I38fa14226ab94df2029ca60d3c8898f46c1824c7
-
- Aug 27, 2014
-
-
Nick Kralevich authored
The kernel, when it creates a loop block device, starts a new kernel thread "loop0" (drivers/block/loop.c). This kernel thread, which performs writes on behalf of other processes, needs read/write privileges to the sdcard. Allow it. Steps to reproduce: 0) Get device with external, removable sdcard 1) Run: "adb install -s foo.apk" Expected: APK installs successfully. Actual: APK fails to install. Error message: Vold E Failed to write superblock (I/O error) loop0 W type=1400 audit(0.0:3123): avc: denied { read } for path="/mnt/secure/asec/smdl1645334795.tmp.asec" dev="mmcblk1p1" ino=528 scontext=u:r:kernel:s0 tcontext=u:object_r:vfat:s0 tclass=file permissive=0 PackageHelper E Failed to create secure container smdl1645334795.tmp DefContainer E Failed to create container smdl1645334795.tmp Bug: 17158723 Change-Id: I4aa86e372cc55348f6b8becfa17bd4da583925d4
-
- Aug 25, 2014
-
-
Nick Kralevich authored
Remove the CTS specific rule which allows appdomain processes to view /proc entries for the rest of the system. With this change, an SELinux domain will only be able to view it's own /proc entries, e.g. untrusted_app can only view /proc entries for other untrusted_app, system_app can only view /proc entries for other system_apps, etc. /proc contains sensitive information, and we want to avoid leaking this information between app security domains. Bug: 17254920 Change-Id: I59da37dde00107a5ab123df3b79a84afa855339f
-
Nick Kralevich authored
-
- Aug 22, 2014
-
-
Nick Kralevich authored
Add a neverallow rule (compile time assertion) that no SELinux domain other than init can set default_prop. default_prop is assigned to a property when no more specific label exists for that property. This ensures that all properties are labeled properly, and that no-one (other than init) gets access to unknown properties. Change-Id: If279960f23737e263d4d1b5face7b5c49cda7ae7
-
dcashman authored
-
dcashman authored
Also enable global reading of kernel policy file. Motivation for this is to allow read access to the kernel version of the binary selinux policy. Change-Id: I1eefb457cea1164a8aa9eeb7683b3d99ee56ca99
-
- Aug 21, 2014
-
-
Nick Kralevich authored
Init never uses binder, so allowing binder related operations for init never makes sense. Disallow all binder opertions for init. This change expands on commit a730e50b, disallowing any init binder operation, not just call operations, which may be accidentally added by blindly running audit2allow. Change-Id: I12547a75cf68517d54784873846bdadcb60c5112
-
- Aug 19, 2014
-
-
dcashman authored
Addresses the following denial when debuggerd attempts to stat Webview mmap'd shared relro files on process crash. Full read permissions may not be necessary: W/debuggerd( 185): type=1400 audit(0.0:97): avc: denied { search } for name="shared_relro" dev="mmcblk0p28" ino=618955 scontext=u:r:debuggerd:s0 tcontext=u:object_r:shared_relro_file:s0 tclass=dir Bug: 17101854 Change-Id: I11eea85668ba033c554e5aab99b70a454fb75164
-
- Aug 15, 2014
-
-
Daniel Cashman authored
-
- Aug 06, 2014
-
-
dcashman authored
-
- Aug 07, 2014
-
-
dcashman authored
Before actual installation, apks are put in a staging area where they are scanned by a verifier before completing the install flow. This verifier runs as a priv-app, which is in the untrusted_app domain. Allow untrusted_app read-access to these files. Bug: 16515815 Change-Id: Ifedc12a33b1f53b62f45013e7b253dbc79b02a4e
-
- Aug 06, 2014
-
-
Daniel Cashman authored
-
- Aug 05, 2014
-
-
Alex Light authored
Add patchoat selinux rules. Bug: 15358152 Change-Id: Ibe92d8b55a24bbf718b0416a21b76e5df7a2de26
-
- Aug 01, 2014
-
-
Stephen Smalley authored
The list of processes comes from frameworks/native/cmds/dumpstate/utils.c. dumpstate calls dump_backtrace_to_file() for each such process, which asks debuggerd to dump the backtrace. Resolves denials such as: avc: denied { dump_backtrace } for scontext=u:r:dumpstate:s0 tcontext=u:r:surfaceflinger:s0 tclass=debuggerd avc: denied { dump_backtrace } for scontext=u:r:dumpstate:s0 tcontext=u:r:drmserver:s0 tclass=debuggerd avc: denied { dump_backtrace } for scontext=u:r:dumpstate:s0 tcontext=u:r:mediaserver:s0 tclass=debuggerd avc: denied { dump_backtrace } for scontext=u:r:dumpstate:s0 tcontext=u:r:sdcardd:s0 tclass=debuggerd Change-Id: Idbfb0fef0aac138073b7217b7dbad826a1193098 Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
dcashman authored
-
- Jul 29, 2014
-
-
Stephen Smalley authored
Fix two neverallow rules that yield Invalid SELinux context warnings from the CTS SELinuxTest. For transitions from app domains, we only need to check { domain -appdomain } (i.e. domains other than app domains), not ~appdomain (i.e. all types other than app domains). Otherwise SELinuxTest tries to generate contexts with the r role and non-domain types for testing since the target class is process, and such contexts are invalid. For keeping file_type and fs_type exclusive, we only need to check associate permission, not all filesystem permissions, as only associate takes a file type as the source context. Otherwise SELinuxTest tries to generate contexts with the r role and non-domain types for testing filesystem permissions other than associate, since the source of such checks is normally a process context. Change-Id: I6c2f63f4786d75294a6938613ba14b64212fc802 Signed-off-by:
Stephen Smalley <sds@tycho.nsa.gov>
-
dcashman authored
Bug: 16563899 Bug: 14251916 Change-Id: Id3172b73f10186ba361caf6b7333e5d2a0648475
-