Skip to content
Snippets Groups Projects
  1. Feb 15, 2017
    • Nick Kralevich's avatar
      system_server: replace sys_resource with sys_ptrace · 44866954
      Nick Kralevich authored
      Commit https://android.googlesource.com/kernel/common/+/f0ce0eee added
      CAP_SYS_RESOURCE as a capability check which would allow access to
      sensitive /proc/PID files. However, in an SELinux based world, allowing
      this access causes CAP_SYS_RESOURCE to duplicate what CAP_SYS_PTRACE
      (without :process ptrace) already provides.
      
      Use CAP_SYS_PTRACE instead of CAP_SYS_RESOURCE.
      
      Add a neverallow rule to prevent system_server from using this
      capability to ptrace attach to any other process. This limits the
      capability of system_server to only reading sensitive /proc files, but
      not ptrace() access.
      
      Test: Device boots, functionality remains identical, no sys_resource
      denials from system_server.
      Bug: 34951864
      Change-Id: I04d745b436ad75ee1ebecf0a61c6891858022e34
      44866954
  2. Feb 14, 2017
    • Jeff Vander Stoep's avatar
      untrusted_app: policy versioning based on targetSdkVersion · bacb6d79
      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
      bacb6d79
    • Michael Peck's avatar
      Add minTargetSdkVersion input selector to seapp_contexts · f54b3622
      Michael Peck authored
      This new input selector allows phasing in new security policies by
      giving app developers an opportunity to make any needed compatibility
      changes before updating each app's targetSdkVersion.
      
      When all else is equal, matching entries with higher
      minTargetSdkVersion= values are preferred over entries with lower
      minTargetSdkVersion= values.
      
      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
      Change-Id: I14bf4f51dbe26cb9bd3f62ad0b281085441d9806
      f54b3622
  3. Feb 13, 2017
    • Steven Moreland's avatar
      Move hals to vendor partition. · aa11b6a9
      Steven Moreland authored
      Bug: 34135607
      Test: hals work
      
      Merged-In: I6a1f87438bb5b540fce900e9ec5df07d3f4f6bd4
      Change-Id: I6a1f87438bb5b540fce900e9ec5df07d3f4f6bd4
      aa11b6a9
    • Steven Moreland's avatar
      Move hals to vendor partition. · 079f2dd1
      Steven Moreland authored
      Bug: 34135607
      Test: hals work
      Change-Id: I6a1f87438bb5b540fce900e9ec5df07d3f4f6bd4
      079f2dd1
    • Paul Lawrence's avatar
      Remove selinux denial · e9cb7638
      Paul Lawrence authored
      Don't audit directory writes to sysfs since they cannot succees
      and therefore cannot be a security issue
      
      Bug: 35303861
      Test: Make sure denial is no longer shown
      Change-Id: I1f31d35aa01e28e3eb7371b1a75fc4090ea40464
      e9cb7638
  4. Feb 12, 2017
    • Nick Kralevich's avatar
      tracefs: avoid overly generic regexes · 4cae28d4
      Nick Kralevich authored
      On boot, Android runs restorecon on a number of virtual directories,
      such as /sys and /sys/kernel/debug, to ensure that the SELinux labels
      are correct. To avoid causing excessive boot time delays, the restorecon
      code aggressively prunes directories, to avoid recursing down directory
      trees which will never have a matching SELinux label.
      
      See:
      * https://android-review.googlesource.com/93401
      * https://android-review.googlesource.com/109103
      
      The key to this optimization is avoiding unnecessarily broad regular
      expressions in file_contexts. If an overly broad regex exists, the tree
      pruning code is ineffective, and the restorecon ends up visiting lots of
      unnecessary directories.
      
      The directory /sys/kernel/debug/tracing contains approximately 4500
      files normally, and on debuggable builds, this number can jump to over
      9000 files when the processing from wifi-events.rc occurs. For
      comparison, the entire /sys/kernel/debug tree (excluding
      /sys/kernel/debug/tracing) only contains approximately 8000 files. The
      regular expression "/sys/kernel(/debug)?/tracing/(.*)?" ends up matching
      a significant number of files, which impacts boot performance.
      
      Instead of using an overly broad regex, refine the regex so only the
      files needed have an entry in file_contexts. This list of files is
      essentially a duplicate of the entries in
      frameworks/native/cmds/atrace/atrace.rc .
      
      This change reduces the restorecon_recursive call for /sys/kernel/debug
      from approximately 260ms to 40ms, a boot time reduction of approximately
      220ms.
      
      Bug: 35248779
      Test: device boots, no SELinux denials, faster boot.
      Change-Id: I70f8af102762ec0180546b05fcf014c097135f3e
      4cae28d4
  5. Feb 11, 2017
    • Nick Kralevich's avatar
      Don't try to relabel tracing directory · 6ebcfe47
      Nick Kralevich authored
      Use the default filesystem label from genfs_contexts for the directory
      /sys/kernel/debug/tracing and /sys/kernel/tracing, instead of explicitly
      attempting to relabel it.
      
      There are three cases we need to consider:
      
      1) Old-style tracing functionality is on debugfs
      2) tracing functionality is on tracefs, but mounted under debugfs
      3) tracefs is mounted at /sys/kernel/tracing
      
      For #1, the label on /sys/kernel/debug/tracing will be debugfs, and all
      processes are allowed debugfs:dir search, so having the label be debugfs
      instead of debugfs_tracing will not result in any permission change.
      
      For #2, the label on /sys/kernel/debug/tracing will be debugfs_tracing,
      which is the same as it is today. The empty directory
      /sys/kernel/tracing wlll retain the sysfs label, avoiding the denial
      below.
      
      For #3, /sys/kernel/debug/tracing won't exist, and /sys/kernel/tracing
      will have the debugfs_tracing label, where processes are allowed search
      access.
      
      Addresses the following denial:
      
      avc:  denied  { associate } for  pid=1 comm="init" name="tracing"
      dev="sysfs" ino=95 scontext=u:object_r:debugfs_tracing:s0
      tcontext=u:object_r:sysfs:s0 tclass=filesystem permissive=0
      
      Bug: 31856701
      Bug: 35197529
      Test: no denials on boot
      Change-Id: I7233ea92c6987b8edfce9c2f1d77eb25c7df820f
      6ebcfe47
    • Pawin Vongmasa's avatar
      Sepolicy for OMX hal. · 5559d21a
      Pawin Vongmasa authored
      Bug: 31399200
      Test: Compiles
      Change-Id: Ifb347a985df5deb85426a54c435c4a9c0248cb57
      5559d21a
    • Craig Donner's avatar
      Allow untrusted apps to access VrManager. · 9051eaf3
      Craig Donner authored
      There is only a single systemapi at the moment that is callable, and it is
      protected by a signature/preinstalled permission.
      
      (cherry picked from commit I778864afc9d02f8b2bfcf6b92a9f975ee87c4724)
      
      Bug: 35059826,33297721
      Test: manually on a marlin
      Change-Id: I3789ce8238f5a52ead8f466dfa3045fbcef1958e
      9051eaf3
  6. Feb 10, 2017
    • Jeff Vander Stoep's avatar
      surfaceflinger: grant access to vr_manager_service · 8bf3b7a8
      Jeff Vander Stoep authored
      Addresses
      avc:  denied  { find } for service=vrmanager pid=472 uid=1000
      scontext=u:r:surfaceflinger:s0 tcontext=u:object_r:vr_manager_service:s0
      tclass=service_manager
      
      Test: Marlin builds and boots. Denial no longer observed.
      Bug: 35258608
      Bug: 35197529
      Change-Id: I480dff3fdaf01f71e29e96f08350f705c6a23bba
      8bf3b7a8
    • Nick Kralevich's avatar
      Move net.dns* to it's own label. · 4e404290
      Nick Kralevich authored
      Move net.dns* from net_radio_prop to the newly created label
      net_dns_prop. This allows finer grain control over this specific
      property.
      
      Prior to this change, this property was readable to all SELinux domains,
      and writable by the following SELinux domains:
      
        * system_server
        * system_app (apps which run as UID=system)
        * netmgrd
        * radio
      
      This change:
      
      1) Removes read access to this property to everyone EXCEPT untrusted_app
      and system_server.
      2) Limit write access to system_server.
      
      In particular, this change removes read access to priv_apps. Any
      priv_app which ships with the system should not be reading this
      property.
      
      Bug: 34115651
      Test: Device boots, wifi turns on, no problems browsing the internet
      Change-Id: I8a32e98c4f573d634485c4feac91baa35d021d38
      4e404290
  7. Feb 09, 2017
  8. Feb 08, 2017
    • Jeff Tinker's avatar
      Fix selinux denial for binderized drm hal · fbd43f03
      Jeff Tinker authored
      Change-Id: I19d65a83c5c3f42296e8cd8a425bf1f64651068f
      related-to-bug:32815560
      fbd43f03
    • Alex Klyubin's avatar
      Move binderservicedomain policy to private · 84aebd3c
      Alex Klyubin authored
      This leaves only the existence of binderservicedomain attribute as
      public API. All other rules are implementation details of this
      attribute's policy and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with *_current targets
            referenced in binderservicedomain.te.
      Bug: 31364497
      Change-Id: Ic830bcc5ffb6d624e0b3aec831071061cccc513c
      84aebd3c
  9. Feb 07, 2017
    • Alex Klyubin's avatar
      Move blkid policy to private · 83ac242f
      Alex Klyubin authored
      This leaves only the existence of blkid and blkid_untrusted domains as
      public API. All other rules are implementation details of these
      domains' policy and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with blkid_current and
            blkid_untrusted_current (as expected).
      Bug: 31364497
      Change-Id: I0dda2feeb64608b204006eecd8a7c9b9c7bb2b81
      83ac242f
    • Joe Onorato's avatar
      Add incident command and incidentd daemon se policy. · 41f93db9
      Joe Onorato authored
      Test: adb shell incident
      Bug: 31122534
      Change-Id: I4ac9c9ab86867f09b63550707673149fe60f1906
      41f93db9
    • Craig Donner's avatar
      Allow untrusted apps to access VrManager. · eaa6bb7c
      Craig Donner authored
      There is only a single systemapi at the moment that is callable, and it is
      protected by a signature/preinstalled permission.
      
      Bug: 35059826,33297721
      Test: manually on a marlin
      Change-Id: I778864afc9d02f8b2bfcf6b92a9f975ee87c4724
      eaa6bb7c
    • Alex Klyubin's avatar
      Move system_server policy to private · 59322f1a
      Alex Klyubin authored
      This leaves only the existence of system_server domain as public API.
      All other rules are implementation details of this domain's policy
      and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with
            system_server_current except those created by other domains'
            allow rules referencing system_server domain from public and
            vendor policies.
      Bug: 31364497
      
      Change-Id: Ifd76fa83c046b9327883eb6f0bbcd2113f2dd1a4
      59322f1a
    • Alex Klyubin's avatar
      Move atrace policy to private · 357c1617
      Alex Klyubin authored
      atrace and its atrace_exec now exist only in private policy.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with atrace_current
            which is expected now that atrace cannot be referenced from
            public or vendor policy.
      Bug: 31364497
      
      Change-Id: Ib726bcf73073083420c7c065cbd39dcddd7cabe3
      357c1617
    • Alex Klyubin's avatar
      Move audioserver policy to private · 238ce796
      Alex Klyubin authored
      This leaves only the existence of audioserver domain as public API.
      All other rules are implementation details of this domain's policy
      and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with audioserver_current
            except those created by other domains' allow rules referencing
            audioserver domain from public and vendor policies.
      Bug: 31364497
      
      Change-Id: I6662394d8318781de6e3b0c125435b66581363af
      238ce796
    • Alex Klyubin's avatar
      Move surfaceflinger policy to private · 5d30beb1
      Alex Klyubin authored
      This leaves only the existence of surfaceflinger domain as public API.
      All other rules are implementation details of this domain's policy
      and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with
            surfaceflinger_current except those created by other domains'
            allow rules referencing surfaceflinger domain from public and
            vendor policies.
      Bug: 31364497
      
      Change-Id: I177751afad82ec27a5b6d2440cf0672cb5b9dfb8
      5d30beb1
    • Alex Klyubin's avatar
      Move adbd policy to private · 8309f0a2
      Alex Klyubin authored
      This leaves only the existence of adbd domain as public API. All other
      rules are implementation details of this domain's policy and are thus
      now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with adbd_current except
            those created by other domains' allow rules referencing adbd
            domain from public and vendor policies.
      
      Bug: 31364497
      Change-Id: Icdce8b89f67c70c6c4c116471aaa412e55028cd8
      8309f0a2
  10. Feb 06, 2017
    • Todd Poynor's avatar
      Add /data/misc/reboot and reboot_data_file context · ca051f6d
      Todd Poynor authored
      Add a file context for keeping track of last reboot reason and label
      directory /data/misc/reboot/ for this purpose.
      
      Bug: 30994946
      Test: manual: reboot ocmmand, setprop sys.powerctl, SoC thermal mgr
      Change-Id: I9569420626b4029a62448b3f729ecbbeafbc3e66
      ca051f6d
    • Alex Klyubin's avatar
      Move bluetoothdomain policy to private · 661430e0
      Alex Klyubin authored
      This leaves only the existence of bluetoothdomain attribute as public
      API. All other rules are implementation details of this attribute's
      policy and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow bluetoothdomain bluetooth_current
            rule (as expected).
      Bug: 31364497
      
      Change-Id: I0edfc30d98e1cd9fb4f41a2900954d9cdbb4db14
      661430e0
    • Alex Klyubin's avatar
      Move bluetooth policy to private · 801b5ec4
      Alex Klyubin authored
      This leaves only the existence of bluetooth domain as public API.
      All other rules are implementation details of this domain's policy
      and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with bluetooth_current
            except those created by other domains' allow rules referencing
            bluetooth domain from public and vendor policy.
      Bug: 31364497
      
      Change-Id: I3521b74a1a9f6c5a5766b358e944dc5444e3c536
      801b5ec4
    • Alex Klyubin's avatar
      Move mdnsd policy to private · d833f6ba
      Alex Klyubin authored
      This leaves only the existence of mdnsd domain as public API. All
      other rules are implementation details of this domains's policy and
      are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with mdnsd_current (as
            expected).
      Bug: 31364497
      
      Change-Id: Ia4f01d91e7d593401e8cde2d796a0f1023f6dae4
      d833f6ba
    • Alex Klyubin's avatar
      Move netdomain policy to private · 372dc67f
      Alex Klyubin authored
      This leaves only the existence of netdomain attribute as public API.
      All other rules are implementation details of this attribute's policy
      and are thus now private.
      
      Test: No change to policy according to sesearch, except for
            disappearance of all allow rules to do with netdomain_current
            and *_current attributes targeted when netdomain rules reference
            public types.
      Bug: 31364497
      Change-Id: I102e649374681ce1dd9e1e5ccbaaa5cb754e00a0
      372dc67f
    • Chia-I Wu's avatar
      Allow HWC to be binderized · 1b95d88c
      Chia-I Wu authored
      Test: manual
      Bug: 32021609
      Change-Id: I6793794f3b1fb95b8dd9336f75362447de618274
      1b95d88c
    • Stephen Smalley's avatar
      Remove obsolete netlink_firewall_socket and netlink_ip6fw_socket classes. · 4921085d
      Stephen Smalley authored
      
      The implementation for NETLINK_FIREWALL and NETLINK_IP6_FW protocols
      was removed from the kernel in commit
      d16cf20e2f2f13411eece7f7fb72c17d141c4a84 ("netfilter: remove ip_queue
      support") circa Linux 3.5.  Unless we need to retain compatibility
      for kernels < 3.5, we can drop these classes from the policy altogether.
      
      Possibly the neverallow rule in app.te should be augmented to include
      the newer netlink security classes, similar to webview_zygote, but
      that can be a separate change.
      
      Test: policy builds
      
      Change-Id: Iab9389eb59c96772e5fa87c71d0afc86fe99bb6b
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      4921085d
    • Jin Qian's avatar
      storaged: allow register and callback from batteryproperties · 61670b86
      Jin Qian authored
      Test: adb shell dumpsys storaged
      Bug: 33086174
      Bug: 34198239
      Change-Id: I85d6bd05192a205662f69466d7d6208e8b834eff
      61670b86
    • Stephen Smalley's avatar
      Define extended_socket_class policy capability and socket classes · 431bdd9f
      Stephen Smalley authored
      
      Add a definition for the extended_socket_class policy capability used
      to enable the use of separate socket security classes for all network
      address families rather than the generic socket class.  The capability
      also enables the use of separate security classes for ICMP and SCTP
      sockets, which were previously mapped to rawip_socket class.  Add
      definitions for the new socket classes and access vectors enabled by
      this capability.  Add the new socket classes to the socket_class_set
      macro, and exclude them from webview_zygote domain as with other socket
      classes.
      
      Allowing access by specific domains to the new socket security
      classes is left to future commits.  Domains previously allowed
      permissions to the 'socket' class will require permission to the
      more specific socket class when running on kernels with this support.
      
      The kernel support will be included upstream in Linux 4.11.  The
      relevant kernel commits are da69a5306ab92e07224da54aafee8b1dccf024f6
      ("selinux: support distinctions among all network address families"),
      ef37979a2cfa3905adbf0c2a681ce16c0aaea92d ("selinux: handle ICMPv6
      consistently with ICMP"), and b4ba35c75a0671a06b978b6386b54148efddf39f
      ("selinux: drop unused socket security classes").
      
      This change requires selinux userspace commit
      d479baa82d67c9ac56c1a6fa041abfb9168aa4b3 ("libsepol: Define
      extended_socket_class policy capability") in order to build the
      policy with this capability enabled.  This commit is already in
      AOSP master.
      
      Test: policy builds
      
      Change-Id: I788b4be9f0ec0bf2356c0bbef101cd42a1af49bb
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      431bdd9f
    • Stephen Smalley's avatar
      Define the user namespace capability classes and access vectors. · 8a003607
      Stephen Smalley authored
      
      Kernel commit 8e4ff6f228e4722cac74db716e308d1da33d744f
      (selinux: distinguish non-init user namespace capability checks)
      introduced support for distinguishing capability
      checks against a target associated with the init user namespace
      versus capability checks against a target associated with a non-init
      user namespace by defining and using separate security classes for the
      latter.  This support is needed on Linux to support e.g. Chrome usage of
      user namespaces for the Chrome sandbox without needing to allow Chrome to
      also exercise capabilities on targets in the init user namespace.
      
      Define the new security classes and access vectors for the Android policy.
      Refactor the original capability and capability2 access vector definitions
      as common declarations to allow reuse by the new cap_userns and cap2_userns
      classes.
      
      This change does not allow use of the new classes by any domain; that
      is deferred to future changes as needed if/when Android enables user
      namespaces and the Android version of Chrome starts using them.
      
      The kernel support went upstream in Linux 4.7.
      
      Based on the corresponding refpolicy patch by Chris PeBenito, but
      reworked for the Android policy.
      
      Test: policy builds
      
      Change-Id: I71103d39e93ee0e8c24816fca762944d047c2235
      Signed-off-by: default avatarStephen Smalley <sds@tycho.nsa.gov>
      8a003607
    • Chad Brubaker's avatar
      Move neverallows from untrusted_app.te to app_neverallows.te · 46e5a060
      Chad Brubaker authored
      The neverallows in untrusted_app will all apply equally to ephemeral app
      and any other untrusted app domains we may add, so this moves them to a
      dedicated separate file.
      
      This also removes the duplicate rules from isolated_app.te and ensures
      that all the untrusted_app neverallows also apply to isolated_app.
      
      Test: builds
      Change-Id: Ib38e136216ccbe5c94daab732b7ee6acfad25d0b
      46e5a060
    • Chad Brubaker's avatar
      Merge ephemeral data and apk files into app · 4c40d734
      Chad Brubaker authored
      The rules for the two types were the same and /data/app-ephemeral is
      being removed. Remove these types.
      
      Test: Builds
      Change-Id: I520c026395551ad1362dd2ced53c601d9e6f9b28
      4c40d734
  11. Feb 04, 2017
  12. Feb 02, 2017
    • Jiyong Park's avatar
      configstore: add selinux policy for configstore@1.0 hal · ebec1aa2
      Jiyong Park authored
      This change adds selinux policy for configstore@1.0 hal. Currently, only
      surfaceflinger has access to the HAL, but need to be widen.
      
      Bug: 34314793
      Test: build & run
      
      Merged-In: I40e65032e9898ab5f412bfdb7745b43136d8e964
      Change-Id: I40e65032e9898ab5f412bfdb7745b43136d8e964
      (cherry picked from commit 5ff0f178)
      ebec1aa2
  13. Feb 01, 2017
  14. Jan 31, 2017
    • Calin Juravle's avatar
      Remove SElinux audit to libart_file · 01ee59a7
      Calin Juravle authored
      Since it was introduced it caused quite a few issues and it spams the
      SElinux logs unnecessary.
      
      The end goal of the audit was to whitelist the access to the
      interpreter. However that's unfeasible for now given the complexity.
      
      Test: devices boots and everything works as expected
            no more auditallow logs
      
      Bug: 29795519
      Bug: 32871170
      Change-Id: I9a7a65835e1e1d3f81be635bed2a3acf75a264f6
      01ee59a7
    • Mark Salyzyn's avatar
      logd: add getEventTag command and service · 384ce662
      Mark Salyzyn authored
      The event log tag service uses /dev/event-log-tags, pstore and
      /data/misc/logd/event-log-tags as sticky storage for the invented
      log tags.
      
      Test: gTest liblog-unit-tests, logd-unit-tests & logcat-unit-tests
      Bug: 31456426
      Change-Id: Iacc8f36f4a716d4da8dca78a4a54600ad2a288dd
      384ce662
Loading