Skip to content
Snippets Groups Projects
  1. Feb 23, 2016
  2. Jan 26, 2016
  3. Jan 04, 2016
    • Felipe Leme's avatar
      Creates a new permission for /cache/recovery · 549ccf77
      Felipe Leme authored
      This permission was created mostly for dumpstate (so it can include
      recovery files on bugreports when an OTA fails), but it was applied to
      uncrypt and recovery as well (since it had a wider access before).
      
      Grant access to cache_recovery_file where we previously granted access
      to cache_file. Add auditallow rules to determine if this is really
      needed.
      
      BUG: 25351711
      Change-Id: I07745181dbb4f0bde75694ea31b3ab79a4682f18
      549ccf77
  4. Nov 03, 2015
    • Jeff Vander Stoep's avatar
      Create attribute for moving perms out of domain · d22987b4
      Jeff Vander Stoep authored
      Motivation: Domain is overly permissive. Start removing permissions
      from domain and assign them to the domain_deprecated attribute.
      Domain_deprecated and domain can initially be assigned to all
      domains. The goal is to not assign domain_deprecated to new domains
      and to start removing domain_deprecated where it is not required or
      reassigning the appropriate permissions to the inheriting domain
      when necessary.
      
      Bug: 25433265
      Change-Id: I8b11cb137df7bdd382629c98d916a73fe276413c
      d22987b4
  5. Aug 25, 2015
    • Stephen Smalley's avatar
      Only allow toolbox exec where /system exec was already allowed. · a3c97a76
      Stephen Smalley authored
      
      When the toolbox domain was introduced, we allowed all domains to exec it
      to avoid breakage.  However, only domains that were previously allowed the
      ability to exec /system files would have been able to do this prior to the
      introduction of the toolbox domain.  Remove the rule from domain.te and add
      rules to all domains that are already allowed execute_no_trans to system_file.
      Requires coordination with device-specific policy changes with the same Change-Id.
      
      Change-Id: Ie46209f0412f9914857dc3d7c6b0917b7031aae5
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      a3c97a76
  6. Jun 10, 2015
  7. May 15, 2015
    • Jeff Sharkey's avatar
      drop_caches label, vold scratch space on expanded. · c960596c
      Jeff Sharkey authored
      Define an explicit label for /proc/sys/vm/drop_caches and grant to
      the various people who need it, including vold which uses it when
      performing storage benchmarks.
      
      Also let vold create new directories under it's private storage area
      where the benchmarks will be carried out.  Mirror the definition of
      the private storage area on expanded media.
      
      avc: denied { write } for name="drop_caches" dev="proc" ino=20524 scontext=u:r:vold:s0 tcontext=u:object_r:proc:s0 tclass=file permissive=0
      
      Bug: 21172095
      Change-Id: I300b1cdbd235ff60e64064d3ba6e5ea783baf23f
      c960596c
  8. May 07, 2015
    • William Roberts's avatar
      Replace unix_socket_connect() and explicit property sets with macro · 2f5a6a96
      William Roberts authored
      
      A common source of mistakes when authoring sepolicy is properly
      setting up property sets. This is a 3 part step of:
      1. Allowing the unix domain connection to the init/property service
      2. Allowing write on the property_socket file
      3. Allowing the set on class property_service
      
      The macro unix_socket_connect() handled 1 and 2, but could be
      confusing for first time policy authors. 3 had to be explicitly
      added.
      
      To correct this, we introduce a new macros:
      set_prop(sourcedomain, targetprop)
      
      This macro handles steps 1, 2 and 3.
      
      No difference in sediff is expected.
      
      (cherrypicked from commit 625a3526)
      
      Change-Id: I630ba0178439c935d08062892990d43a3cc1239e
      Signed-off-by: default avatarWilliam Roberts <william.c.roberts@linux.intel.com>
      2f5a6a96
    • William Roberts's avatar
      Replace unix_socket_connect() and explicit property sets with macro · 625a3526
      William Roberts authored
      
      A common source of mistakes when authoring sepolicy is properly
      setting up property sets. This is a 3 part step of:
      1. Allowing the unix domain connection to the init/property service
      2. Allowing write on the property_socket file
      3. Allowing the set on class property_service
      
      The macro unix_socket_connect() handled 1 and 2, but could be
      confusing for first time policy authors. 3 had to be explicitly
      added.
      
      To correct this, we introduce a new macros:
      set_prop(sourcedomain, targetprop)
      
      This macro handles steps 1, 2 and 3.
      
      No difference in sediff is expected.
      
      Change-Id: I630ba0178439c935d08062892990d43a3cc1239e
      Signed-off-by: default avatarWilliam Roberts <william.c.roberts@linux.intel.com>
      625a3526
  9. Mar 05, 2015
  10. Dec 09, 2014
  11. Nov 05, 2014
    • Nick Kralevich's avatar
      recovery.te: add /data neverallow rules · a17a266e
      Nick Kralevich authored
      Recovery should never be accessing files from /data.
      In particular, /data may be encrypted, and the files within
      /data will be inaccessible to recovery, because recovery doesn't
      know the decryption key.
      
      Enforce write/execute restrictions on recovery. We can't tighten
      it up further because domain.te contains some /data read-only
      access rules, which shouldn't apply to recovery but do.
      
      Create neverallow_macros, used for storing permission macros
      useful for neverallow rules. Standardize recovery.te and
      property_data_file on the new macros.
      
      Change-Id: I02346ab924fe2fdb2edc7659cb68c4f8dffa1e88
      a17a266e
  12. Oct 23, 2014
    • Nick Kralevich's avatar
      recovery: allow changing unlabeled symbolic links · 5fad3d98
      Nick Kralevich authored
      Currently, recovery is allowed write access to the following three
      file labels:
      
      * system_file (directories, files, and symbolic links)
      * exec_type (directories, files, and symbolic links)
      * unlabeled (directory and files)
      
      system_file is the default label on all files in /system. exec_type
      is the attribute used to mark executables on /system.
      
      The third file type, "unlabeled", refers to filesystem objects where
      the label hasn't been set, or a label is set but isn't defined by the
      currently loaded policy.
      
      The current policy only allows unlabeled files or directories to
      be modified. Symbolic links were accidentally excluded. This causes
      problems when trying to fix up labels/permissions on unlabeled
      symbolic links.
      
      Allow unlabeled symbolic link modifications.
      
      (cherrypicked from commit 683ac49d)
      
      Bug: 18079773
      Change-Id: I8e5c33602cdc38ec9a95b4e83f9ccbb06fe9da7c
      5fad3d98
    • Nick Kralevich's avatar
      recovery: allow changing unlabeled symbolic links · 683ac49d
      Nick Kralevich authored
      Currently, recovery is allowed write access to the following three
      file labels:
      
      * system_file (directories, files, and symbolic links)
      * exec_type (directories, files, and symbolic links)
      * unlabeled (directory and files)
      
      system_file is the default label on all files in /system. exec_type
      is the attribute used to mark executables on /system.
      
      The third file type, "unlabeled", refers to filesystem objects where
      the label hasn't been set, or a label is set but isn't defined by the
      currently loaded policy.
      
      The current policy only allows unlabeled files or directories to
      be modified. Symbolic links were accidentally excluded. This causes
      problems when trying to fix up labels/permissions on unlabeled
      symbolic links.
      
      Allow unlabeled symbolic link modifications.
      
      Bug: 18079773
      Change-Id: I8e5c33602cdc38ec9a95b4e83f9ccbb06fe9da7c
      683ac49d
  13. Jul 15, 2014
  14. Jul 10, 2014
  15. Jul 08, 2014
    • Stephen Smalley's avatar
      Rename sdcard_internal/external types. · 374b2a19
      Stephen Smalley authored
      
      Rename sdcard_internal/external types to fuse and vfat
      respectively to make it clear that they are assigned to any
      fuse or vfat filesystem by default (absent a context= mount option)
      and do not necessarily represent the SDcard.
      
      The sdcard_type attribute is still assigned to both types and
      can still be used in allow rules to permit access to either the
      internal or external SDcard.
      
      Define type aliases for the old names to preserve compatibility
      on policy reload and for device-specific policies that may not yet
      be updated.
      
      Change-Id: I8d91a8c4c1342b94e4f1bb62ca7ffd2ca4b06ba1
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      374b2a19
    • Nick Kralevich's avatar
      recovery: allow read access to fuse filesystem · e9d97b74
      Nick Kralevich authored
      adb sideload depends on the ability to access the fuse
      directory. Flipping recovery into enforcing started triggering
      the following denial:
      
        type=1400 audit(17964905.699:7): avc:  denied  { search } for  pid=132 comm="recovery" name="/" dev="fuse" ino=1 scontext=u:r:recovery:s0 tcontext=u:object_r:sdcard_internal:s0 tclass=dir
      
      Change-Id: I27ee0295fa2e2d0449bfab4f95bfbc076e92cf59
      e9d97b74
  16. Jul 07, 2014
    • Nick Kralevich's avatar
      recovery: start enforcing SELinux rules · c2ba5ed9
      Nick Kralevich authored
      Start enforcing SELinux rules for recovery. I've been monitoring
      denials, and I haven't seen anything which would indicate a problem.
      We can always roll this back if something goes wrong.
      
      Change-Id: I7d3a147f8b9000bf8181d2aa32520f15f291a6f3
      c2ba5ed9
    • Nick Kralevich's avatar
      recovery: allow relabelto unlabeled and other unlabeled rules · 558710cd
      Nick Kralevich authored
      The recovery script may ask to label a file with a label not
      known to the currently loaded policy. Allow it.
      
      Addresses the following denials:
      
        avc:  denied  { relabelto } for  pid=143 comm="update_binary" name="vdc" dev="mmcblk0p25" ino=212 scontext=u:r:recovery:s0 tcontext=u:object_r:unlabeled:s0 tclass=file
        avc:  denied  { setattr } for  pid=143 comm="update_binary" name="vdc" dev="mmcblk0p25" ino=212 scontext=u:r:recovery:s0 tcontext=u:object_r:unlabeled:s0 tclass=file
      
      Change-Id: Iafcc7b0b3aaea5a272adb1264233978365648f94
      558710cd
  17. Jul 02, 2014
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. May 30, 2014
  28. 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
  29. 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
  30. 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
Loading