Skip to content
Snippets Groups Projects
  1. Mar 31, 2015
    • Jeff Sharkey's avatar
      Separate fsck domains to protect userdata. · 5a5b364c
      Jeff Sharkey authored
      Create new vold_fsck domain that only has access to vold_block
      devices to prevent any access to internal userdata.
      
      Change-Id: I25ddcd16cbf83d7a25b70bc64d95f5345d0d5731
      5a5b364c
    • Sami Tolvanen's avatar
      Fix block_suspend denial for slideshow · 5895ffe1
      Sami Tolvanen authored
      Add wakelock_use to slideshow.te to fix the following denial:
      
      avc:  denied  { block_suspend } for  pid=137 comm="slideshow" capability=36  scontext=u:r:slideshow:s0 tcontext=u:r:slideshow:s0 tclass=capability2 permissive=0
      
      Change-Id: If84f167cd235e8196eadf3fb85cc725a5ea464e6
      5895ffe1
    • Jeff Sharkey's avatar
      Fix small copy/paste bug in recent shell rule. · 983e2afe
      Jeff Sharkey authored
      Change-Id: Ia279dfd11cc093e066bff66d7397dfe9e906aba8
      983e2afe
    • Jeff Sharkey's avatar
      Shell needs to read /storage/self/primary symlink. · 1c597f0c
      Jeff Sharkey authored
      avc: denied { read } for name="primary" dev="tmpfs" ino=3134 scontext=u:r:shell:s0 tcontext=u:object_r:storage_file:s0 tclass=lnk_file
      
      Change-Id: Id0ed2297a89054199fc73f27b18f717ae19c6778
      1c597f0c
    • Jeff Sharkey's avatar
      Updated policy for external storage. · f063f461
      Jeff Sharkey authored
      An upcoming platform release is redesigning how external storage
      works.  At a high level, vold is taking on a more active role in
      managing devices that dynamically appear.
      
      This change also creates further restricted domains for tools doing
      low-level access of external storage devices, including sgdisk
      and blkid.  It also extends sdcardd to be launchable by vold, since
      launching by init will eventually go away.
      
      For compatibility, rules required to keep AOSP builds working are
      marked with "TODO" to eventually remove.
      
      Slightly relax system_server external storage rules to allow calls
      like statfs().  Still neverallow open file descriptors, since they
      can cause kernel to kill us.
      
      Here are the relevant violations that this CL is designed to allow:
      
      avc: denied { search } for name="user" dev="tmpfs" ino=7441 scontext=u:r:zygote:s0 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { getattr } for path="/mnt/user/0" dev="tmpfs" ino=6659 scontext=u:r:zygote:s0 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { write } for name="user" dev="tmpfs" ino=6658 scontext=u:r:zygote:s0 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { add_name } for name="10" scontext=u:r:zygote:s0 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { create } for name="10" scontext=u:r:zygote:s0 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { setattr } for name="10" dev="tmpfs" ino=11348 scontext=u:r:zygote:s0 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { search } for name="/" dev="tmpfs" ino=3131 scontext=u:r:zygote:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { getattr } for path="/storage" dev="tmpfs" ino=6661 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { getattr } for path="/storage/self" dev="tmpfs" ino=6659 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { getattr } for path="/storage" dev="tmpfs" ino=6661 scontext=u:r:untrusted_app:s0:c522,c768 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { getattr } for path="/storage/self" dev="tmpfs" ino=11348 scontext=u:r:untrusted_app:s0:c522,c768 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { getattr } for path="/storage" dev="tmpfs" ino=6661 scontext=u:r:vold:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { read } for name="/" dev="tmpfs" ino=6661 scontext=u:r:vold:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { open } for name="/" dev="tmpfs" ino=6661 scontext=u:r:vold:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { search } for name="/" dev="tmpfs" ino=6661 scontext=u:r:vold:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { write } for name="data" dev="tmpfs" ino=11979 scontext=u:r:vold:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { add_name } for name="com.google.android.music" scontext=u:r:vold:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { create } for name="com.google.android.music" scontext=u:r:vold:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { use } for path="socket:[8297]" dev="sockfs" ino=8297 scontext=u:r:sdcardd:s0 tcontext=u:r:vold:s0 tclass=fd
      avc: denied { read write } for path="socket:[8297]" dev="sockfs" ino=8297 scontext=u:r:sdcardd:s0 tcontext=u:r:vold:s0 tclass=netlink_kobject_uevent_socket
      avc: denied { read } for path="pipe:[8298]" dev="pipefs" ino=8298 scontext=u:r:sdcardd:s0 tcontext=u:r:vold:s0 tclass=fifo_file
      avc: denied { write } for path="pipe:[8298]" dev="pipefs" ino=8298 scontext=u:r:sdcardd:s0 tcontext=u:r:vold:s0 tclass=fifo_file
      avc: denied { mounton } for path="/storage/emulated" dev="tmpfs" ino=8913 scontext=u:r:sdcardd:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { getattr } for path="/storage" dev="tmpfs" ino=7444 scontext=u:r:system_server:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { getattr } for path="/storage/self/primary" dev="tmpfs" ino=7447 scontext=u:r:system_server:s0 tcontext=u:object_r:storage_file:s0 tclass=lnk_file
      avc: denied { read } for name="primary" dev="tmpfs" ino=7447 scontext=u:r:system_server:s0 tcontext=u:object_r:storage_file:s0 tclass=lnk_file
      avc: denied { getattr } for path="/mnt/user" dev="tmpfs" ino=7441 scontext=u:r:system_server:s0 tcontext=u:object_r:mnt_user_file:s0 tclass=dir
      avc: denied { read } for name="disk:179,128" dev="tmpfs" ino=3224 scontext=u:r:sgdisk:s0 tcontext=u:object_r:vold_device:s0 tclass=blk_file
      avc: denied { open } for path="/dev/block/vold/disk:179,128" dev="tmpfs" ino=3224 scontext=u:r:sgdisk:s0 tcontext=u:object_r:vold_device:s0 tclass=blk_file
      avc: denied { getattr } for path="/dev/block/vold/disk:179,128" dev="tmpfs" ino=3224 scontext=u:r:sgdisk:s0 tcontext=u:object_r:vold_device:s0 tclass=blk_file
      avc: denied { read } for name="/" dev="fuse" ino=0 scontext=u:r:vold:s0 tcontext=u:object_r:fuse:s0 tclass=dir
      avc: denied { open } for path="/storage/public:81F3-13EC" dev="fuse" ino=0 scontext=u:r:vold:s0 tcontext=u:object_r:fuse:s0 tclass=dir
      avc: denied { write } for name="data" dev="fuse" ino=2 scontext=u:r:vold:s0 tcontext=u:object_r:fuse:s0 tclass=dir
      avc: denied { add_name } for name="com.google.android.googlequicksearchbox" scontext=u:r:vold:s0 tcontext=u:object_r:fuse:s0 tclass=dir
      avc: denied { create } for name="com.google.android.googlequicksearchbox" scontext=u:r:vold:s0 tcontext=u:object_r:fuse:s0 tclass=dir
      avc: denied { getattr } for path="/dev/block/vold/public:179,129" dev="tmpfs" ino=16953 scontext=u:r:blkid:s0 tcontext=u:object_r:vold_device:s0 tclass=blk_file
      avc: denied { read } for name="public:179,129" dev="tmpfs" ino=16953 scontext=u:r:blkid:s0 tcontext=u:object_r:vold_device:s0 tclass=blk_file
      avc: denied { open } for path="/dev/block/vold/public:179,129" dev="tmpfs" ino=16953 scontext=u:r:blkid:s0 tcontext=u:object_r:vold_device:s0 tclass=blk_file
      avc: denied { ioctl } for path="/dev/block/vold/public:179,129" dev="tmpfs" ino=16953 scontext=u:r:blkid:s0 tcontext=u:object_r:vold_device:s0 tclass=blk_file
      avc: denied { use } for path="pipe:[3264]" dev="pipefs" ino=3264 scontext=u:r:sgdisk:s0 tcontext=u:r:vold:s0 tclass=fd
      avc: denied { use } for path="pipe:[3264]" dev="pipefs" ino=3264 scontext=u:r:sgdisk:s0 tcontext=u:r:vold:s0 tclass=fd
      avc: denied { search } for name="block" dev="tmpfs" ino=2494 scontext=u:r:sgdisk:s0 tcontext=u:object_r:block_device:s0 tclass=dir
      avc: denied { use } for path="pipe:[4200]" dev="pipefs" ino=4200 scontext=u:r:sdcardd:s0 tcontext=u:r:vold:s0 tclass=fd
      avc: denied { use } for path="pipe:[4200]" dev="pipefs" ino=4200 scontext=u:r:sdcardd:s0 tcontext=u:r:vold:s0 tclass=fd
      avc: denied { search } for name="/" dev="tmpfs" ino=3131 scontext=u:r:sdcardd:s0 tcontext=u:object_r:storage_file:s0 tclass=dir
      avc: denied { search } for name="media_rw" dev="tmpfs" ino=3127 scontext=u:r:sdcardd:s0 tcontext=u:object_r:mnt_media_rw_file:s0 tclass=dir
      avc: denied { getattr } for path="pipe:[3648]" dev="pipefs" ino=3648 scontext=u:r:blkid:s0 tcontext=u:r:vold:s0 tclass=fifo_file
      avc: denied { use } for path="/dev/pts/12" dev="devpts" ino=15 scontext=u:r:fsck:s0 tcontext=u:r:vold:s0 tclass=fd
      avc: denied { use } for path="/dev/pts/12" dev="devpts" ino=15 scontext=u:r:fsck:s0 tcontext=u:r:vold:s0 tclass=fd
      avc: denied { use } for path="pipe:[4182]" dev="pipefs" ino=4182 scontext=u:r:fsck:s0 tcontext=u:r:vold:s0 tclass=fd
      
      Change-Id: Idf3b8561baecf7faa603fac5ababdcc5708288e1
      f063f461
  2. Mar 30, 2015
  3. Mar 28, 2015
    • Nick Kralevich's avatar
      kernel: allow usbfs:dir search · 883fcfcf
      Nick Kralevich authored
      The deprecated/deleted usbfs kernel driver gets really unhappy when
      SELinux denies it access to directories. On flo (3.4.0 kernel), this
      comes across as an SELinux denial followed by a kernel panic.
      
      Steps to reproduce:
      
        1. plug in a USB device.
        2. notice nothing happens.
        3. unplug the USB device
        4. plug it in again, watch for restart.
      
      Expected:
        USB device works
      
      Actual:
        [329180.030242] Host mode: Set DC level as 0x68 for flo.
        [329180.030395] msm_hsusb_host msm_hsusb_host: Qualcomm On-Chip EHCI Host Controller
        [329180.030639] Unable to create devices usbfs file
        [329180.030944] type=1400 audit(1425327845.292:12): avc: denied { search } for pid=24033 comm="kworker/0:1" name="/" dev="usbfs" ino=291099 scontext=u:r:kernel:s0 tcontext=u:object_r:usbfs:s0 tclass=dir
        [329180.060394] msm_hsusb_host msm_hsusb_host: new USB bus registered, assigned bus number 1
        [329180.091583] msm_hsusb_host msm_hsusb_host: irq 132, io mem 0x12500000
        [deleted]
        [329180.120178] hub 1-0:1.0: USB hub found
        [329180.120452] hub 1-0:1.0: 1 port detected
        [329180.123199] Unable to handle kernel NULL pointer dereference at virtual address 00000070
        [329180.123443] pgd = c0004000
        [329180.123809] [00000070] *pgd=00000000
        [329180.124206] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
        [329180.124481] CPU: 0    Tainted: G        W     (3.4.0-g2e8a935 #1)
        [329180.124908] PC is at mutex_lock+0xc/0x48
        [329180.125122] LR is at fs_create_file+0x4c/0x128
        [329180.125518] pc : [<c0916708>]    lr : [<c0440ec4>]    psr: a0000013
        [deleted]
        [329180.281005] [<c0916708>] (mutex_lock+0xc/0x48) from [<c0440ec4>] (fs_create_file+0x4c/0x128)
        [329180.281280] [<c0440ec4>] (fs_create_file+0x4c/0x128) from [<c04410c8>] (usbfs_notify+0x84/0x2a8)
        [329180.281738] [<c04410c8>] (usbfs_notify+0x84/0x2a8) from [<c009c3b8>] (notifier_call_chain+0x38/0x68)
        [329180.282257] [<c009c3b8>] (notifier_call_chain+0x38/0x68) from [<c009c600>] (__blocking_notifier_call_chain+0x44/0x58)
        [329180.282745] [<c009c600>] (__blocking_notifier_call_chain+0x44/0x58) from [<c009c628>] (blocking_notifier_call_chain+0x14/0x18)
        [329180.283264] [<c009c628>] (blocking_notifier_call_chain+0x14/0x18) from [<c043ef8c>] (generic_probe+0x74/0x84)
        [329180.283752] [<c043ef8c>] (generic_probe+0x74/0x84) from [<c04387c4>] (usb_probe_device+0x58/0x68)
        [329180.284240] [<c04387c4>] (usb_probe_device+0x58/0x68) from [<c03adc78>] (driver_probe_device+0x148/0x360)
        [329180.284576] [<c03adc78>] (driver_probe_device+0x148/0x360) from [<c03ac76c>] (bus_for_each_drv+0x4c/0x84)
        [329180.285034] [<c03ac76c>] (bus_for_each_drv+0x4c/0x84) from [<c03adfc8>] (device_attach+0x74/0xa0)
        [329180.285522] [<c03adfc8>] (device_attach+0x74/0xa0) from [<c03ac94c>] (bus_probe_device+0x28/0x98)
        [329180.286041] [<c03ac94c>] (bus_probe_device+0x28/0x98) from [<c03ab014>] (device_add+0x444/0x5e4)
        [329180.286529] [<c03ab014>] (device_add+0x444/0x5e4) from [<c042f180>] (usb_new_device+0x248/0x2e4)
        [329180.286804] [<c042f180>] (usb_new_device+0x248/0x2e4) from [<c043472c>] (usb_add_hcd+0x420/0x64c)
        [329180.287292] [<c043472c>] (usb_add_hcd+0x420/0x64c) from [<c044600c>] (msm_otg_sm_work+0xe74/0x1774)
        [329180.287811] [<c044600c>] (msm_otg_sm_work+0xe74/0x1774) from [<c0091d8c>] (process_one_work+0x280/0x488)
        [329180.288299] [<c0091d8c>] (process_one_work+0x280/0x488) from [<c00921a8>] (worker_thread+0x214/0x3b4)
        [329180.288787] [<c00921a8>] (worker_thread+0x214/0x3b4) from [<c0096b14>] (kthread+0x84/0x90)
        [329180.289276] [<c0096b14>] (kthread+0x84/0x90) from [<c000f3c8>] (kernel_thread_exit+0x0/0x8)
      
      Allow the usbfs operation.
      
      Bug: 19568950
      Change-Id: Iffdc7bd93ebde8bb75c57a324b996e1775a0fd1e
      883fcfcf
  4. Mar 27, 2015
    • Paul Lawrence's avatar
      Adding e4crypt support · 38af1da1
      Paul Lawrence authored
      Add selinux rules to allow file level encryption to work
      
      Change-Id: I1e4bba23e99cf5b2624a7df843688fba6f3c3209
      38af1da1
    • John Reck's avatar
      Add graphicsstats service · e8064afb
      John Reck authored
      Change-Id: I156b139b57f46c695ece35b7b26a3087d87b25df
      e8064afb
    • Nick Kralevich's avatar
      Don't grant hard link capabilities by default. · 85ce2c70
      Nick Kralevich authored
      Modify create_file_perms and create_dir_perms so it doesn't have
      the "link" permission. This permission controls whether hard links
      are allowed or not on the given file label. Hard links are a common
      source of security bugs, and isn't something we want to support by
      default.
      
      Get rid of link_file_perms and move the necessary permissions into
      create_file_perms and create_dir_perms. Nobody is using this macro,
      so it's pointless to keep it around.
      
      Get rid of unlink on directories. It returns EISDIR if you attempt to
      do it, independent of SELinux permissions.
      
      SELinux domains which have a need for hard linking for a particular
      file type can add it back to their permission set on an as-needed basis.
      
      Add a compile time assertion (neverallow rule) for untrusted_app.
      It's particularly dangerous for untrusted_app to ever have hard
      link capabilities, and the neverallow rule will prevent regressions.
      
      Bug: 19953790
      Change-Id: I5e9493d2bf5da460d074f0bc5ad8ba7c14dec6e0
      85ce2c70
  5. Mar 26, 2015
  6. Mar 25, 2015
  7. Mar 24, 2015
  8. Mar 20, 2015
    • Nick Kralevich's avatar
      Don't run fsck on certain block devices · e491020f
      Nick Kralevich authored
      Make sure we're not running fsck on block devices where it
      doesn't make any sense. In particular, we should not be running
      fsck on /system since it's mounted read-only, and any modification
      to that block device will screw up verified boot.
      
      Change-Id: Ic8dd4b0519b423bb5ceb814daeebef06a8f065b4
      e491020f
  9. Mar 19, 2015
  10. Mar 18, 2015
  11. Mar 17, 2015
  12. Mar 16, 2015
    • dcashman's avatar
      Fix sepolicy-analyze libc++.so loading issue w/CTS. · 3812cf58
      dcashman authored
      Addresses the following error when running CTS on master:
      junit.framework.AssertionFailedError: The following errors were encountered when validating the SELinuxneverallow rule:
      neverallow { appdomain -bluetooth } self:capability *;
      /tmp/SELinuxHostTest5593810182495331783.tmp: error while loading shared libraries: libc++.so: cannot open shared object file: No such file or directory
      
      Also indicate that none of the sepolicy tools need c++ std lib.
      
      Bug: 19617220
      
      Change-Id: I713b3cbd1220655413d399c7cd2b0b50459a5485
      3812cf58
    • Stephen Smalley's avatar
      Allow shell to read /proc/pid/attr/current for ps -Z. · d5892b4c
      Stephen Smalley authored
      
      Needed since Iff1e601e1268d4d77f64788d733789a2d2cd18cc removed it
      from appdomain.
      
      Change-Id: I9fc08b525b9868f0fb703b99b0c0c17ca8b656f9
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      d5892b4c
    • Stephen Smalley's avatar
      Remove ability to read all /proc/pid/attr/current entries. · 2cba1ee1
      Stephen Smalley authored
      
      This was rendered obsolete when SELinuxDomainTest was ported
      to SELinuxHostTest and only makes sense if allowing search
      to domain:dir and { open read } to domain:file in order to
      open the /proc/pid/attr/current files in the first place.
      SELinux applies a further :process getattr check when
      reading any of the /proc/pid/attr/* files for any process
      other than self, which is no longer needed by app domains to
      pass CTS.
      
      Change-Id: Iff1e601e1268d4d77f64788d733789a2d2cd18cc
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      2cba1ee1
  13. Mar 14, 2015
  14. Mar 13, 2015
    • Stephen Smalley's avatar
      sepolicy: Clean up mls constraints. · 025b7df2
      Stephen Smalley authored
      
      Require equivalence for all write operations.  We were already
      doing this for app_data_file as a result of restricting open
      rather than read/write, so this makes the model consistent across
      all objects and operations.  It also addresses the scenario where
      we have mixed usage of levelFrom=all and levelFrom=user for
      different apps on the same device where the dominated-by (domby)
      relation may not be sufficiently restrictive.
      
      Drop the System V IPC constraints since System V IPC is never allowed
      by TE and thus these constraints are dead policy.
      
      Change-Id: Ic06a35030c086e3978c02d501c380889af8d21e0
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      025b7df2
    • Stephen Smalley's avatar
      neverallow untrusted_app as a mlstrustedsubject. · eaece936
      Stephen Smalley authored
      
      Assigning mlstrustedsubject to untrusted_app would undermine
      the per-user isolation model being enforced via levelFrom=user
      in seapp_contexts and the mls constraints.  There is no direct
      way to specify a neverallow on attribute assignment, but this
      makes use of a particular property of the fork permission to
      prevent ever adding mlstrustedsubject to untrusted_app.
      
      A similar restriction for app_data_file and mlstrustedobject
      is also important for the same reason, but cannot be expressed
      as a neverallow.
      
      Change-Id: I5170cadc55cc614aef0cd5f6491de8f69a4fa2a0
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      eaece936
    • Stephen Smalley's avatar
      Move allow rules before neverallow rules. · b8caf7fd
      Stephen Smalley authored
      
      There were a few instances where allow rules were appended
      after the neverallow rules stanza in the .te file.  Also
      there were some regular allow rules inserted into the CTS-specific
      rules section of app.te.  Just move the rules as appropriate.
      Should be no change in policy.
      
      Change-Id: Iec76f32d4b531d245bbf5dd9f621a71ff5c71f3e
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      b8caf7fd
    • Stephen Smalley's avatar
      sepolicy-analyze: Add attribute command. · 0233cd80
      Stephen Smalley authored
      
      Add an attribute command to sepolicy-analyze for displaying the list
      of types associated with an attribute in a policy.  This is for use
      by CTS to check what domains and types are associated with certain
      attributes such as mlstrustedsubject and mlstrustedobject.
      
      Change-Id: Ie19361c02feb1ad14ce36862c6aace9e66c422bb
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      0233cd80
Loading