Skip to content
Snippets Groups Projects
  1. Jun 23, 2014
    • Stephen Smalley's avatar
      Align SELinux property policy with init property_perms. · fee49159
      Stephen Smalley authored
      
      Introduce a net_radio_prop type for net. properties that can be
      set by radio or system.
      Introduce a system_radio_prop type for sys. properties that can be
      set by radio or system.
      Introduce a dhcp_prop type for properties that can be set by dhcp or system.
      Drop the rild_prop vs radio_prop distinction; this was an early
      experiment to see if we could separate properties settable by rild
      versus other radio UID processes but it did not pan out.
      
      Remove the ability to set properties from unconfineddomain.
      Allow init to set any property.  Allow recovery to set ctl_default_prop
      to restart adbd.
      
      Change-Id: I5ccafcb31ec4004dfefcec8718907f6b6f3e0dfd
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      fee49159
  2. Jun 19, 2014
    • Stephen Smalley's avatar
      Remove execute_no_trans from unconfineddomain. · f3c3a1aa
      Stephen Smalley authored
      
      execute_no_trans controls whether a domain can execve a program
      without switching to another domain.  Exclude this permission from
      unconfineddomain, add it back to init, init_shell, and recovery for
      files in / and /system, and to kernel for files in / (to permit
      execution of init prior to setcon).  Prohibit it otherwise for the
      kernel domain via neverallow.  This ensures that if a kernel task
      attempts to execute a kernel usermodehelper for which no domain transition
      is defined, the exec will fail.
      
      Change-Id: Ie7b2349923672dd4f5faf7c068a6e5994fd0e4e3
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      f3c3a1aa
    • Stephen Smalley's avatar
      Address recovery denials. · 1095d694
      Stephen Smalley authored
      
      [  265.263738] type=1400 audit(17091747.819:4): avc:  denied  { write } for  pid=132 comm="recovery" name="enable" dev="sysfs" ino=14405 scontext=u:r:recovery:s0 tcontext=u:object_r:sysfs:s0 tclass=file
      [  265.293154] type=1400 audit(17091747.849:5): avc:  denied  { execute } for  pid=177 comm="recovery" name="recovery" dev="rootfs" ino=6376 scontext=u:r:recovery:s0 tcontext=u:object_r:rootfs:s0 tclass=file
      [  265.299479] type=1400 audit(17091747.859:6): avc:  denied  { setgid } for  pid=177 comm="recovery" capability=6  scontext=u:r:recovery:s0 tcontext=u:r:recovery:s0 tclass=capability
      [  265.299511] type=1400 audit(17091747.859:7): avc:  denied  { read write } for  pid=178 comm="recovery" name="android_adb" dev="tmpfs" ino=6739 scontext=u:r:recovery:s0 tcontext=u:object_r:adb_device:s0 tclass=chr_file
      [  265.299531] type=1400 audit(17091747.859:8): avc:  denied  { open } for  pid=178 comm="recovery" name="android_adb" dev="tmpfs" ino=6739 scontext=u:r:recovery:s0 tcontext=u:object_r:adb_device:s0 tclass=chr_file
      [  265.299863] type=1400 audit(17091747.859:9): avc:  denied  { setuid } for  pid=177 comm="recovery" capability=7  scontext=u:r:recovery:s0 tcontext=u:r:recovery:s0 tclass=capability
      
      Change-Id: I024d5a797b86b9766f10bbb2a6a6462cafc9c26a
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      1095d694
  3. Jun 16, 2014
    • Stephen Smalley's avatar
      Restrict use of context= mount options. · 75e2ef92
      Stephen Smalley authored
      
      Prior to this change, the init and recovery domains were
      allowed unrestricted use of context= mount options to force
      all files within a given filesystem to be treated as having a
      security context specified at mount time.  The context= mount
      option can be used in device-specific fstab.<board> files
      to assign a context to filesystems that do not support labeling
      such as vfat where the default label of sdcard_external is not
      appropriate (e.g. /firmware on hammerhead).
      
      Restrict the use of context= mount options to types marked with the
      contextmount_type attribute, and then remove write access from
      such types from unconfineddomain and prohibit write access to such
      types via neverallow.  This ensures that the no write to /system
      restriction cannot be bypassed via context= mount.
      
      Change-Id: I4e773fadc9e11328d13a0acec164124ad6e840c1
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      75e2ef92
  4. Jun 15, 2014
    • Nick Kralevich's avatar
      recovery: Allow exec_type on dirs, read for /dev · ff409bb4
      Nick Kralevich authored
      When applying a file based OTA, the recovery scripts sometimes
      transiently label a directory as an exec_type. This occurs on
      hammerhead when the OTA generation scripts generate lines of the
      form:
      
        set_metadata_recursive("/system/vendor/bin", "uid", 0, "gid", 2000, "dmode", 0755, "fmode", 0755, "capabilities", 0x0, "selabel", "u:object_r:vss_exec:s0");
        set_metadata("/system/vendor/bin", "uid", 0, "gid", 2000, "mode", 0755, "capabilities", 0x0, "selabel", "u:object_r:system_file:s0");
      
      which has the effect of transiently labeling the /system/vendor/bin
      directory as vss_exec.
      
      Allow this behavior for now, even though it's obviously a bug.
      
      Also, allow recovery to read through the /dev directory.
      
      Addresses the following denials:
        avc:  denied  { read } for  pid=143 comm="recovery" name="/" dev="tmpfs" ino=8252 scontext=u:r:recovery:s0 tcontext=u:object_r:device:s0 tclass=dir
        avc:  denied  { open } for  pid=143 comm="recovery" name="/" dev="tmpfs" ino=8252 scontext=u:r:recovery:s0 tcontext=u:object_r:device:s0 tclass=dir
        avc:  denied  { relabelto } for  pid=142 comm="update_binary" name="bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
        avc:  denied  { getattr } for  pid=142 comm="update_binary" path="/system/vendor/bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
        avc:  denied  { setattr } for  pid=142 comm="update_binary" name="bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
        avc:  denied  { relabelfrom } for  pid=142 comm="update_binary" name="bin" dev="mmcblk0p25" ino=1438 scontext=u:r:recovery:s0 tcontext=u:object_r:vss_exec:s0 tclass=dir
      
      Bug: 15575013
      Change-Id: I743bea356382d3c23c136465dc5b434878370127
      ff409bb4
  5. Jun 10, 2014
    • Nick Kralevich's avatar
      recovery: don't use single quote · f4e69028
      Nick Kralevich authored
      single quotes make the m4 parser think it's at the end of
      a block, and generates the following compile time warning:
      
        external/sepolicy/recovery.te:9:WARNING 'unrecognized character' at token ''' on line 7720:
      
      Change-Id: I2502f16f0d9ec7528ec0fc2ee65ad65635d0101b
      f4e69028
  6. Jun 07, 2014
    • Nick Kralevich's avatar
      Refine recovery domain. · 8b7ca455
      Nick Kralevich authored
      Addresses the following denials:
      
          avc:  denied  { read write } for  pid=132 comm="recovery" name="tty0" dev="tmpfs" ino=5730 scontext=u:r:recovery:s0 tcontext=u:object_r:tty_device:s0 tclass=chr_file
          avc:  denied  { open } for  pid=132 comm="recovery" name="tty0" dev="tmpfs" ino=5730 scontext=u:r:recovery:s0 tcontext=u:object_r:tty_device:s0 tclass=chr_file
          avc:  denied  { ioctl } for  pid=132 comm="recovery" path="/dev/tty0" dev="tmpfs" ino=5730 scontext=u:r:recovery:s0 tcontext=u:object_r:tty_device:s0 tclass=chr_file
          avc:  denied  { sys_tty_config } for  pid=132 comm="recovery" capability=26  scontext=u:r:recovery:s0 tcontext=u:r:recovery:s0 tclass=capability
          avc:  denied  { setfcap } for  pid=142 comm="update_binary" capability=31  scontext=u:r:recovery:s0 tcontext=u:r:recovery:s0 tclass=capability
      
      Change-Id: I5219303fbd5afe8f74919db153af6525c0b54154
      8b7ca455
  7. Jun 05, 2014
    • Nick Kralevich's avatar
      refine recovery domain. · a03d761f
      Nick Kralevich authored
      Make sure we have all necessary rules to modify system_file and
      exec_type.
      
      Allow writing to /proc/sys/vm/drop_caches and other proc
      files.
      
      Addresses denials like:
      
        avc:  denied  { getattr } for  pid=152 comm="update_binary" path="/system/bin/debuggerd" dev="mmcblk0p21" ino=88 scontext=u:r:recovery:s0 tcontext=u:object_r:debuggerd_exec:s0 tclass=file
        avc:  denied  { read } for  pid=152 comm="update_binary" name="debuggerd" dev="mmcblk0p21" ino=88 scontext=u:r:recovery:s0 tcontext=u:object_r:debuggerd_exec:s0 tclass=file
        avc:  denied  { open } for  pid=152 comm="update_binary" name="debuggerd" dev="mmcblk0p21" ino=88 scontext=u:r:recovery:s0 tcontext=u:object_r:debuggerd_exec:s0 tclass=file
        avc:  denied  { remove_name } for  pid=152 comm="update_binary" name="framework.jar" dev="mmcblk0p21" ino=1600 scontext=u:r:recovery:s0 tcontext=u:object_r:system_file:s0 tclass=dir
        avc:  denied  { add_name } for  pid=152 comm="update_binary" name="Foo.apk.patch" scontext=u:r:recovery:s0 tcontext=u:object_r:system_file:s0 tclass=dir
        avc:  denied  { write } for  pid=152 comm="update_binary" name="drop_caches" dev="proc" ino=8288 scontext=u:r:recovery:s0 tcontext=u:object_r:proc:s0 tclass=file
      
      recovery is still in permissive_or_unconfined(), so no rules are
      being enforced.
      
      Change-Id: I14ca777fe27a2b0fd9a0aefce5ddcc402b1e5a59
      a03d761f
  8. Jun 04, 2014
    • Nick Kralevich's avatar
      More recovery rules · 03dbf07a
      Nick Kralevich authored
      Better refine the rules surrounding the recovery SELinux
      domain, and get rid of dmesg log spam.
      
      Recovery is still in permissive_or_unconfined(), so no expected
      change in behavior.
      
      Change-Id: Ie5a86f8f5d7581547879c476ebcfdb8c0876263c
      03dbf07a
  9. May 31, 2014
    • Nick Kralevich's avatar
      recovery: enable permissive_or_unconfined · 4203981e
      Nick Kralevich authored
      Switch from using unconfined_domain() to permissive_or_unconfined().
      For user builds, or builds with FORCE_PERMISSIVE_TO_UNCONFINED=true,
      this is a no-op. For userdebug / eng builds, this will allow us to
      collect denials from /proc/last_kmsg.
      
      Change-Id: I41e1a206b2a3b0eee34539bfebfc5deee9e18a42
      4203981e
  10. May 30, 2014
  11. May 29, 2014
    • Stephen Smalley's avatar
      Clean up kernel, init, and recovery domains. · eb1bbf26
      Stephen Smalley authored
      
      Narrow the relabelto rules to a more specific type set
      for each domain.
      
      Drop mount permissions from the kernel domain since mounting
      occurs after switching to the init domain.  This was likely
      a residual of when all processes were left in the kernel domain
      on a recovery boot due to the missing setcon statement in the
      recovery init.rc.
      
      Be consistent with unlabeled filesystems (i.e. filesystems
      without any matching fs_use or genfs_contexts entry) so
      that we can also unmount them.
      
      Add comments to note the reason for various rules.
      
      Change-Id: I269a1744ed7bf8c6be899494c5dc97847e5a994d
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      eb1bbf26
    • Nick Kralevich's avatar
      Remove /system write from unconfined · 03ce5120
      Nick Kralevich authored
      Don't allow writes to /system from unconfined domains.
      /system is always mounted read-only, and no process should
      ever need to write there.
      
      Allow recovery to write to /system. This is needed to apply OTA
      images.
      
      Change-Id: I11aa8bd0c3b7f53ebe83806a0547ab8d5f25f3c9
      03ce5120
  12. May 23, 2014
    • Stephen Smalley's avatar
      Restrict requesting contexts other than policy-defined defaults. · 356f4be6
      Stephen Smalley authored
      
      Writing to the /proc/self/attr files (encapsulated by the libselinux
      set*con functions) enables a program to request a specific security
      context for various operations instead of the policy-defined defaults.
      The security context specified using these calls is checked by an
      operation-specific permission, e.g. dyntransition for setcon,
      transition for setexeccon, create for setfscreatecon or
      setsockcreatecon, but the ability to request a context at all
      is controlled by a process permission.  Omit these permissions from
      domain.te and only add them back where required so that only specific
      domains can even request a context other than the default defined by
      the policy.
      
      Change-Id: I6a2fb1279318625a80f3ea8e3f0932bdbe6df676
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      356f4be6
  13. May 14, 2014
    • Stephen Smalley's avatar
      Drop unused rules for raw I/O and mknod. · c2c91bba
      Stephen Smalley authored
      
      We added these rules to the recovery domain when we removed them
      from unconfined to ensure that we did not break anything. But we
      have seen no uses of these rules by the recovery domain.  Tested
      wiping userdata and cache from the recovery and performing an
      adb sideload of an ota zip file.
      
      Change-Id: I261cb1124130f73e98b87f3e5a31d6d7f521ff11
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      c2c91bba
  14. May 09, 2014
  15. Feb 12, 2014
  16. Feb 11, 2014
  17. Jan 30, 2014
    • Stephen Smalley's avatar
      Remove MAC capabilities from unconfined domains. · 04ee5dfb
      Stephen Smalley authored
      
      Linux defines two capabilities for Mandatory Access Control (MAC)
      security modules, CAP_MAC_OVERRIDE (override MAC access restrictions)
      and CAP_MAC_ADMIN (allow MAC configuration or state changes).
      SELinux predates these capabilities and did not originally use them,
      but later made use of CAP_MAC_ADMIN as a way to control the ability
      to set security context values unknown to the currently loaded
      SELinux policy on files.  That facility is used in Linux for e.g.
      livecd creation where a file security context that is being set
      on a generated filesystem is not known to the build host policy.
      Internally, files with such labels are treated as having the unlabeled
      security context for permission checking purposes until/unless the
      context is later defined through a policy reload.
      
      CAP_MAC_OVERRIDE is never checked by SELinux, so it never needs
      to be allowed.  CAP_MAC_ADMIN is only checked if setting an
      unknown security context value; the only legitimate use I can see
      in Android is the recovery console, where a context may need to be set
      on /system that is not defined in the recovery policy.
      
      Remove these capabilities from unconfined domains, allow
      mac_admin for the recovery domain, and add neverallow rules.
      
      Change-Id: Ief673e12bc3caf695f3fb67cabe63e68f5f58150
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      04ee5dfb
  18. Jan 13, 2014
Loading