Skip to content
Snippets Groups Projects
  1. Nov 01, 2018
    • Nick Kralevich's avatar
      tun_device: enforce ioctl restrictions · 619c1ef2
      Nick Kralevich authored
      Require all SELinux domains which have permission to perform ioctls on
      /dev/tun explicitly specify what ioctls they perform. Only allow the
      safe defaults FIOCLEX and FIONCLEX, which are alternate, uncommon ways
      to set and unset the O_CLOEXEC flag.
      
      Remove app's ability to issue *any* ioctls on /dev/tun, period. Add
      neverallow assertions (compile time assertion + CTS test) to prevent
      regressions.
      
      Limit system_server's ability to perform ioctls on /dev/tun to FIOCLEX,
      FIONCLEX, TUNGETIFF, and TUNSETIFF. Testing and source code examination
      shows that only TUNGETIFF and TUNSETIFF are used by system_server.
      
      The goal of this change is to put SELinux ioctl controls in place for
      /dev/tun, so we don't have to maintain the custom kernel patch at
      https://android.googlesource.com/kernel/common/+/11cee2be0c2062ba88f04eb51196506f870a3b5d%5E%21
      
      Delete the neverallow assertion in isolated_app.te. This is already
      covered by the assertion present in app_neverallows.te.
      
      Test: cts-tradefed run cts -m CtsHostsideNetworkTests -t com.android.cts.net.HostsideVpnTests
      Test: cts-tradefed run cts -m CtsHostsideNetworkTests
      Test: cts-tradefed run cts -m CtsNetTestCases
      Bug: 111560739
      Bug: 111560570
      Change-Id: Ibe1c3a9e880db0bee438535554abdbc6d84eec45
      619c1ef2
  2. Oct 31, 2018
    • Nick Kralevich's avatar
      isolated_app: add mmaps · 00252207
      Nick Kralevich authored
      Kernel commit 3ba4bf5f1e2c ("selinux: add a map permission check for mmap")
      added a map permission check on mmap so that we can
      distinguish memory mapped access (since it has different implications
      for revocation). system/sepolicy commit
      4397f082 introduced the permission to
      Android and updated common macros. Since then, we've been adding more
      mmap support where it was accidentally omitted.
      
      Add the ability for isolated_apps to mmap() app data files. There's no
      reason why this should be blocked. Also fixup sdcard access which has
      similar problems.
      
      Bug: 118760652
      Bug: https://crbug.com/892014
      Test: policy compiles.
      Change-Id: I3823f313103c9dcedf3b21d081a22f8fbb271c02
      00252207
  3. Oct 26, 2018
    • Tri Vo's avatar
      same_process_hal_file: access to individual coredomains · 90cf5a7f
      Tri Vo authored
      Remove blanket coredomain access to same_process_hal_file in favor of
      granular access. This change takes into account audits from go/sedenials
      (our internal dogfood program)
      
      Bug: 37211678
      Test: m selinux_policy
      Change-Id: I5634fb65c72d13007e40c131a600585a05b8c4b5
      90cf5a7f
  4. Oct 13, 2018
    • Tri Vo's avatar
      Audit access to same_process_hal_file. · 81ade3dd
      Tri Vo authored
      same_process_hal_file is exempted from many Treble neverallows. We want
      to know which processes access this type to eventually constrain access
      to it.
      
      Bug: 37211678
      Test: m selinux_policy
      Change-Id: I61c0df21250eb1b1ae2d9c5fa9c801a828539813
      81ade3dd
  5. Oct 03, 2018
    • Nick Kralevich's avatar
      isolated_apps: no socket create · 8f08456a
      Nick Kralevich authored
      Isolated apps provide a very strict security guarantee, including the
      inability to create networking sockets like TCP / UDP sockets. Add an
      SELinux neverallow assertion to test for this and prevent regressions.
      
      Test: policy compiles.
      Change-Id: I2618abb17375707eb1048e89faa46f57d33e1df4
      8f08456a
  6. Aug 02, 2018
    • Nick Kralevich's avatar
      Start partitioning off privapp_data_file from app_data_file · 23c9d91b
      Nick Kralevich authored
      Currently, both untrusted apps and priv-apps use the SELinux file label
      "app_data_file" for files in their /data/data directory. This is
      problematic, as we really want different rules for such files. For
      example, we may want to allow untrusted apps to load executable code
      from priv-app directories, but disallow untrusted apps from loading
      executable code from their own home directories.
      
      This change adds a new file type "privapp_data_file". For compatibility,
      we adjust the policy to support access privapp_data_files almost
      everywhere we were previously granting access to app_data_files
      (adbd and run-as being exceptions). Additional future tightening is
      possible here by removing some of these newly added rules.
      
      This label will start getting used in a followup change to
      system/sepolicy/private/seapp_contexts, similar to:
      
        -user=_app isPrivApp=true domain=priv_app type=app_data_file levelFrom=user
        +user=_app isPrivApp=true domain=priv_app type=privapp_data_file levelFrom=user
      
      For now, this newly introduced label has no usage, so this change
      is essentially a no-op.
      
      Test: Factory reset and boot - no problems on fresh install.
      Test: Upgrade to new version and test. No compatibility problems on
            filesystem upgrade.
      
      Change-Id: I9618b7d91d1c2bcb5837cdabc949f0cf741a2837
      23c9d91b
  7. Feb 23, 2018
    • Robert Sesek's avatar
      Remove rules for starting the webview_zygote as a child of init. · 869562e9
      Robert Sesek authored
      The webview_zygote is now launched as a child-zygote process from the
      main zygote process.
      
      Bug: 63749735
      Test: m
      Test: Launch "Third-party licenses" activity from Settings, and it
            renders correctly via the WebView.
      Merged-In: I9c948b58a969d35d5a5add4b6ab62b8f990645d1
      Change-Id: I153476642cf14883b0dfea0d9f5b3b5e30ac1c08
      869562e9
  8. Feb 16, 2018
    • Robert Sesek's avatar
      Remove rules for starting the webview_zygote as a child of init. · ca4c4e57
      Robert Sesek authored
      The webview_zygote is now launched as a child-zygote process from the
      main zygote process.
      
      Bug: 63749735
      Test: m
      Test: Launch "Third-party licenses" activity from Settings, and it
            renders correctly via the WebView.
      Change-Id: I9c948b58a969d35d5a5add4b6ab62b8f990645d1
      ca4c4e57
  9. Jan 10, 2018
    • Primiano Tucci's avatar
      Perfetto SELinux policies · c80f9e03
      Primiano Tucci authored
      Perfetto is a performance instrumentation and logging framework,
      living in AOSP's /external/pefetto.
      Perfetto introduces in the system one binary and two daemons
      (the binary can specialize in either depending on the cmdline).
      
      1) traced: unprivileged daemon. This is architecturally similar to logd.
         It exposes two UNIX sockets:
         - /dev/socket/traced_producer : world-accessible, allows to stream
           tracing data. A tmpfs file descriptor is sent via SCM_RIGHTS
           from traced to each client process, which needs to be able to
           mmap it R/W (but not X)
         - /dev/socket/traced_consumer : privilege-accessible (only from:
           shell, statsd). It allows to configure tracing and read the trace
           buffer.
      2) traced_probes: privileged daemon. This needs to:
         - access tracingfs (/d/tracing) to turn tracing on and off.
         - exec atrace
         - connect to traced_producer to stream data to traced.
      
      init.rc file:
      https://android-review.googlesource.com/c/platform/external/perfetto/+/575382/14/perfetto.rc
      
      Bug: 70942310
      Change-Id: Ia3b5fdacbd5a8e6e23b82f1d6fabfa07e4abc405
      c80f9e03
  10. Oct 10, 2017
    • Nick Kralevich's avatar
      Ensure /sys restrictions for isolated_apps · 62d3b4f1
      Nick Kralevich authored
      isolated_apps are intended to be strictly limited in the /sys files
      which can be read. Add a neverallow assertion to guarantee this on all
      Android compatible devices.
      
      Test: policy compiles.
      Change-Id: I2980291dcf4e74bb12c81199d61c5eb8a182036c
      62d3b4f1
  11. Oct 07, 2017
    • Nick Kralevich's avatar
      Revert "Ensure /sys restrictions for isolated_apps" · ae48ecbd
      Nick Kralevich authored
      Bullhead and dragon are broken. Revert until I can fix
      those builds.
      
      Dragon:
      
      libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26264 of policy.conf) violated by allow isolated_app sysfs_socinfo:file { ioctl read lock open }; 
      
      Bullhead:
      
      libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26283 of policy.conf) violated by allow isolated_app sysfs_power_management:file { ioctl read lock open }; 
      libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26283 of policy.conf) violated by allow isolated_app sysfs_socinfo:file { ioctl read lock open }; 
      libsepol.report_failure: neverallow on line 113 of system/sepolicy/private/isolated_app.te (or line 26283 of policy.conf) violated by allow isolated_app sysfs_thermal:file { ioctl read lock open }; 
      libsepol.check_assertions: 3 neverallow failures occurred 
      
      
      This reverts commit 579366a0.
      
      Change-Id: I1ea4824e226c06628769898299f2e322060d0d06
      Test: policy compiles.
      ae48ecbd
  12. Oct 05, 2017
    • Nick Kralevich's avatar
      Ensure /sys restrictions for isolated_apps · 579366a0
      Nick Kralevich authored
      isolated_apps are intended to be strictly limited in the /sys files
      which can be read. Add a neverallow assertion to guarantee this on all
      Android compatible devices.
      
      Test: policy compiles.
      Change-Id: I47aceefa3f43a7ea9e526f6f0ef377d0b4efbe3a
      579366a0
  13. Oct 04, 2017
    • Nick Kralevich's avatar
      Drop isolated_app auditallow rule. · 69ec0f8f
      Nick Kralevich authored
      This functionality is being used, apparently.
      
      Addresses the following auditallow spam:
      
        type=1400 audit(0.0:1039): avc: granted { write } for
        comm="Chrome_ProcessL"
        path="/storage/emulated/0/Android/data/com.bleacherreport.android.teamstream/cache/.com.google.Chrome.sk5n91"
        dev="sdcardfs" ino=1877565 scontext=u:r:isolated_app:s0:c512,c768
        tcontext=u:object_r:sdcardfs:s0 tclass=file
      
      Test: policy compiles.
      Bug: 32896414
      Change-Id: I627e20c38115f1d579e78ca12abfa717d32a155a
      69ec0f8f
  14. Sep 26, 2017
  15. Jul 12, 2017
    • Jeff Vander Stoep's avatar
      suppress logspam · fc283871
      Jeff Vander Stoep authored
      avc: denied { search } for name="tmp" dev="sda13" ino=1867778
      scontext=u:r:isolated_app:s0:c512,c768
      tcontext=u:object_r:shell_data_file:s0 tclass=dir
      
      avc: denied { getattr } for path="/mnt/expand" dev="tmpfs" ino=9850
      scontext=u:r:webview_zygote:s0 tcontext=u:object_r:mnt_expand_file:s0
      tclass=dir
      
      Bug: 63631799
      Test: build. Denial no longer appears in the logs
      Change-Id: Ie8a297c73b0f0e9008a7bf24438ef5354bf893df
      fc283871
  16. Apr 22, 2017
    • Alex Klyubin's avatar
      Tighten isolated_app -> *Binder policy · fa57d415
      Alex Klyubin authored
      * isolated_app is no longer permitted to access /dev/hwbinder -- this
        was granted by mistake.
      * There are now neverallows which enforce that isolated_app can't
        access HwBinder and VendorBinder.
      * There are now neverallows which enforce that isolated_app can't add
        Binder and VendorBinder services to servicemanager and
        vndservicemanager.
      
      Test: mmm system/sepolicy
      Bug: 34454312
      Change-Id: I8ba90a0dcb6a9fccd8f50c78cbd2409381376f7a
      fa57d415
  17. Mar 24, 2017
    • Alex Klyubin's avatar
      Vendor domains must not use Binder · f5446eb1
      Alex Klyubin authored
      On PRODUCT_FULL_TREBLE devices, non-vendor domains (except vendor
      apps) are not permitted to use Binder. This commit thus:
      * groups non-vendor domains using the new "coredomain" attribute,
      * adds neverallow rules restricting Binder use to coredomain and
        appdomain only, and
      * temporarily exempts the domains which are currently violating this
        rule from this restriction. These domains are grouped using the new
        "binder_in_vendor_violators" attribute. The attribute is needed
        because the types corresponding to violators are not exposed to the
        public policy where the neverallow rules are.
      
      Test: mmm system/sepolicy
      Test: Device boots, no new denials
      Test: In Chrome, navigate to ip6.me, play a YouTube video
      Test: YouTube: play a video
      Test: Netflix: play a movie
      Test: Google Camera: take a photo, take an HDR+ photo, record video with
            sound, record slow motion video with sound. Confirm videos play
            back fine and with sound.
      Bug: 35870313
      Change-Id: I0cd1a80b60bcbde358ce0f7a47b90f4435a45c95
      f5446eb1
  18. Feb 06, 2017
    • 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
  19. Jan 06, 2017
    • Alex Klyubin's avatar
      Move isolated_app policy to private · a3903974
      Alex Klyubin authored
      This leaves only the existence of isolated_app 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 from isolated_app_current
            attribute (as expected).
      Bug: 31364497
      
      Change-Id: I499a648e515628932b7bcd188ecbfbe4a247f2f3
      a3903974
  20. Dec 08, 2016
    • dcashman's avatar
      Restore app_domain macro and move to private use. · 3e8dbf01
      dcashman authored
      app_domain was split up in commit: 2e00e637 to
      enable compilation by hiding type_transition rules from public policy.  These
      rules need to be hidden from public policy because they describe how objects are
      labeled, of which non-platform should be unaware.  Instead of cutting apart the
      app_domain macro, which non-platform policy may rely on for implementing new app
      types, move all app_domain calls to private policy.
      
      (cherry-pick of commit: 76035ea0)
      
      Bug: 33428593
      Test: bullhead and sailfish both boot. sediff shows no policy change.
      Change-Id: I4beead8ccc9b6e13c6348da98bb575756f539665
      3e8dbf01
    • dcashman's avatar
      Restore app_domain macro and move to private use. · 76035ea0
      dcashman authored
      app_domain was split up in commit: 2e00e637 to
      enable compilation by hiding type_transition rules from public policy.  These
      rules need to be hidden from public policy because they describe how objects are
      labeled, of which non-platform should be unaware.  Instead of cutting apart the
      app_domain macro, which non-platform policy may rely on for implementing new app
      types, move all app_domain calls to private policy.
      
      Bug: 33428593
      Test: bullhead and sailfish both boot. sediff shows no policy change.
      Change-Id: I4beead8ccc9b6e13c6348da98bb575756f539665
      76035ea0
  21. Dec 06, 2016
    • dcashman's avatar
      sepolicy: add version_policy tool and version non-platform policy. · 2e00e637
      dcashman authored
      In order to support platform changes without simultaneous updates from
      non-platform components, the platform and non-platform policies must be
      split.  In order to provide a guarantee that policy written for
      non-platform objects continues to provide the same access, all types
      exposed to non-platform policy are versioned by converting them and the
      policy using them into attributes.
      
      This change performs that split, the subsequent versioning and also
      generates a mapping file to glue the different policy components
      together.
      
      Test: Device boots and runs.
      Bug: 31369363
      Change-Id: Ibfd3eb077bd9b8e2ff3b2e6a0ca87e44d78b1317
      2e00e637
Loading